2016-04-17 171 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位地址。 –