ARM / AArch64 上的 DIVQ 对应物(具有双宽度红利的缩小除法)?

Eci*_*ana 2 x86 assembly arm division arm64

x86-64 有一条 DIVQ 指令,可以将 128 位数字除以 64 位数字。

ARM64 有类似的吗?如何在 ARM64 上进行 128/64 除法?

J..*_*... 5

ARM架构的参考是你去到了这样的问题。

答案是否定的,ARM 不支持128 位除法。您的选择是在仿真中对较长的操作数实施除法。任何大整数库都应作为为此目的的算法的合适参考。

  • 对于 2R / R 除法的特定情况,对于除数适合 32 位但被除数不适合的情况,32 位 ARM 的 uint64_t 除法的 libgcc 实现可能是一个很好的例子。或者 AArch64 的无符号 __int128 / __int128 除法辅助函数“__udivti3”。https://godbolt.org/z/oe6Txs4rd。LLVM 版本的 C 源代码位于 https://code.woboq.org/llvm/compiler-rt/lib/builtins/udivti3.c.html -> https://code.woboq.org/llvm/compiler-rt/lib /builtins/udivmodti4.c.html#__udivmodti4 (2认同)