我正在完成我的作业,我的一个问题是将0x8008FFC0解码为MIPS汇编语言指令并编写指令类型。 0x8008FFC0转换为1000 0000 0000 1000 1111 1111 1100 0000, 100000指令是lb.我正在查看“MIPS参考数据”。 "绿色表"',我没有看到它列在核心指令集中#39;它甚至还有指令类型吗?如果它成功的原因?
谢谢
答案 0 :(得分:1)
MIPS处理器中有三种指令类型,R,I和J.
在MIPS处理器中,R型指令的操作码为000000,因此不能是R型指令。
J类型指令移动pc,并具有[opcode] [target]格式。 lb不会让我们四处移动,也没有那种格式,所以它不能是J。
唯一剩下的选项是I,lb的格式为[opcode] [src] [dest] [immediate],因为你可以看到here,所以它是一个I类型的指令。
希望有所帮助。
假设你的意思是this绿色表。你看一下第一页上的表“核心指令集”它列出了一堆load x指令,它们都是I-type,所以猜测lb也是I-type是合理的。 (特别是,加载字节unsigned应该与加载字节的指令类型相同。)
或者如果您知道如何使用该指令,我认为它是lb $ t offset($ s),您可以看到它引用了两个寄存器($ s和$ t)和一个立即值(offset)。从中你可以看出它是我打字的。
关于操作码和funccode的问题。操作码是指令的前六位,它是计算机查看的第一件事,以决定做什么。由于它是六位,因此有64个可能的值。这足以唯一地标识每个I型和J型指令,但是为了增加可用指令的数量,R型指令的识别略有不同。每个R类型指令的操作码都是000000,计算机通过最后5位将它们分开,称为功能码。