我正在尝试将以下MIPS指令转换为32位机器代码(使用Big-endian):
swc1 $f1 8($t0)
我做的是:
111001 00001 01000 00001000
我只确定swc1的翻译,而不是其他的翻译。我已经google了很多但是找不到$ f1的数量。我也读过这个帖子: Link to a similar question但是我仍然不确定是否应该使用00001作为$ f1。至于偏移8和$ t0的机器代码,我做得对吗?
答案 0 :(得分:1)
由于指令是32位,因此机器代码格式具有16位立即空间,如下所示:
111001 Rs[5] Ft[5] Offs[16]
(括号中的数字表示位数。)
注意$t0
是寄存器#8,$f1
确实是寄存器#1。因此,您的指示是:</ p>
111001 01000 00001 0000000000001000
= 1110 0101 0000 0001 0000 0000 0000 1000 = E5 01 00 08
您当然可以使用受信任的汇编程序验证它:
1 0000 E5010008 swc1 $f1, 8($t0)