如何解读“jmp dword ptr [rel $ 00005e52]”?

时间:2011-10-04 07:24:11

标签: assembly

我正在尝试在Win64平台中跟踪汇编代码:

当指令执行到:

0000000000402590 FF25525E0000     jmp dword ptr [rel $00005e52]

跳转后,它将转到地址:

00000000006B3F90 56               push rsi

jmp指令如何检索要跳转到的地址? [rel $ 00005e52]是什么意思?

1 个答案:

答案 0 :(得分:5)

这个特殊的jmp(在文档中列为“FF / 4 jmp r / m64”)使用所谓的RIP相对寻址(ModR / M字节= 0x25:mod = 00b,reg / opcode = 100b,r / m = 101b;这意味着在32位模式下为disp32,在64位模式下为RIP + disp32。)

它从0x402590 + 6(此jmp之后的指令的地址)+ 0x5E52(即0x4083E8)读取跳转地址(64位)。 0x4083E8(8字节)的存储器应该等于0x6B3F90。