【发布时间】:2011-02-10 14:46:37
【问题描述】:
我只是想在本机 MIPS 上实现多精度算术。假使,假设 一个 64 位整数在寄存器 $12 和 $13 中,另一个在寄存器 $14 和 $15 中。 这笔款项将存放在 10 美元和 11 美元的寄存器中。 64 位整数的最高有效字在偶数寄存器中找到,最低有效字在奇数寄存器中找到。它说,在互联网上,这是最短的实现方式。
addu $11, $13, $15 # add least significant word
sltu $10, $11, $15 # set carry-in bit
addu $10, $10, $12 # add in first most significant word
addu $10, $10, $14 # add in second most significant word
我只是想仔细检查一下我的理解是否正确。 sltu 检查是否 两个最低有效词的总和小于或等于其中之一 操作数。如果是这种情况,那么是否发生了进位,对吗?
检查两个最重要的相加时是否发生进位 单词并将结果存储在 $9 我必须做的:
sltu $9, $10, $12 # set carry-in bit
这有意义吗?
【问题讨论】:
-
我建议通过在 SLTU 之前添加高半部分然后添加进位来创建更多 ILP,因此超标量 MIPS 可以与低半部分
addu或sltu从低半部分生成结转。您的版本有一个运行所有 4 条指令的依赖链,因此延迟不会超过 4 个周期;我的会缩短到 3 个周期。