具体地说,有一个compare语句说:
cmp %eax, 0xc(%esp, %esi, 4)然后在它后面加上一个跳转if not equal语句。我想知道0xc(%esp,%esi,4)语句的后半部分指的是什么。
谢谢!
发布于 2015-02-22 02:40:13
在AT&T语法中,内存操作数的格式为
displacement(base register, offset register, scalar multiplier)在英特尔语法中,cmp %eax,0xc(%esp,%esi,4) (顺便说一下,它不应该是cmpl吗?)将被写成cmp [esp + esi * 4 + 12], eax,让它看得见所有部分所扮演的角色。
发布于 2015-02-22 02:41:53
cmp %eax,0xc(%esp,%esi,4)与以下内容相同:
cmp [esp + 12 + 4*esi], eax括号中的公式计算地址。将保存在该地址的值与eax进行比较。
https://stackoverflow.com/questions/28649644
复制相似问题