在 x86 汇编中划分 64 位时出现问题

2023-12-20

在 x86 程序集中进行划分时,我不断收到“程序收到信号 SIGFPE,算术异常”。这很令人困惑,因为如果我除以 10,答案应该小于 64 位答案......

mov $0x82b40000, $eax
mov $0x21c3677c, $edx
mov $10000000, %ebx
div %ebx

您需要进行类似于手动长手除法的除法。将被除数放入另一对寄存器或存储器中。然后清除 edx 并用高阶被除数加载 eax。然后将 edx:eax 除以 32 位除数,并将 eax(商)存储回高位被除数中。接下来加载带有低阶被除数的 eax(不考虑 edx),并再次除以 32 位除数。将 eax 存储回低阶被除数中。此后,高位和低位被除数 = 被除数/除数(64 位商),并且 edx = 被除数 % 除数(32 位余数)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 x86 汇编中划分 64 位时出现问题 的相关文章

随机推荐