簡體   English   中英

匯編跳轉指令地址計算

[英]Assembly Jump Instruction Address Calculation

我在gdb中看到以下指令

jmp    *0x804a09c(,%eax,4)

在執行之前,我鍵入以下命令:

(gdb)p/x *0x804a09c
$40 = 0x8048e0e

(gdb) p $eax
$41 = 6

因此,當我嘗試計算要跳轉到的地址時,我得到:

(gdb) p/x *0x804a09c + 4*$eax
0x8048e26

但是,跳轉實際上轉到地址0x8048ead。 我的計算怎么了?

jmp    *0x804a09c(,%eax,4)

表示跳轉到此計算結果存儲的地址0x804a09c(,%eax,4)*整體上不只是0x804a09c AT&T語法可能會產生誤導,而Intel語法在這里更清楚:

jmp    DWORD PTR [eax*4+0x804a09c]

所以應該是:

(gdb) p/x *(0x804a09c + 4 * $eax)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM