lea指令如何获得操作数的地址?

这个问题在这里已经有了答案:

  • LEA指令的目的是什么? 14个答案

  • LEA指令使用CPU的有效地址(EA)部分来执行某些算术运算而不使用ALU。 EA模块可以执行非常特定的算术运算,用于地址计算,但如果您需要的是专门提供的东西之一,也可以用于其他事情。

    通过在EA计算中不使用ALU,ALU可以同时忙于做其他事情,并且可以避免管道延迟。


    lea不通过ALU的想法已经过时,并且在过去的十年中一直是错误的。 它通过其中一个ALU--其中会有几个,这极不可能成为瓶颈。 这实际上需要时间。 它不会比add更快。

    但这并不意味着它没有用处。 与add不同,它可以有一个与两个输入不同的目的地,所以它可以保存一个mov ,并且它可以占用一个额外的常量,因此你可以将两个add和一个mov放在一起。 缩放比例也很好,并且所有的组合都可以在lea a, [b + b * 8 + 5]完成,如a = b * 9 + 5 。 这样的“复合物”形式lea往往比较简单的2个操作数的形式慢lea

    链接地址: http://www.djcxy.com/p/72369.html

    上一篇: How does lea instruction get the operand's address?

    下一篇: Qt Creator Assembly Output