打印
[ZLG-ARM]

请教ARM微控制器工作模式实验

[复制链接]
1136|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songbw|  楼主 | 2007-10-31 09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在分配堆栈空间时
StackUsr    DCD     UsrStackSpace + (USR_STACK_LEGTH - 1)*4
StackSvc    DCD     SvcStackSpace + (SVC_STACK_LEGTH - 1)*4
StackIrq    DCD     IrqStackSpace + (IRQ_STACK_LEGTH - 1)*4
StackFiq    DCD     FiqStackSpace + (FIQ_STACK_LEGTH - 1)*4
StackAbt    DCD     AbtStackSpace + (ABT_STACK_LEGTH - 1)*4
StackUnd    DCD     UndtStackSpace + (UND_STACK_LEGTH - 1)*4

            AREA    MyStacks, DATA, NOINIT, ALIGN=2
UsrStackSpace         SPACE      USR_STACK_LEGTH * 4 
SvcStackSpace     SPACE      SVC_STACK_LEGTH * 4  
IrqStackSpace     SPACE      IRQ_STACK_LEGTH * 4 
FiqStackSpace     SPACE      FIQ_STACK_LEGTH * 4      
AbtStackSpace     SPACE      ABT_STACK_LEGTH * 4  
UndtStackSpace    SPACE      UND_STACK_LEGTH * 4

上面这段代码我看不明白,而在前面设置堆栈时
执行LDR  SP, StackSvc后,R13变为0x400030FC,
执行LDR  SP,StackIrq后,R13变为0x400031FC,
执行LDR  SP, StackFiq后,R13变为0x4000323C,
.............
请问上面R13的值是如何算出来的?

相关帖子

沙发
zlgarm| | 2007-11-1 18:05 | 只看该作者

re

R13就是堆栈指针
它的地址是编译器编译代码之后根据配置自动计算出来的

使用特权

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

本版积分规则

26

主题

86

帖子

1

粉丝