Значение / содержимое регистра можно использовать при формировании адреса памяти для чтения или записи (иначе как разыменование ), в так называемых режимах адресации .
0(%eax)
и 4(%esp)
иногда называют режимом адресации смещения (или базой + смещение), где адрес, используемый для доступа к памяти, представляет собой сумму значения в %eax
с непосредственным (здесь 0
) и сумма значения в %esp
с немедленным 4
соответственно. Режимы адресации могут уменьшить количество требуемых инструкций, поскольку отдельная инструкция, а также временный регистр для выполнения сложения (здесь, скажем, %esp
и 4
) не нужны. Тип смещения является одним из наиболее распространенных режимов адресации и используется, помимо прочего, для доступа к локальным переменным на основе памяти и полям (переменным экземпляра) объектов.
Регистры предлагают очень ограниченный доступ очень быстрое дополнительное хранение вне памяти. Сами регистры не имеют адресов, таких как ячейки памяти; они не могут быть проиндексированы или адресованы так, как память - они могут быть названы только в инструкциях. Регистр может содержать адрес памяти и использоваться для доступа к памяти (разыменование через режим адресации), но регистры не могут содержать адреса регистров (поскольку такой вещи нет).