汇编总结:lea指令

汇编总结:lea指令ea 指令变种 按大小分类 leaw 2 个字节 leal 4 个字节 leaq 8 个字节 lea 的用法 leaqa b c d rax 首先 lea 指令是 mov 指令的变种 据说 lea 指令是 x86 体系结构中 是一条最古老但是从某个方面来讲又是最神奇的指令 表面上看 它做的事情非常简单 根据括号里的源操作数来计算地址 然后把地址加载到目标寄存器中 例如 leaqa b c d rax 先计算地址 a b c d 然后把最终地址载到寄存器 rax 中

ea指令变种(按大小分类):

leaw #2个字节 leal #4个字节 leaq #8个字节

lea的用法:

leaq a(b, c, d), %rax

首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个方面来讲又是最神奇的指令。

表面上看,它做的事情非常简单,根据括号里的源操作数来计算地址,然后把地址加载到目标寄存器中。

例如:leaq a(b, c, d), %rax 先计算地址a + b + c * d,然后把最终地址载到寄存器rax中。

最逗的是leaq不引用源操作数里的寄存器,只是单纯的计算。那这样的完全可以把它当作乘法指令使用。

例如:

  rbx * 2 

movq $8, %rbx leaq (, %rbx, 2), %rax

  rbx * 3

movq $8, %rbx leaq (%rbx, %rbx, 2), %rax

  rbx * 3 – 1

movq $8, %rbx leaq -1(%rbx, %rbx, 2), %rax

什么时候用lea指令:

    在打算用五六条指令来完成某个乘法运算之前,看看能否通过两三条lea指令来代替它。

注意事项:

    d的取值范围是1,2,4,8(64位cpu)

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227698.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:45
下一篇 2026年3月16日 下午8:45


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号