gpt4 book ai didi

assembly - 两个数字的 idivl,其中第一个数字小于第二个数字(在汇编中)

转载 作者:行者123 更新时间:2023-12-01 22:20:40 26 4
gpt4 key购买 nike

据我了解,C 汇编中的 idivl 命令采用 %edx(较高有效的一半)和 %eax(较低有效的一半)表示的 64 位数字,将其除以参数,并将结果存储在 % 中edx:%eax 再次。

a/b 和 a > b 时的行为如我所料:10/2 在 %edx 中产生全 0,在 %eax 中产生全 5。

但是,我不确定为什么当 b > a 时 a/b 会产生它的作用。例如,当我将这两个切换为 2/10(即 %edx 全部为 0,%eax 为 2,并且赋予 idivl 的“参数”为 10)时,结果如下:

%edx 有 2 个; %eax 全为 0

为什么会是这样的结果呢?如果我们将 %edx 和 %eax 混合在一起,那就意味着 2/10 = 00000000000000000000000000000010000000000000000000000000000000000 二进制数,十进制数为 2^33,而不是接近 2/10。

谢谢!

最佳答案

你是对的,它将 EDX:EAX 除以其操作数,但它不会将结果存储回那里。
相反,它将商放入 EAX 中,将余数放入 EDX 中。

关于assembly - 两个数字的 idivl,其中第一个数字小于第二个数字(在汇编中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16631001/

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