[英]Gdb assembly language instruction 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
賦予什么價值嗎?
是的,您說對了, 0x14(%esp,%ebx,4)
是(%ebx*4)+%esp+0x14
at&t語法。 這樣,地址是0xffffcd88
。 您可以讓gdb使用p/x $ebx*4+$esp+0x14
為您計算。 add
指令將在該地址獲取內存中的4字節整數,並將其添加到%eax
已存在的任何內容中。 您可以使用例如x/d 0xffffcd88
來檢查gdb中的內存內容。
PS:您可以將gdb切換為使用intel語法,使用set disassembly-flavor intel
可以更輕松地閱讀它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.