異常(exceptions)
當正常的程式執流程發生暫時的停止時,稱之為異常。
處理中斷請求,處理前保留現場以便處理完後返回;
處理器允許多個異常同時發生,它們會按固定的優先順序被處理。
arm體系結構所支援的異常型別及其具體含義(按優先順序從高到低):
1. 復位:當處理器復位電平有效時產生復位異常;
3. fiq:當處理器的快速中斷請求引腳有效且cpsr中f位為0(為1時禁止fiq)時;
4. riq:當處理器的外部中斷請求引腳有效且cpsr中i位為0時;
6. 未定義指令,swi:當arm處理器或協處理器遇到不能處理的指令時;
7. 軟體中斷。
對異常的響應
從異常返回
異常處理完後arm處理器會執行以下兩個步驟從異常返回:
1. 將spsr複製到cpsr;
2. 將連線暫存器lr的值減去相應的偏移量後送到pc。
可以認為程式總是從復位異常處理程式開始執行的,因此復位異常處理程式不需要返回。
arm儲存器格式
arm體系結構將儲存器看成是從0位址開始的位元組的線性組合;
arm體系結構可以用兩種格式儲存位元組資料,分別稱為大端格式(big-endian)和小端格式(little-endian)。分別如下表1和表2所示:
表1 bin-endian
3124
2316158
70字單元a(位址為a:包括位址為a、a+1、a+2、a+3的位元組單元)
半字單元a(位址為a)
半字單元a+2(位址為a+2)
位元組單元a(位址為a)
位元組單元a+1
位元組單元a+2
位元組單元a+3
表2 little-endian
3124
2316158
70字單元a(位址為a:包括位址為a、a+1、a+2、a+3的位元組單元)
半字單元a+2(位址為a+2)
半字單元a (位址為a)
位元組單元a+3
位元組單元a+2
位元組單元a+1
位元組單元a
ARM彙編學習筆記三
常規 ldr r2,r5 將r5為位址的儲存單元中的資料載入到r2中。str r1,r0,0x04 將r1中的內容存放在以 r0 0x04 的記憶體位址單元中。傳送指令型別 ldrb r3,r2 1 以r2為位址讀取乙個位元組資料到r3中。r2更新 r2 r2 1 strh r1,r0,2 半字送達...
ARM指令學習筆記
1 arm指令中,帶有 s 的指令都會更新狀態位 eq ne pl等 例如ands等 2 arm的adc指令和csky的addc不一樣。arm的adc指令在做加法的時候會加上c位,這點兩者一致,但是並不會更新c位。csky的addc指令除了做加法的時候會加上c位,還會更新c位。3 cmn rn,op...
ARM學習筆記整理
核心模組 安裝核心模組 insmod name.ko 解除安裝核心模組 rmmod name 不要帶上.ko 檢視安裝的核心模組 lsmod makefile的編寫 obj m o kdir linux 開發板依賴的編譯好的核心 all make c kdir m pwd modules cross...