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異常處理硬體所作工作:
1 cpu進入
svc模式
2 cpsr內容複製到
spsr_svc
中3 r13,r14切換
r13_svc,r14_svc
4 下一條指令儲存到
r14_svc
中5 跳轉到
0x8t
處執行
軟體所作工作:
1 在位址
8處放一條跳轉指令
2 儲存現場
3 處理異常
4 恢復現場
swi 應用場景
:如果應用中用到open read write
等函式相當於使用者發出一條swi #val
的指令核心根擾val
呼叫相應的函式
(sys_open/sys_read)
未定義指令應用場景:
一般用於除錯程式
在程式中新增未定義指令,
在異常處理中作相應操作
異常處理學習筆記
arm處理器的工作模式 使用者模式user 快速中斷模式fiq 處部中斷模式irq 特權模式supervisor 資料訪問中止模式abort 未定義指令中止模式undefined 系統模式system 1一上電,cpu處於 supervisor svc 管理模式 2發生中斷,cpu進入 riq 外部...
異常處理學習
1 異常的使用場合 1 應用程式 2 庫 最好不要捕獲異常,除非某個異常表示的是 可以處理的情況 但要假定呼叫 可以處理他們。2 net 執行時可以把整個程式放在另乙個更大的 try塊中,如果發生的異常 沒有處理,程式流就會退出程式,由 net 執行時中的 catch 塊捕獲它。會導致程式執行中斷,...
C 之異常處理學習筆記
throw語句用於將異常物件丟擲,throw語句將異常丟擲,如果在當前函式中沒有try catch語句能夠處理該異常,則當前函式將立即返回。異常被傳遞到上層呼叫函式,仍然需要try catch語句進行處理,如果上層函式也沒有能力處理該異常,則異常繼續向更上層函式的函式傳遞。如果在函式呼叫棧中的所有函...