MIPS32 64 位数字除以 32 位数字
MIPS32 64-bit Number Divided by 32-bit Number
我想弄清楚如何 divide 一个 64 位数字(假设高 32 位存储在 $s3 中,低 32 位存储在 $s4 中)通过一个 32 位数字(假设它存储在 $s5 中)。
我知道div指令只能将32位值作为输入,HI寄存器存储32位余数,LO寄存器存储32位商。
知道这一点后,我是否需要结合使用:
div $s3, $s5
mfhi $t0
mflo $t1
div $s4, $s5
mfhi $t2
mflo $t3
但是我不确定我需要对这些计算的商和余数做些什么才能得到完整的结果。
http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/#Division <- 示例 division 在 Intel 上的完成情况。他们使用较高 division 的余数作为下一个较低待 divided 数的高 32 位。当然,如果您有类似 Intel 的 div-64-by-32 指令,您就不会问这个问题。如果您 div 旁边的数字足够小,您可以在 16 位步长中执行相同的操作。否则,您可能需要以困难的方式实现自己的 division。
我想弄清楚如何 divide 一个 64 位数字(假设高 32 位存储在 $s3 中,低 32 位存储在 $s4 中)通过一个 32 位数字(假设它存储在 $s5 中)。
我知道div指令只能将32位值作为输入,HI寄存器存储32位余数,LO寄存器存储32位商。
知道这一点后,我是否需要结合使用:
div $s3, $s5
mfhi $t0
mflo $t1
div $s4, $s5
mfhi $t2
mflo $t3
但是我不确定我需要对这些计算的商和余数做些什么才能得到完整的结果。
http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/#Division <- 示例 division 在 Intel 上的完成情况。他们使用较高 division 的余数作为下一个较低待 divided 数的高 32 位。当然,如果您有类似 Intel 的 div-64-by-32 指令,您就不会问这个问题。如果您 div 旁边的数字足够小,您可以在 16 位步长中执行相同的操作。否则,您可能需要以困难的方式实现自己的 division。