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語句進行處理,如果上層函式也沒有能力處理該異常,則異常繼續向更上層函式的函式傳遞。如果在函式呼叫棧中的所有函...