ARM學習筆記 三

2021-05-17 15:35:22 字數 1050 閱讀 1739

異常(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...