分类: C/C++
2008-10-16 17:16:53
1.中断
中断都是异步发生的,发生后,cpu需要保存正在执行指令序列的执行条件,如pc,寄存器等,在调用中断isr之前可能会屏蔽掉那些低级别的中断!
2.重启
3.Abort
当发生严重的不可恢复的错误时候,可能引发这类异常,通常会结束引起该异常的程序!并dump一些错误信息
4.Fault 这类异常可以恢复,如缺页异常
5.Traps
6.programmed exceptions 也就是系统调用
总的来说,中断和异常都会将正在执行的指令序列中断,切换到另一个指令序列去执行!
arm cpu可能处于7种不同的模式 1.user 2.system(symbian没有使用) 3.supervisor(差不多所有内核代码都在这个模式下运行,除了isr和处理异常的代码) 4.abort(基本上很少使用,dump一些寄存器值就会回到svr里去) 5.undefined(未定义的指令集会进入到这个模式,很少使用) 6.interrupt 7.fast interrupt(cpu接受fiq时会进入这个模式)
R14 return address
R13 stack
R15 PC
CPSR 保存处于何种模式
13 14在每种模式下都是分开的