微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LEA 的重点是什么?

如何解决LEA 的重点是什么?

如果我有

lea     eax,[ebp-20]
push    eax

我能不能把它写成:

mov     eax,ebp-20
push    eax

为什么第一个比第二个更受欢迎?

解决方法

有 2 种语言 - 汇编语言和机器代码。

没有理由不能发明自己的汇编语言来生成相同的机器代码;其中支持纯文本 "mov eax,ebp - 20"(并转换为与 lea eax,[ebp-20] 在其他汇编器中生成的相同的机器代码)。

汇编器不这样做的原因有两个:

a) 约定。如果所有汇编程序对相同的事情使用相同的助记符,并且这些助记符被 CPU 手册使用,那就太好了;因为这样可以更轻松地学习汇编语言,并且更容易从一种汇编程序切换到另一种。

b) 解析。汇编程序最终不得不解析像 "mov eax,[ebp-20]" 这样的文本,而且更容易回收相同的解析代码来处理 "lea eax,[ebp-20]",避免使用不同的代码来解析额外的操作数格式。

注意:希望汇编程序执行此操作也有合理的原因。 lea 通常用于与有效地址计算无关的整数运算;并支持替代的 mov 语法将为程序员提供一种添加上下文和提高代码可读性的方法(例如,当它是地址时使用 lea,而不是地址时使用 mov,这样更容易说明什么是/不打算作为地址)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。