我正在「調試」一段x86代碼 - 前言很好,代碼中的5個數字是「解鎖」它的代碼,它在內存中跳躍很多+數學中的數字它擁有它。x86比較命令目標語法
我追查什麼,我需要輸入的第一個「跳」之前,它是:
cmp %eax,0x80498d4(,%ebx,4)
據我所知,這個命令是cmp s, d
我在哪裏取d-S和設置EFLAGS。但在這種情況下D 0x80498d4(, %ebx,4)
是什麼?很明顯,我們正在做一些註冊%ebx
,但我不知道是什麼。
我正在「調試」一段x86代碼 - 前言很好,代碼中的5個數字是「解鎖」它的代碼,它在內存中跳躍很多+數學中的數字它擁有它。x86比較命令目標語法
我追查什麼,我需要輸入的第一個「跳」之前,它是:
cmp %eax,0x80498d4(,%ebx,4)
據我所知,這個命令是cmp s, d
我在哪裏取d-S和設置EFLAGS。但在這種情況下D 0x80498d4(, %ebx,4)
是什麼?很明顯,我們正在做一些註冊%ebx
,但我不知道是什麼。
這就是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)上的內存內容」。