gpt4 book ai didi

assembly - ADD 指令还是加号?

转载 作者:行者123 更新时间:2023-12-02 08:29:23 25 4
gpt4 key购买 nike

非常简单的问题,但我没有找到好的答案,所以我在这里问。
我看到有时加法我们使用 ADD 指令,有时我看到使用加号 (+)。
请看以下内容:

mov eax,[esi + TYPE DWORD]

好吧,我了解到我应该使用 ADD 指令来添加数字,但它似乎是这样工作的。
我认为应该这样做:

add esi, TYPE DWORD
mov eax,[esi]
sub esi, TYPE DWORD

我的意思是,计算机如何在不执行添加指令的情况下访问内存地址 esi + TYPE DWORD?太奇怪了...

非常感谢您阅读 (:

最佳答案

首先,它们被编码为两种不同的东西 - ADD 是一条指令,将带有完整的操作码,而 + 将由您翻译汇编程序为其附加的主指令(在本例中为 MOV)进入引用模式。

然而,主要区别在于第一个将由内存单元(或更准确地说 - 地址生成单元)执行,而不会在加载执行之上消耗任何额外的仲裁,而后者将在 ALU 上执行,并相应地消耗所需的资源(取决于微架构,但在您的示例中,在任何现代乱序 CPU 上至少需要一些队列条目、解码槽、调度槽、端口等。) .

从这个意义上说,第一个通常是“更便宜”的,这就是为什么它经常用于没有内存引用的普通算术运算,通过使用 LEA 指令,正如 Harold 指出的那样。

关于assembly - ADD 指令还是加号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28703853/

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