x86_64相对jmp操作数

时间:2015-03-15 21:29:03

标签: assembly x86-64

我无法理解操作数FE FC FF FF如何导致 0x9e7080

我尝试了一些数学子/添加到当前地址,因为它应该是相对跳转,但结果仍然不等于 0x9e7080

instruction address | bytes | text form

L_009E737D | E9 FE FC FF FF | jmp 0x9e7080

1 个答案:

答案 0 :(得分:5)

有三件事需要考虑:

  1. FEFCFFFF以小端名表示,表示十六进制值0xFFFFFCFE
  2. 此十六进制值是符号扩展的,因此为负值,小数值为-770
  3. 您还必须添加指令所需的字节数。
  4. 这会导致0x009E737D + 0xFFFFFCFE + 5 = 0x009e7080,等于0x009E737D - 0x00000302 + 5 = 0x009e7080