異常處理學習筆記

2021-09-01 19:03:05 字數 1186 閱讀 3279

arm處理器的工作模式

使用者模式user

快速中斷模式fiq

處部中斷模式irq

特權模式supervisor

資料訪問中止模式abort

未定義指令中止模式undefined

系統模式system

1一上電,

cpu處於

supervisor(svc

管理模式)

2發生中斷,

cpu進入

riq(

外部中斷模式)

r13,r14切換到自已的

r13,

r14(

r13-irq,r14-irq)

跳轉到0x18

處執行

3碰到一條機器碼,

cpu不認識

,cpu

進入undefined(

未定義指令中止)模式

r13,r14切換到自已的

r13,

r14(

r13-und,r14-und)

跳轉到0x4執行

4當程式執行

swi#val,cpu

會進入svc模式

.r13,r14切換到自已的

r13,

r14(

r13-svc,r14-svc)

跳轉到0x8

處執行

swi異常處理硬體所作工作:

1cpu進入

svc模式

2cpsr內容複製到

spsr_svc中

3r13,r14切換

r13_svc,r14_svc

4下一條指令儲存到

r14_svc中

5跳轉到

0x8t

處執行

軟體所作工作:

1在位址

8處放一條跳轉指令

2儲存現場

3處理異常

4恢復現場

swi應用場景:

如果應用中用到openreadwrite

等函式

相當於使用者發出一條swi#val

的指令

核心根擾val

呼叫相應的函式

(sys_open/sys_read)

未定義指令應用場景:

一般用於除錯程式

在程式中新增未定義指令,

在異常處理中作相應操作

異常處理學習筆記

arm處理器的工作模式 使用者模式 user 快速中斷模式 fiq 處部中斷模式 irq 特權模式supervisor 資料訪問中止模式 abort 未定義指令中止模式 undefined 系統模式 system 1 一上電,cpu處於 supervisor svc 管理模式 2 發生中斷,cpu進...

異常處理學習

1 異常的使用場合 1 應用程式 2 庫 最好不要捕獲異常,除非某個異常表示的是 可以處理的情況 但要假定呼叫 可以處理他們。2 net 執行時可以把整個程式放在另乙個更大的 try塊中,如果發生的異常 沒有處理,程式流就會退出程式,由 net 執行時中的 catch 塊捕獲它。會導致程式執行中斷,...

C 之異常處理學習筆記

throw語句用於將異常物件丟擲,throw語句將異常丟擲,如果在當前函式中沒有try catch語句能夠處理該異常,則當前函式將立即返回。異常被傳遞到上層呼叫函式,仍然需要try catch語句進行處理,如果上層函式也沒有能力處理該異常,則異常繼續向更上層函式的函式傳遞。如果在函式呼叫棧中的所有函...