2016-04-17 129 views
0

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

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

忽略了一个事实,这些都是零...

为0x00000000(地址),00000000(指令)连接起来?

例如,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

就你所问的问题而言,指令集的固定长度不会少于或等于。

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

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

指令的某些比特必须保留以定义该指令,根据该编码确定该指令的参数。这些指令编码有很多来源,特别是mips网站。 (32位固定长度规则有一个例外,他们有一个16位指令集,但是这并不改变地址编码的方式,mips不是可变长度,如x86或其他许多字节的可变长度,作为参数)

+0

是mips有32位指令和32位地址。单条指令根本无法存放完整的32位地址。 –