[英]Assembly cmp instruction
以下cmp指令使我感到困惑:
%eax中,為0x18(%ESP,%EBX,4)
我知道它正在將arg1與arg2進行比較,但是arg2和括號中的內容到底發生了什么?
謝謝
它根據esp和ebx的值計算內存位置的地址。 您沒有指定使用的匯編符號,所以我只能猜測它是esp + 4 * ebx + 0x18。
這是at&t語法中的有效地址。 一般形式是displacement(base, index, scale)
,其中displacement
是一個數字(地址), base
和index
是寄存器,和scale
是一個因子1
, 2
, 4
或8
。 計算得出的地址為displacement + base + index * scale
。 組件可以省略。
順便說一句,如果您願意,可以將gnu工具切換到intel語法模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.