以下cmp指令令我困惑:
%eax中,为0x18(%ESP,%EBX,4)
我知道它将arg1与arg2进行比较,但是在arg2中究竟发生了什么与括号中的东西?
由于
答案 0 :(得分:0)
它根据esp和ebx的值计算内存位置的地址。你没有指定使用的汇编符号,所以我猜它的esp + 4 * ebx + 0x18。
答案 1 :(得分:0)
这是at& t语法中的有效地址。
一般表单为displacement(base, index, scale)
,其中displacement
是数字(地址),base
和index
是寄存器,scale
是1
的因子},2
,4
或8
。
结果地址计算为displacement + base + index * scale
。组件可以省略。
顺便说一句,如果您愿意,可以将gnu工具切换到intel语法模式。