首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汇编代码语句: cmp %eax,<hexadecimal>(<register>,<register>,4)是什么意思?

汇编代码语句: cmp %eax,<hexadecimal>(<register>,<register>,4)是什么意思?
EN

Stack Overflow用户
提问于 2015-02-22 02:32:49
回答 2查看 669关注 0票数 0

具体地说,有一个compare语句说:

代码语言:javascript
复制
cmp    %eax, 0xc(%esp, %esi, 4)

然后在它后面加上一个跳转if not equal语句。我想知道0xc(%esp,%esi,4)语句的后半部分指的是什么。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-02-22 02:40:13

在AT&T语法中,内存操作数的格式为

代码语言:javascript
复制
displacement(base register, offset register, scalar multiplier)

在英特尔语法中,cmp %eax,0xc(%esp,%esi,4) (顺便说一下,它不应该是cmpl吗?)将被写成cmp [esp + esi * 4 + 12], eax,让它看得见所有部分所扮演的角色。

票数 1
EN

Stack Overflow用户

发布于 2015-02-22 02:41:53

代码语言:javascript
复制
cmp %eax,0xc(%esp,%esi,4)

与以下内容相同:

代码语言:javascript
复制
cmp [esp + 12 + 4*esi], eax

括号中的公式计算地址。将保存在该地址的值与eax进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28649644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档