Assembly ARM/AArch64上的DIVQ对应物(带双倍宽度红利的缩小分割)?

Assembly ARM/AArch64上的DIVQ对应物(带双倍宽度红利的缩小分割)?,assembly,x86,arm,division,arm64,Assembly,X86,Arm,Division,Arm64,x86-64有一条指令DIVQ,用于将128位数字除以64位数字 ARM64有类似的功能吗?如何在ARM64上执行128/64除法?这是您回答此类问题的答案 答案是否定的,128位除法。您可以选择在模拟中对较长的操作数实现除法。任何大整数库都应该作为算法的适当参考。对于2R/R除法的特定情况,32位ARM的uint64_t除法的libgcc实现可能是一个很好的例子,对于除数适合32位,但被除数不适合的情况。或AArch64的无符号uuuuInt128/uuuuuuInt128除法辅助函数,\uu

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

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

这是您回答此类问题的答案


答案是否定的,128位除法。您可以选择在模拟中对较长的操作数实现除法。任何大整数库都应该作为算法的适当参考。

对于2R/R除法的特定情况,32位ARM的uint64_t除法的libgcc实现可能是一个很好的例子,对于除数适合32位,但被除数不适合的情况。或AArch64的无符号uuuuInt128/uuuuuuInt128除法辅助函数,
\uuuuuuudivti3
。LLVM版本的C源代码->@PeterCordes确实如此-或者对于一个黑客和斜杠,选择一种语言,编译一个除法,并检查程序集。我敢称之为“编译分治”吗?通常的语言是C和C++,大多数编译器不内联帮助函数。您可以从GCC获得
bl\uuuudivti3
(我假设是叮当声),如Godbolt链接所示。(它确实告诉您要查找什么helper函数名,这就是我链接它的原因。)是的,编译分治是一个多步骤的过程,如果您必须编译
libgcc
源代码以获得所需的AArch64 asm,甚至可能是递归的:P@PeterCordes嗯……就像所有过于简单的计划一样,说起来容易做起来难:)