解决方案手册中的答案对于此位域提取问题似乎是错误的。我的问题在下面发布。MIPS指令从寄存器中提取字段
提出的问题是:
查找提取从$ T0一个 场的常数值我的MIPS指令最短序列= 22和j = 5,并将该字段以数据表中显示的格式放入$ t1 。
的解决方案手册给出了这样的答案:
lui $t1, 0x003f ori $t1, $t0, 0xffe0 and $t1, $t0, $t1 srl $t1, $t1, 5
我有2个问题:
- 零向右。这个建议的答案如何确保寄存器$ t1中“字段”右侧的所有位全部为零?
- 右移逻辑。是不是最后的指令应该是
sll $t1, $t1, 10
而不是?
2.是的,我认为它需要以左移结束将字段放在寄存器的顶部。一个简单的方法来做到这一点将是正确的移动到底部,然后左移到顶部。除非移位指令在MIPS上非常慢,否则两个班次应该比4个指令更好。 –
谢谢,这正是我查看解决方案之前的答案。感谢您的编辑。 –