0

我正在尝试将以下 MIPS 指令转换为 32 位机器代码(使用 Big-endian):

swc1 $f1 8($t0)

我所做的是:

111001 00001 01000 00001000

我只确定 swc1 的翻译,而不是其他的。我用谷歌搜索了很多,但找不到 $f1 的数量。我还阅读了这个帖子: Link to a similar question但是我仍然不确定是否应该将 00001 用于 $f1。至于offset 8和$t0的机器码,我做对了吗?

4

1 回答 1

1

由于指令是 32 位的,因此机器代码格式具有 16 位立即数的空间,如下所示:

111001 Rs[5] Ft[5] Offs[16]

(括号中的数字表示位数。)

请注意,这$t0是寄存器#8,$f1实际上是寄存器#1。因此,您的指示是:

111001 01000 00001 0000000000001000
= 1110 0101 0000 0001 0000 0000 0000 1000 = E5 01 00 08

您当然可以使用受信任的汇编程序对其进行验证:

1 0000 E5010008      swc1 $f1, 8($t0)
于 2015-02-03T13:36:17.010 回答