gpt4 book ai didi

assembly - LEA 内部做什么?

转载 作者:行者123 更新时间:2023-12-02 20:05:39 25 4
gpt4 key购买 nike

This question说LEA指令可以用来做算术。

据我了解,而不是:

inc eax
mov ecx, 5
mul ecx
mov ebx, eax

我可以简单地写

lea ebx, [(eax + 1) * 5]

LEA 版本只有一条指令,而不是 4 条指令。但是,我不明白 LEA 在没有 incmul 的情况下如何进行算术运算。

LEA 版本是否更快,或者 LEA 只是在后台运行原始指令?

编辑:这个问题不是关于 LEA 的目的,而是关于它内部如何运作。

最佳答案

I don't understand how LEA does the arithmetic without INC and MUL.

关键是 LEA 只能执行某些类型的算术:在计算内存地址(例如数组访问)时有用的排序。

将 CPU 视为具有用于此类地址计算的专用电路,并将 LEA 视为使用该电路的指令。

您可以在 Wikipedia 中阅读 x86 寻址模式。它显示了您可以使用 LEA 执行的计算类型。

简单来说,就是一个寄存器乘以1/2/4/8,加上一个寄存器,加上一个常量。您可以使用 LEA 计算 (eax + 1) * 5 的唯一原因是它相当于 eax * 4 + eax + 5。例如,如果您尝试计算 (eax + 1) * 6,LEA 将不会有任何帮助,而通用 MUL 和 ADD 仍然可以正常工作。

关于assembly - LEA 内部做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com