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