В разделе 4.3 Intel 64® and IA-32 Architectures Software Developer's Manual. Volume 1: Basic Architecture, он говорит:Как определяется неявный сегментный регистр ближайшего указателя?
Близкий указатель является 32-битное смещение ... в пределах сегмента. Рядом с указателями используются все ссылки на память в модели с плоской памятью или для ссылок в сегментированной модели, где подразумевается идентификация доступного сегмента.
Это заставляет меня задаваться вопросом: как определяется определенный сегментный регистр?
Я знаю, что (%eip)
и перемещенные (%eip)
(например -4(%eip)
) адреса использовать %cs
по умолчанию, и что (%esp)
и перемещенные (%esp)
адрес использует %ss
, но как насчет (%eax)
, (%edx)
, (%edi)
, (%ebp)
и т.д., и может неявный сегментный регистр зависит также от инструкции, в которой находится операнд адреса памяти?
Это отличная информация. Спасибо. –