我知道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
任何帮助都将不胜感激。
答案 0 :(得分:2)
您经常看到的表显示指令的地址 和指令本身。在内存中,每个字(字节)都有一个永不改变的地址。地址(处理器使用的位置)和指令(存储在该位置的内容)是独立的。
答案 1 :(得分:0)
就你所要求的而言,指令集是固定长度,不多也不少。
对于某些指令,地址包含在寄存器中,并且只需要32位指令的几位来定义该寄存器。
如果一个寄存器不用作地址源,那么指令中一定百分比的位通常包含一个偏移量,因为所有指令都是32位,所以偏移很可能是以字节为单位的指令单位,不是点浪费这两位。我不记得mips是否有任何其他编码,如果他们这样做,那么它只能是地址的一小部分。
必须保留指令的某些百分比来定义该指令,基于该编码,其余位定义该指令的参数。这些指令编码有很多来源,特别是mips网站。
(32位固定长度规则有一个例外,它们有一个16位指令集,但这并没有改变地址编码的方式,mips不是像x86那样的可变长度或其他你可以在很多字节上添加的cisc参数)