打印
[ZLG-ARM]

请教:EasyARM2200实验3.7疑问

[复制链接]
1057|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
beijing696|  楼主 | 2008-4-11 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   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?


相关帖子

沙发
ztcumt| | 2009-10-19 15:00 | 只看该作者
同问!

使用特权

评论回复
板凳
synics| | 2009-10-24 20:13 | 只看该作者
停天运行一下,然后告诉你!

使用特权

评论回复
地板
synics| | 2009-10-24 20:14 | 只看该作者
不过,你写的程序很清楚,你在对照一下课本,应该可以找出原因。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝