2017-01-09 65 views
0

Hamacher通過計算機組織。 ,我開始瞭解指示的基本步驟和操作。在完成指令譯碼之前,控制硬件如何知道要讀取哪個寄存器?

以下是彙編代碼

ADD RC,RA,RB

和指令如下 - :

1.Fetch the Instruction and increament the PC. 
2.Decode the instruction and read Registers RA and RB 
3.Compute [RA]+[RB](Executing Instruction) 
4.Load the result into destination register RC 

如何控制硬件知道哪個註冊在它完成解碼指令之前讀取?

給AS-說明: ,因爲源寄存器地址正在使用中的所有說明

我沒有得到它。它會是有益的,如果請人分享他們的知識同位位置指定這是可能的。 !

+0

它在解碼之前說它的讀取寄存器在哪裏?當然,可以有固定長度的編碼方案,其中操作碼佔據某個區域,源寄存器和目的寄存器佔據某些區域。在這些方案中,您不需要等到整個指令被解碼後,只要源寄存器被解碼,您就可以獲取它。但是您仍然需要等到您感興趣的位區域(在這種情況下是源寄存器)被解碼。 –

回答

2

在機器級別上,每個指令只是一個或幾個字節,用於編碼PC需要執行的操作。這些數據的某些位決定運行哪些操作(加,減,移位,讀等),其他位決定使用哪些操作數。從簡單的集的指令for MIPS32 architecture簡單的例子:

Instr:  add $d,$s,$t 
Bit pattern: 000000ss sssttttt ddddd--- --100000 
Instr:  sub $d,$s,$t 
Bit pattern: 000000ss sssttttt ddddd--- --100010 
Instr:  and $d,$s,$t 
Bit pattern: 000000ss sssttttt ddddd--- --100100 

正如你可以看到,無論操作型,編碼操作數位總是在相同的位置,從而CPU可以開始準備操作數數據它完成解碼操作類型之前。不知道MIPS是否也使用這種方法,但它有助於說明它。

相關問題