首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LEAL汇编指令是做什么的?

LEAL汇编指令是做什么的?
EN

Stack Overflow用户
提问于 2012-06-27 01:06:29
回答 3查看 58.8K关注 0票数 26

我对两者之间的区别感到有点困惑

代码语言:javascript
运行
复制
leal -4(%ebp), %eax       

代码语言:javascript
运行
复制
movl -4(%ebp), %eax

有人能给我解释一下吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-27 01:36:36

LEA (加载有效地址)只计算操作数的地址,并不实际取消对它的引用。大多数情况下,它只是执行类似于组合乘法和加法的计算,例如,数组索引。

在本例中,它做了一个简单的数字减法:leal -4(%ebp), %eax只是将%ebp - 4的值赋给%eax寄存器。它等同于一条sub指令,只不过sub要求目标与源之一相同。

相反,movl指令访问%ebp - 4处的内存位置,并将该值存储到%eax中。

票数 57
EN

Stack Overflow用户

发布于 2012-06-27 01:16:54

等同于英特尔语法中的LEA,加载有效地址(长?)。

票数 1
EN

Stack Overflow用户

发布于 2016-01-15 15:19:04

例如,LEA和MOV都可以使用变量的偏移量加载寄存器。

MOV还可以将内存位置的内容传输到寄存器,而LEA不能。LEA和MOV都可以计算“有效偏移量”,这可以更有效地进行数学计算

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

https://stackoverflow.com/questions/11212444

复制
相关文章

相似问题

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