LIDT的操作数是位移/绝对地址
|
我偶然发现了英特尔软件开发人员手册中的一项声明:
\“对于LGDT,LIDT,LLDT,LTR,SGDT,SIDT,SLDT,STR,退出资格接收指令的位移字段的值,如有必要,将其符号扩展为64位(在不支持的处理器上为32位Intel 64体系结构。如果指令没有位移(例如,具有寄存器操作数),则将零存储到退出条件中。
现在,如果我有LIDT 0xf290指令,那么“ 0xf290”是位移吗?我认为答案是肯定的。
那么,我的困惑是什么全部构成位移?我印象深刻的是,位移是根据当前eip值计算得出的。
例如。 jmp xxx(在段内跳转中,这将是一个位移。但是对于段间跳转,应为绝对地址。)如果是这种情况,那么为什么LIDT加载相对地址?
没有找到相关结果
已邀请:
1 个回复
厢界山攀
或0。另一个可以容纳较大值的操作数x86是立即数,这对于添加常量(例如
)很有用。 顺便说一句,似乎相对跳转使用立即数字段,可能是因为它们通过常数修改了“ 2”。