2013-10-13 50 views
3

我正在「調試」一段x86代碼 - 前言很好,代碼中的5個數字是「解鎖」它的代碼,它在內存中跳躍很多+數學中的數字它擁有它。x86比較命令目標語法

我追查什麼,我需要輸入的第一個「跳」之前,它是:

cmp %eax,0x80498d4(,%ebx,4) 

據我所知,這個命令是cmp s, d我在哪裏取d-S和設置EFLAGS。但在這種情況下D 0x80498d4(, %ebx,4)是什麼?很明顯,我們正在做一些註冊%ebx,但我不知道是什麼。

回答

4

這就是AT & T memory reference syntax

AT & T的displacement(base register, offset register, scalar multiplier)語法轉換爲英特爾的[base register + displacement + offset register * scalar multiplier]語法(我認爲這更容易理解)。

所以cmp %eax,0x80498d4(,%ebx,4) AT AT & T語法等同於Intel語法中的cmp [80498d4h + ebx*4], eax

該指令以英文爲「比較寄存器EAX的內容與地址0x80498d4 +(EBX * 4)上的內存內容」。