如何在 x86-64 上划分无符号 128/64 位?

问题描述 投票:0回答:0

我需要在寄存器

rdx:rax
的 64 位处理器上将一个无符号的 128 位数字与
rdi
中的 64 位除数相除。较低的位在
rax
中,较高的位在
rdx
中。 然而,
DIV
-指令只支持 64/64 位除法。

我的方法是将

rax
(数字的较低位)保存在另一个寄存器中,并将
rdx
-Register 中的位按位左移到
rax
中,以执行与
rdi
的长除法。并将计算步骤保存在另一个寄存器中以逐步构建解决方案。

但我认为必须有一种更有效的方法。是否有指令支持多个寄存器之间的这种计算?

assembly x86-64 64-bit division bit-shift
© www.soinside.com 2019 - 2024. All rights reserved.