这是计算两个正整数相除的伪代码。
HR寄存器保存余数,LR寄存器保存被除数。 (并最终保 stub )
但是我认为这个算法有一些问题。
因为这个算法有时不能恢复减法。(除法是减法的延续。)
例如6/3 (0110/011)
该算法再减去-3一次。 (当我们手工计算这个除法时,不会出现这种情况)
所以我认为这个算法有一些问题。
你不同意我的观点吗?
如何在汇编中计算除法余数?
for i = 1 to num_of_bits do
(HR LR) << 1
if (HR >= 0) then
HR = HR - DIVISOR
else
HR = HR + DIVISOR
endif
if (HR > 0) then LR(lsb) = 1 endif
endfor
最佳答案
除法算法(也计算余数)的几种实现可以在 SPARC architecture manual 的附录 E 中找到。 .
较新版本的 SPARC 架构包括除法运算符 UDIV 和 SDIV。
可以找到进一步的实现 here .
关于algorithm - 如何在 SPARC 汇编中计算除法余数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708444/