簡體   English   中英

GDB匯編語言指令添加

[英]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.

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