这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
lea指令变种(按大小分类):
- 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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
本文标题为:汇编语言lea指令使用方法解析
基础教程推荐
- R语言histogram(直方图)的具体使用 2022-10-28
- Go语言实现一个Http Server框架(二) Server的抽象 2023-07-25
- ruby-on-rails – Nginx支持的Rails应用程序中缺少Content-Length Header 2023-09-20
- R语言学习代码格式一键美化 2022-12-05
- Ruby on Rails在Ping ++ 平台实现支付 2023-07-22
- R语言关联规则深入详解 2022-11-08
- R语言多元线性回归实例详解 2022-12-15
- golang 自然语言处理工具(gohanlp) 2023-09-05
- go语言的魔幻旅程14-反射 2023-09-05
- R语言使用gganimate创建可视化动图 2022-12-10
