ARM7在初始化各模式堆栈指针时为什么系统模式的SP不变? 在EASYARM2200中实验3.7"ARM微控制器工作模式实验",在初始化各模式下的堆栈指针时,其他模式下的SP(R13)被赋值后都会变化,就是只有系统模式下的SP(R13)不变,是什么原因? 程序如下:
InitStack MOV R0, LR ; R0 <= LR,因为各种模式下R0是相同的
;设置管理模式堆栈 MSR CPSR_c, #0xd3 LDR SP, StackSvc ;设置中断模式堆栈 MSR CPSR_c, #0xd2 LDR SP, StackIrq ;设置快速中断模式堆栈 MSR CPSR_c, #0xd1 LDR SP, StackFiq ;设置中止模式堆栈 MSR CPSR_c, #0xd7 LDR SP, StackAbt ;设置未定义模式堆栈 MSR CPSR_c, #0xdb LDR SP, StackUnd ;设置系统模式堆栈 MSR CPSR_c, #0xdf LDR SP, StackUsr(运行到此处时AXD)
MOV PC, R0
有人做过这个实验么? 设置系统模式堆栈 MSR CPSR_c, #0xdf LDR SP, StackUsr :运行到此处时AXD中的current(寄存器观察窗口)下的(SP)R13由0X00000000变为0x400030FC),但是在User/System窗口下的R13为什么还是0X00000000?
|