eggqq007 发表于 2009-09-01 21:30

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 ”的意思不是很明白,有会的人给解释一下嘛?

eggqq007 发表于 2009-09-02 09:35

帮指教一下咯~~~~在下感激不尽~

vxasm 发表于 2009-09-02 15:10

16 bit: call 偏移,段基址
32 bit: call 偏移,选择子

eggqq007 发表于 2009-09-02 20:04

谢谢LS,已弄明白~~~

mik 发表于 2009-09-03 01:23

它的意思是说:

在 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 的 偏移量
 

eggqq007 发表于 2009-09-05 09:36

哦,原来如此,真是太谢谢mik的讲解了~~~~崇拜ing
页: [1]
查看完整版本: CALL指令和JUMP指令的Opcode有点不明白