64个寄存器使用MIPS架构,长度为15位

时间:2015-10-07 16:44:14

标签: assembly 32bit-64bit cpu-architecture opcode

我正在完成作业,并询问以下事项: 我们有64个寄存器,其所有命令的长度均为15位。 它还说明在编译它们之后我们得到了以下内容(将它们转换为机器语言)。 7个命令,参考2个寄存器和60个命令,参考1个寄存器。它询问我们有多少没有寄存器引用的命令..

这就是我的意思,但看起来我有些不对劲。

Since this is mips architecture each of the commands we use (add,all etc) will be using 32bits where for the r instructor we have:
opcode(6bits),rs(6bits),rt(6bits),rd(6bit),shamt(5bit),func(3bit)
because it says that we have 64 registers so we need 6 bits for each and the func is 3 due to the fact that we have max 7 functions.So in the case for example of all we have the following 
000000->opcode
000000->rs
6bit-> rt
6bit-> rd
5bit-> shame
3bit-> the function.

这是正确的还是我错过了什么?也许我们不应该使用r教师而是i?当我们有60个命令和1个寄存器参考时,第二个操作会发生什么?什么教练实际上只能把一个寄存器作为参数?一些帮助将非常感谢,谢谢

1 个答案:

答案 0 :(得分:2)

我怀疑这是在谈论mips,它正在谈论你将要设计的虚拟架构:)

带有2个寄存器的7个命令需要3 + 6 + 6 = 15位,因此使用所有可用位。它确实让1个操作码可以自由编码其他指令:)让我们说000b用于那些。

这意味着,对于其余的指令,我们只剩下12位(因为前3位是000)。要编码60条指令,我们需要6位,另外6位用于寄存器,这样再次耗尽所有空间。

但是,我们仍然有4个操作码可用,我们可以将它们全部用于没有操作数的指令,当然我们仍然有6位以前用于寄存器,所以我们可以编码4 * 64 = 256个指令不采取任何操作。

000 000000 xxxxxx = no operand block #1 with 64 instructions
000 000001 xxxxxx = no operand block #2 with 64 instructions
000 000010 xxxxxx = no operand block #3 with 64 instructions
000 000011 xxxxxx = no operand block #4 with 64 instructions
000 000100 rrrrrr = first instruction with 1 operand
000 111111 rrrrrr = last instructon with 1 operand (60 total)
001 ssssss tttttt = first instruction with 2 operands
111 ssssss tttttt = last instruction with 2 operands (7 total)