2011-10-04 56 views
2

我試圖追查在Win64平臺平臺的彙編代碼:

當指令執行到:

0000000000402590 FF25525E0000  jmp dword ptr [rel $00005e52] 

跳轉後,它會去地址:

00000000006B3F90 56    push rsi 

如何JMP指令檢索要跳轉到的地址? [rel $ 00005e52]的含義是什麼?

回答

5

這個特殊的jmp(在文檔中列爲「FF/4 jmp r/m64」)使用所謂的RIP相對尋址(ModR/M字節= 0x25:mod = 00b,reg/opcode = 100b, R/M = 101B;這意味着在disp32對比32位模式但RIP + disp32對比在64位模式)。

它讀取從0x402590 + 6(以下這個JMP指令的地址)+ 0x5E52跳躍地址(64位),也就是,從0x4083E8。 0x4083E8(8字節)的內存應該等於0x6B3F90。