汇编指令:lea |
您所在的位置:网站首页 › 汇编语言les和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), %raxrbx * 3 movq $8, %rbx leaq (%rbx, %rbx, 2), %raxrbx * 3 - 1 movq $8, %rbx leaq -1(%rbx, %rbx, 2), %rax
什么时候用lea指令: 在打算用五六条指令来完成某个乘法运算之前,看看能否通过两三条lea指令来代替它。 注意事项: d的取值范围是1,2,4,8(64位cpu) 原文连接:https://my.oschina.net/guonaihong/blog/508907 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |