将下列 MIPS 指令翻译成 32 位指令
Translate the following MIPS instructions into 32 bit instructions
我正在尝试将以下 MIPS 指令转换为 32 位机器代码(使用 Big-endian):
swc1 $f1 8($t0)
我所做的是:
111001 00001 01000 00001000
我只确定swc1的翻译,其他的就不知道了。我用谷歌搜索了很多,但找不到 $f1 的数量。我也读了这个线程:
Link to a similar question 但是我仍然不确定是否应该为 $f1 使用 00001。至于offset 8和$t0的机器码,我做对了吗?
由于指令是32位的,对于16位的立即数,机器码格式有space,如下:
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)
我正在尝试将以下 MIPS 指令转换为 32 位机器代码(使用 Big-endian):
swc1 $f1 8($t0)
我所做的是:
111001 00001 01000 00001000
我只确定swc1的翻译,其他的就不知道了。我用谷歌搜索了很多,但找不到 $f1 的数量。我也读了这个线程: Link to a similar question 但是我仍然不确定是否应该为 $f1 使用 00001。至于offset 8和$t0的机器码,我做对了吗?
由于指令是32位的,对于16位的立即数,机器码格式有space,如下:
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)