回覆列表
-
1 # 愛達人程式設計達人
-
2 # 行走的splin
簡單來說,暫存器就是用來暫存資料的。從電子物理的角度,充放電實現資料的重新整理與儲存,掉電資料即丟失,但是計算機儲存資料器件最快的。計算機的cpu的運算器一般從暫存器中讀取資料,計算後,放到暫存器中。
簡單來說,暫存器就是用來暫存資料的。從電子物理的角度,充放電實現資料的重新整理與儲存,掉電資料即丟失,但是計算機儲存資料器件最快的。計算機的cpu的運算器一般從暫存器中讀取資料,計算後,放到暫存器中。
要回答這個問題呢,需要先說明一下CPU是什麼?CPU又稱為處理器,由運算器、控制器、暫存器、輸入裝置和輸出裝置組成,這些器件由處理資料匯流排相連。
它們在處理器中,分工明確:
運算器:進行資料的處理。
暫存器:進行資料的儲存。
控制器:控制各種器件工作。
輸入裝置:將人們熟悉的資訊形式轉化為機器能識別的資訊形式,如鍵盤、滑鼠等。
輸出裝置:將計算機運算的結果轉化為人們熟悉的資訊形式,如顯示器、印表機等。
處理資料匯流排:連線各種器件,使各個器件進行資料的傳送。
接下就簡單介紹暫存器在處理器中是怎麼工作的?
透過圖2-2-1我們來簡單瞭解,處理器的底部和四周有大量的引腳,可以接受外界發來傳送的電訊號。每個引腳都有自己的用處。有些引腳用來將參與運算的數字輸送到處理器內部,有些引腳可以重複使用的。
假如要進行加法運算,這些引腳將依次把加數和被加數送入處理器,處理器一旦接受訊號,將會以二進位制陣列成的電訊號反應在引腳相連的內部線路上,是一組高低電平的組合,代表著二進位制數的每一位,此時必須用暫存器(Register)(是雙向器件)的暫時儲存,之所以這樣做,是因為相同的引腳和線路馬上要輸入被加數,重複之 圖2-2-1
前的工作,也正因為這個原因,這些內部線路稱為處理資料匯流排。它們之間透過控制器(圖中沒有畫)發出指令,控制各個器件在某個正確的時間做某個動作。
圖2-2-1暫存器(Register A)和暫存器(Register B)將分別參與運算,假設暫存器(Register A)暫時儲存的是加數,暫存器(Register B)暫時儲存的是被加數。此時暫存器(Register A)和暫存器(Register B)都暫時儲存了資料,將不再受外部資料的影響。運算邏輯部件輸出結果,結果被輸送到暫存器(Register C),透過資料匯流排輸送到處理器外面,或再次送入到暫存器(Register A)和暫存器(Register B)參與運算。
【處理器中有多少暫存器】
不同的處理器,暫存器的個數、結構是不同的。【簡單介紹暫存器,詳細內容請參考Intel白皮書】
16位處理器有14個暫存器,每個暫存器有各自的名字。
14個暫存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
32位處理器有16個暫存器,每個暫存器有各自的名字。
16個暫存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP、ES、CS、SS、DS、FS、GS、EIP、EFLAGS。
64位處理器有16個暫存器,每個暫存器有各自的名字。
16個暫存器:RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、CS、DS、ES、SS、FS、GS、RIP、RFLAGS。
我們不對這些暫存器進行一次性的介紹,在下面的章節中,需要用到32位處理器的通用暫存器。