Я наткнулся на утверждение в руководстве для разработчиков ПО Intel: «Для LGDT, LIDT, LLDT, LTR, SGDT, SIDT, SLDT, STR квалификация выхода получает значение поля смещения инструкции, которое расширяется до64 бита, если необходимо (32 бита на процессорах, которые не поддерживают архитектуру Intel 64). Если инструкция не имеет смещения (например, имеет операнд регистра), в квалификации выхода сохраняется ноль. "
Теперьесли у меня есть инструкция LIDT 0xf290, то является ли "0xf290" смещением?Я думаю, что ответ - да.
Итак, моя путаница в том, что все представляет собой смещение?У меня сложилось впечатление, что смещение - это то, что рассчитывается относительно текущего значения eip.Например,jmp xxx (В межсегментных скачках это будет смещение. Но для межсегментных скачков это должен быть абсолютный адрес.) Если это так, то почему LIDT загружает относительный адрес?