gpt4 book ai didi

assembly - addq和movl的区别,然后addq

转载 作者:行者123 更新时间:2023-12-02 17:24:13 24 4
gpt4 key购买 nike

在功能上有什么区别

addq (%rbx), %rax

movl (%rbx), %ecx
添加 %rcx, %rax

在汇编中?

我认为他们做同样的事情,但功能上有什么区别?

最佳答案

第一个从 rbx 位置的内存中提取一个完整四字(64 位),并将其添加到 rax 寄存器。

第二个从同一位置拉出一个长字(仅 32 位)并将其存储到 ecx(将 rcx 的上半部分置零) ).然后它将 rcx 添加到 rax

所以我想说的主要区别是第二个片段没有将内存中的完整四字添加到 rax,只有长字。

第一个(单行)代码示例更类似于:

movq    (%rbx), %rcx
addq %rcx, %rax

尽管 that 也不是严格相同的,因为它更改了 rcx。为了使其更接近匹配,您可以在过程中保存和恢复 rcx:

push    %rcx
movq (%rbx), %rcx
addq %rcx, %rax
pop %rcx

尽管如此,当然,您已经更改了 rsp(尽管是暂时的)并且它要求您实际设置一个堆栈(可能,但绝对 case) 所以你最好坚持使用单线 :-)

关于assembly - addq和movl的区别,然后addq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40146064/

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