1、存儲器格式(字對齊)編程
Arm體系結構將存儲器看作是從零地址開始的字節的線性組合。從零字節到三字節放置第一個存儲的字(32位)數據,從第四個字節到第七個字節放置第二個存儲的字數據,一次排列。做爲32位的微處理器,arm體系結構所支持的最大尋址空間爲4GB。操作系統
存儲器格式設計
一、大端格式:高字節在低地址,低字節在高地址;內存
二、小端格式:高字節在高地址,低字節在低地址。資源
指令長度軟件
Arm微處理器的指令長度是32位的,也能夠爲16位(thumb狀態下)。Arm微處理器中支持字節(8位),半字(16位),字(32位)三種數據類型,其中,字須要4字節對齊,半字須要2字節對齊。硬件
注:所謂的指令長度是一條完整的指令的長度,而不是單純的mov這3個字母長度。權限
2、ARM體系的CPU有兩種工做狀態數據類型
一、ARM狀態:處理器執行32位的字對齊的ARM指令;請求
二、Thumb狀態:處理器執行16位的、半字對齊的Thumb指令。
在程序運行的過程當中,能夠在兩種狀態之間進行相應的轉換。處理器工做狀態的轉變並不影響處理器的工做模式和相應寄存器中的內容。
CPU上電處於ARM狀態。
3、ARM體系的CPU有如下7種工做模式
一、用戶模式(Usr):用於正常執行程序;
二、快速中斷模式(FIQ):用於高速數據傳輸;
三、外部中斷模式(IRQ):用於一般的中斷處理;
四、管理模式(svc):操做系統使用的保護模式;
五、數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,可用於虛擬存儲以及存儲保護信盈達嵌入式企鵝要妖氣嗚嗚吧久零就要;
六、系統模式(sys):運行具備特權的操做系統任務;
七、未定義指令停止模式(und):當未定義的指令執行時進入該模式,可用於支持硬件。
CPU的模式能夠簡單的理解爲當前CPU的工做狀態,好比:當前操做系統正在執行用戶程序,那麼當前CPU工做在用戶模式,這時網卡上有數據到達,產生中斷信號,CPU自動切換到通常中斷模式下處理網卡數據(普通應用程序沒有權限直接訪問硬件),處理完網卡數據,返回到用戶模式下繼續執行用戶程序。
特權模式
除用戶模式外,其它模式均爲特權模式(Privileged Modes)。ARM內部寄存器和一些片內外設在硬件設計上只容許(或者可選爲只容許)特權模式下訪問。此外,特權模式能夠自由的切換處理器模式,而用戶模式不能直接切換到別的模式。
異常模式
特權模式中除系統(system)模式以外的其餘5種模式又統稱爲異常模式。它們除了能夠經過在特權下的程序切換進入外,也能夠由特定的異常進入。好比硬件產生中斷信號進入中斷異常模式,讀取沒有權限數據進入停止異常模式,執行未定義指令時進入未定義指令停止異常模式。其中管理模式也稱爲超級用戶模式,是爲操做系統提供軟中斷的特有模式,正是因爲有了軟中斷,用戶程序才能夠經過系統調用切換到管理模式。
(1)用戶模式
用戶模式是用戶程序的工做模式,它運行在操做系統的用戶態,它沒有權限去操做其它硬件資源,只能執行處理本身的數據,也不能切換到其它模式下,要想訪問硬件資源或切換到其它模式只能經過軟中斷或產生異常。
(2)系統模式
系統模式是特權模式,不受用戶模式的限制。用戶模式和系統模式共用一套寄存器,操做系統在該模式下能夠方便的訪問用戶模式的寄存器,並且操做系統的一些特權任務能夠使用這個模式訪問一些受控的資源。
(3)通常中斷模式
通常中斷模式也叫普通中斷模式,用於處理通常的中斷請求,一般在硬件產生中斷信號以後自動進入該模式,該模式爲特權模式,能夠自由訪問系統硬件資源。
(4)快速中斷模式
快速中斷模式是相對通常中斷模式而言的,它是用來處理對時間要求比較緊急的中斷請求,主要用於高速數據傳輸及通道處理中。
(5)管理模式
管理模式是CPU上電後默認模式,所以在該模式下主要用來作系統的初始化,軟中斷處理也在該模式下,當用戶模式下的用戶程序請求使用硬件資源時經過軟件中斷進入該模式。
(6)終止模式
停止模式用於支持虛擬內存或存儲器保護,當用戶程序訪問非法地址,沒有權限讀取的內存地址時,會進入該模式,Linux下編程時常常出現的segment fault一般都是在該模式下拋出返回的。
(7)
未定義模式
未定義模式用於支持硬件協處理器的軟件仿真,CPU在指令的譯碼階段不能識別該指令操做時,會進入未定義模式。