- 积分
- 0
贡献0
飞刀0 FD
注册时间2016-1-4
在线时间0 小时
扫一扫,手机访问本帖
|
本帖最后由 潇毅 于 2011-10-24 21:31 编辑
- ;在6种模式下切换并设置堆栈指针
- MRS R0,CPSR ;把CPSR读取到R0
- BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Fiq ;设置R1 为0b10001
- ORR R0,R0,R1 ;R0和R1相或,设置低5位
- MSR CPSR_c,R0 ;把R0的值重新赋值到CPSR
- LDR SP,=Stact_Fiq
- BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Irq
- ORR R0,R0,R1
- MSR CPSR_c,R0
- LDR SP,=Stact_Irq
-
- BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Svc
- ORR R0,R0,R1
- MSR CPSR_c,R0
- LDR SP,=Stact_Svc
-
- BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Abort
- ORR R0,R0,R1
- MSR CPSR_c,R0
- LDR SP,=Stact_Abort
-
- BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Undef
- ORR R0,R0,R1
- MSR CPSR_c,R0
- LDR SP,=Stact_Undef
-
- BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Sys
- ORR R0,R0,R1
- MSR CPSR_c,R0
- LDR SP,=Stact_Sys
复制代码 CPU是怎样判别几种模式下的SP的分类的?
如上面的- ; BIC R0,#0x1f ;低5位清零
- LDR R1,=MODE_Sys
- ORR R0,R0,R1
- MSR CPSR_c,R0
- LDR SP,=Stact_Sys
复制代码 它是怎样知道sp_sys而不是sp_fiq、sp_irq等。
系统默认的SP是那种模式下的?
还请高手指点? |
|