Assembly 64个寄存器使用15位长度的MIPS体系结构

Assembly 64个寄存器使用15位长度的MIPS体系结构,assembly,32bit-64bit,cpu-architecture,opcode,Assembly,32bit 64bit,Cpu Architecture,Opcode,我有一个任务要做,它要求做以下事情: 我们有64个寄存器,它们的所有命令都有15位长度。 它还指出,我们在编译它们(将它们转换为机器语言)后得到了以下结果。引用2个寄存器的7个命令和引用1个寄存器的60个命令。它询问我们可以有多少没有寄存器引用的命令 这是我所想的,但似乎我有点不对劲 Since this is mips architecture each of the commands we use (add,all etc) will be using 32bits where for th

我有一个任务要做,它要求做以下事情: 我们有64个寄存器,它们的所有命令都有15位长度。 它还指出,我们在编译它们(将它们转换为机器语言)后得到了以下结果。引用2个寄存器的7个命令和引用1个寄存器的60个命令。它询问我们可以有多少没有寄存器引用的命令

这是我所想的,但似乎我有点不对劲

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个寄存器引用时,第二个操作会发生什么?哪位讲师实际上只能以一个语域作为论点?非常感谢您的帮助

我怀疑这是在谈论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)

“我们有64个寄存器,它们的所有命令都有15位长度。”哈?什么是15位长度?一些只有一个寄存器操作数的MIPS指令示例:
jr
bltz
lui
。这就是我自己看到的。也许寄存器最多只能占用15位?这就是我被困的地方。分配正好说明了这些:假设我们有一个cpu,其中有64个寄存器,其命令长度为15位。也许是说,嘿,我每个寄存器只能存储15位?但是这有点不清楚…@Michael,我可以问你,因为我是一个noobie,如果0注册为j教练吗?这是我的第一个想法,但后来我想,嘿,如果第一个例子中,我们有15位,所以寄存器是6+6,函数是3。那么你说我们只是从r教练那里避开函数?我也可以问一下吗你为什么要写000b?b应该是什么?很抱歉问了你一些愚蠢的问题,我只是想更好地理解计算机体系结构。一开始我的错误是,对于7个命令,我认为它们不是剩下的3位作为操作码,而是func(r讲师),让操作码为空,我想,嘿,你可以让操作码为空……好吧,我把一切都弄明白了。如果你能最后解释000b,我将不胜感激
b
只是不清楚时表示二进制的后缀:)我明白了。非常感谢。我非常感谢你的帮助!