zoukankan      html  css  js  c++  java
  • 汇编指令: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)

    原文连接:https://my.oschina.net/guonaihong/blog/508907

  • 相关阅读:
    作业三
    作业二
    4.9上机作业
    4.2Java
    Java作业
    第四周上级作业
    第三周作业
    第一次上机练习
    [ZJOI2009]假期的宿舍
    [ZJOI2007]矩阵游戏
  • 原文地址:https://www.cnblogs.com/YangARTuan/p/11628591.html
Copyright © 2011-2022 走看看