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