我需要在寄存器
rdx:rax
的 64 位处理器上将一个无符号的 128 位数字与 rdi
中的 64 位除数相除。较低的位在rax
中,较高的位在rdx
中。
然而,DIV
-指令只支持 64/64 位除法。
我的方法是将
rax
(数字的较低位)保存在另一个寄存器中,并将 rdx
-Register 中的位按位左移到 rax
中,以执行与 rdi
的长除法。并将计算步骤保存在另一个寄存器中以逐步构建解决方案。
但我认为必须有一种更有效的方法。是否有指令支持多个寄存器之间的这种计算?