處理器的底部或者四周,有大量的引腳,可以接受從外面來的電訊號,或者向外發出電訊號。這些引腳有很多,其中一部分用來將引數與運算的數字送入處理器的內部。有些引腳是用來復用的,假如現在要進行加法運算,那麼我們要重複使用這些引腳,來依次將被加數和加數送入。
一旦被加數通過引腳送入處理器,代表這個二進位制數字的一組電訊號就會出現在與引腳相連的內部線路上。這是一排高低電平的組合,代表著二進位制數中的每一位。這時候,必須用乙個稱為暫存器(register)的電路鎖住。之所以要這樣做,是因為相同的引腳和線路馬上還要用於輸入加數。也正是因為這個原因,這些內部線路稱為處理器內部匯流排。
暫存器是雙向器件,可以在一端接受輸入並加以鎖存,同時,它也會在另一端產生一模一樣的輸出。與暫存器 ra 和 rb 相連的,是算術邏輯單元,或者算術邏輯部件(arithmetic logicunit,alu),也就是圖 2-2 中的桶形部分。它是專門負責運算的電路,可以計算加法、減法或者乘法,也可做邏輯運算。在這裡,我們要求它做一次加法。
一旦暫存器 ra 和 rb 鎖存了參與運算的兩個數,算術邏輯部件就會輸出相加的結果,這個結果可以臨時用另外乙個暫存器 rc 鎖存,稍後再通過處理器資料匯流排送到處理器外面,或者再次送入 ra 或 rb。
8 位暫存器可以容納 8 位元(bit),或者說 1 位元組(byte),這是因為
另外,我們還要為這個位元組的每一位編上號,編號是從右往左進行的,從 0 開始,分別是0、1、2、3、4、5、6、7。在這裡,位 0(第 1 位)是最低位,在最右邊;位 7(第 8 位)是最高位,在最左邊。
16 位暫存器可以存放 2 個位元組,這稱為 1 個字(word),各個數字的編號分別是 0~15,其中 0~7 是低位元組,8~15 是高位元組。實際上,「字」的概念出現得很早,也並非指 16 個位元。只是到了後來,才特指 16 個二進位制位的長度。
32 位暫存器可以存放 4 個位元組,這稱為 1 個雙字(double word),各個數字的編號分別是 0~31,其中 0~15 是低字,16~31 是高字。
儘管圖中沒有畫出,但是 64 位暫存器可以容納更多的位元,也就是 8 個位元組,或者 4 個字。位數越多,暫存器所能儲存的數越大,這是顯而易見的。
記憶體按位元組來組織,單次訪問的最小單位是 1 位元組,這是最基本的儲存單元。如圖中所示,每個儲存單元中,各位的編號分別是 0~7。
記憶體中的每位元組都對應著乙個位址,如圖 2-5 所示,第 1 個位元組的位址是 0000h,第 2 個位元組的位址是 0001h,第 3 個位元組的位址是 0002h,其他依次類推。注意,這裡採用的是十六進製制表示法。作為乙個例子,因為這個記憶體的容量是 65536 位元組,所以最後乙個位元組的位址是
ffffh。
為了訪問記憶體,處理器需要給出乙個位址。訪問包括讀和寫,為此,處理器還要指明,本次訪問是讀訪問還是寫訪問。如果是寫訪問,則還要給出待寫入的資料。
8 位處理器包含 8 位的暫存器和算術邏輯部件,16 位處理器擁有 16 位的暫存器和算術邏輯部件,64 位處理器則包含 64 位的暫存器和算術邏輯部件。儘管記憶體的最小組成單位是位元組,但是,經過精心的設計和安排,它能夠按位元組、字、雙字和四字進行訪問。換句話說,僅通過單次訪問就能處理 8 位、16 位、32 位或者 64 位的二進位制數。
指令就是用某些數來表示處理器所進行的操作,這稱為指令(instruction),或者機器指令,因為只有處理器才認得它們。一般來說,指令由操作碼和運算元構成,但也有小部分指令僅有操作碼,而不含運算元。
對於inter處理器來說,如果訪問記憶體中的乙個字,那麼,它規定高位元組位於高位址部分,低位元組位於低位址部分,這稱為低端位元組序(little endian)。
指令和非指令的普通二進位制數是一模一樣的,在組成記憶體的電路中,都是一些高低電平的組合。因為處理器是自動按順序取指令並加以執行的,在指令中混雜了非指令的資料會導致處理器不能正常工作。因此,指令和資料要分開放,分別位於記憶體中的不同區域,存放指令的區域叫**區,存放資料的區域叫資料區。
8086 處理器內部有 8 個 16 位的通用暫存器,分別被命名為ax、bx、cx、dx、si、di、bp、sp。這 8 個暫存器中的前 4 個,即ax、bx、cx 和 dx,又各自可以拆分成兩個 8 位的暫存器來使用,總共可以提供 8 個 8 位的暫存器ah、al、bh、bl、ch、cl、dh 和 dl。
ARM指令協處理器處理指令
arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向...
ARM指令協處理器處理指令
arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向...
C 預處理器指令
c 預處理器指令是在編譯時呼叫的。預處理器指令 preprocessor directive 告訴c 編譯器要編譯哪些 並指出如何處理特定的錯誤和警告。c 預處理器指令還可以告訴c 編輯器有關 組織的資訊。1.定義符號和取消符號定義的預處理指令 define 和 undef 預處理指令都以 號開頭並...