在没有 MTC1 的情况下在 MIPS 中移动浮点数位

Shift bits of a float in MIPS without MTC1

我目前正在做一项学校作业,该作业要求我在不使用 MIPS 附带的 mtc1 命令的情况下找到单精度浮点数的有偏指数。我想知道如何在输入的结果

上使用 sllsrl

下面的代码是我想要实现的

li    $v0, 6
sll   $a2, $f0, 1 // Wrong type error here
srl   $a2, $a2, 24

我怎么能做这样的事情?

当然你不能像那样在同一条指令中混合使用 FPR 和 GPR,MFC* 和 MTC* 除外

如果数据当前在内存中,您可以使用 lw 将其直接加载到 GPR。如果它在 FPR 上,那么您需要存储到内存并从内存加载到 GPR

swc1  $f0, 0($a3)  # store from FPR to memory
lw    $t1, 0($a3)  # load from memory to GPR
sll   $a2, $t1, 1  # shift like normal
srl   $a2, $a2, 24