Некоторые компиляторы предоставляют возможность постоянного назначения регистра переменной. Ключевое слово register, однако, недостаточно. Решение компилятора о выделении локальных переменных для подпрограммы в регистрах, как правило, не требует координации с чем-либо в других исходных модулях (в то время как некоторые системы разработки выполняют оптимизацию регистрации между подпрограммами, гораздо более распространено просто определить соглашение о вызовах, чтобы все подпрограммы разрешено свободно изменять некоторые регистры (таким образом, вызывающая сторона отвечает за сохранение содержимого, если они необходимы после вызова функции), но не должна изменять другие (поэтому вызываемая подпрограмма отвечает за сохранение и восстановление содержимого, если регистры необходимы в функция). Таким образом, компоновщик не должен заботиться об использовании регистра.
Такой подход хорош для локальных переменных регистра, но бесполезен для глобальных. Чтобы глобальные переменные регистра были полезны, программист должен, как правило, сообщать компилятору, какой регистр должен использоваться для какой переменной, и убедиться, что такие резервирования известны компилятору при компиляции всех модулей - даже тех, которые не используют зарегистрируйтесь иначе. Это может быть полезно во встроенных системах, особенно с переменными, которые используются прерываниями, но обычно в системе допускается очень ограниченное количество (например, около 2) таких переменных.