Assembly 从寄存器中提取字段的MIPS指令
解决方案手册中的答案对于这个位字段提取问题似乎是错误的。我的问题发布在下面Assembly 从寄存器中提取字段的MIPS指令,assembly,bit-manipulation,mips,cpu-registers,mips32,Assembly,Bit Manipulation,Mips,Cpu Registers,Mips32,解决方案手册中的答案对于这个位字段提取问题似乎是错误的。我的问题发布在下面 以下是设置: 提出的问题是: 查找提取数据的最短MIPS指令序列 对于常量值i=22和j=5,字段从$t0开始,并将字段放入$t1 以数据表中显示的格式 解决方案手册对此给出了答案: 我有两个问题: 右边的零。这个建议的答案如何确保寄存器$t1中“字段”右侧的所有位都是零 右移逻辑。最后一条指令不是应该是sll$t1,$t1,10吗 很明显,解决方案手册中的答案并不理想 右边的零。这个建议的答案如何确保 寄存器$t1
以下是设置: 提出的问题是: 查找提取数据的最短MIPS指令序列 对于常量值i=22和j=5,字段从$t0开始,并将字段放入$t1 以数据表中显示的格式 解决方案手册对此给出了答案: 我有两个问题:
sll$t1,$t1,10吗
很明显,解决方案手册中的答案并不理想
andi
和sll
,我们可以将所有需要归零的位归零
很明显,这应该是一个
sll
操作,而不是srl
操作。2。是的,我认为它需要以左移位结束,以将字段置于寄存器的顶部。一个简单的方法是将字段右移到底部,然后左移到顶部。除非MIPS上的轮班指令真的很慢,否则两班倒应该比四班好。谢谢,这正是我检查解决方案之前的答案。谢谢你的编辑。我觉得回答我自己的问题很有趣,所以如果我违反了任何礼节,请让我知道。如果你在其他人之前找到解决方案,鼓励你回答自己的问题。此外,您可能已经使用不同的方法获得了问题不同部分的多个答案。所以,如果5名回复者每人提供20%的答案,请向上投票,然后发布你自己的综合答案[归因很好]。如果一个答案是90%以上,请投票并接受它。投票选出其他好的答案。在这里,90%以下的注释就足够了,可能会详细说明您添加的内容。大多数问题没有得到自我回答,主要是因为他们从别人那里得到了如此好的答案。这主要是为了避免冗余。对于简单的(r)内容,您可以编辑您的问题,并将更改后的代码附加到底部。永远不要编辑原始代码——它会改变问题的性质并使回答无效(即它们不再有意义)。不管你愿不愿意,你都可以这样做。再一次,谢谢,这真的很有帮助!下次我必须这样做的时候,我会记住这些。写一个格式很好的答案来解释这个解决方案是一个很好的方法,让它对未来的读者有用。即使评论帮助你找到了答案,也没关系。很高兴你接受了我的评论,并把它变成了一个很好的书面回答,因为我不会花时间去做。编写和格式化答案是一项非常有用的工作,需要时间,所以你肯定会因此而受到表扬。如果你只是复制/粘贴评论而没有添加任何价值,你可以回答“社区维基”以避免获得信任,但这里的情况并非如此。
lui $t1, 0x003f
ori $t1, $t0, 0xffe0
and $t1, $t0, $t1
srl $t1, $t1, 5