mips有32位地址和32位指令吗?

时间:2016-04-17 21:04:35

标签: memory mips processor mips32 program-counter

我知道32位MIPS指令和存储器寄存器是...... 32位......并且PC计算指令寄存器中该指令的地址。

我的问题是:32位地址是否附加到32位指令?

忽略这些都是零的事实......

0x00000000(地址)是否与0x00000000(指令)连接?

例如,R-Type是

OP(6) RS(5) RT(5) RD(5) SHIFTAMMT(5) FUNCT(6) 
=> 32 bit instruction
=> 000000_00000_00000_00000_00000_000000

上面的地址是 000000_00000_00000_00000_00000_000000

两个32位数字是否连接在一起,以便PC吐出32位,这对应于 64位值的上半部分?我经常看到有

的表格
Address     Instruction
0x00000000  0x00000000

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您经常看到的表显示指令的地址 和指令本身。在内存中,每个字(字节)都有一个永不改变的地址。地址(处理器使用的位置)和指令(存储在该位置的内容)是独立的。

答案 1 :(得分:0)

就你所要求的而言,指令集是固定长度,不多也不少。

对于某些指令,地址包含在寄存器中,并且只需要32位指令的几位来定义该寄存器。

如果一个寄存器不用作地址源,那么指令中一定百分比的位通常包含一个偏移量,因为所有指令都是32位,所以偏移很可能是以字节为单位的指令单位,不是点浪费这两位。我不记得mips是否有任何其他编码,如果他们这样做,那么它只能是地址的一小部分。

必须保留指令的某些百分比来定义该指令,基于该编码,其余位定义该指令的参数。这些指令编码有很多来源,特别是mips网站。

(32位固定长度规则有一个例外,它们有一个16位指令集,但这并没有改变地址编码的方式,mips不是像x86那样的可变长度或其他你可以在很多字节上添加的cisc参数)