【发布时间】:2019-03-25 05:24:30
【问题描述】:
在 IA-32 架构上,我如何将 有符号 数除以 3(例如)存储在 2 个寄存器中的值 edx:eax( 64 位 值)。我想将整个值(64 位)除以 3,而不仅仅是 32 位,并将其存储在 2 个寄存器中。
我假设这只能使用 shifts 操作来完成,因为imul 仅适用于乘以 32 位数字。但只找到了除以2^n 数字的解决方案。
我怎样才能做到这一点?
【问题讨论】:
-
您想除以运行时变量数还是除以某个(但任何)常数?
-
@harold 任意常数,可以除以1,2,3,4,5,6...
-
我修正了我的答案来处理正除数和签名股息。
标签: assembly x86 64-bit 32bit-64bit 32-bit