CALL指令和JUMP指令的Opcode有点不明白
Intel的白皮书里的Integer Instrction Formats and Encodings 对各个指令的Opcode进行了很详细的说明~~但我还有有点不明白,就是在CALL-Call Procedures(in other segment)里
Opcode中的1001 1010: unsigned full offset, selector 这个“unsigned full offset, selector ”的意思不是很明白,有会的人给解释一下嘛? 帮指教一下咯~~~~在下感激不尽~ 16 bit: call 偏移,段基址
32 bit: call 偏移,选择子 谢谢LS,已弄明白~~~ 它的意思是说:
在 opcode 为 1001 1010 情况下(也就是:9A)
call 指令的操作数是 unsigned 的 offset 和 selector
注意,此时它是 unsigned 的,也就是直接的 offset 和 selector,而不是 singed 的
1、有 singed 的 offset 和 selector 值吗? 没有
但是,有 signed 的 offset 值!!
2、什么情况下是 signed 的 offset ?
当 call 的 opcode 等于 E8 (1110 1000)时,它的 offset 是 signed 的
或者:
当 jmp 的 opcode 为 E9(1110 1001)以及 EB (1110 1011)时,它的 offset 是 signed 的
也就是说: 它是依赖于当前 eip 的 偏移量
哦,原来如此,真是太谢谢mik的讲解了~~~~崇拜ing
页:
[1]