汇编语言lea指令使用方法解析
这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
lea指令变种(按大小分类):
- 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中。
最逗的是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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。