这篇⽂章主要介绍了汇编语⾔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(位cpu)
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务