繁体   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