【发布时间】:2014-03-12 01:29:27
【问题描述】:
我需要了解汇编代码中的add指令:
=> 0x08048bff <+43>: add 0x14(%esp,%ebx,4),%eax
(gdb) i r
eax 0x1 1
ecx 0x0 0
edx 0x0 0
ebx 0x1 1
esp 0xffffcd70 0xffffcd70
ebp 0xffffcdc8 0xffffcdc8
esi 0x0 0
edi 0x0 0
eip 0x8048bff 0x8048bff <phase_2+43>
eflags 0x202 [ IF ]
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x0 0
gs 0x63 99
我认为0x14(%esp,%ebx,4) 的答案是(%ebx*4)+%esp+0x14,但我得到的是0xffffcd82,我不知道寄存器中的地址是什么。有人可以解释一下我应该在%eax 中输入什么值吗?
【问题讨论】:
-
您需要一本描述您的 CPU 指令的手册才能理解这一点。
-
我想正确的问题是假设我的记忆中的数学正确,我在哪里寻找地址 0xffffcd82? GDB 中是否有一条指令可以让您查看内存?我试图找出价值是什么,以找出我所在的行。