gpt4 book ai didi

c - 汇编跳转指令地址计算

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:54 25 4
gpt4 key购买 nike

我在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)

关于c - 汇编跳转指令地址计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com