zslzsl999 发表于 2011-6-3 21:36:04

求助!!周立功lpc2131例程的启动代码以及堆栈的几个问题

满递减堆栈中 SP指向最下面一个压入的数据
那就是说再向堆栈压数据的话就是先SP-4 在放数据了
我的问题是
当栈空的时候 SP指向哪

启动代码中有这样一句
StackSvc         DCD   SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4
按他这样stacksvc指栈顶 满递减压栈
那数据岂不是从第2个字开始存储吗栈顶岂不是没有数据了

假设堆栈空间是100~199 满栈时 我执行压栈指令 是否能继续压 还是能编译错误
栈空时 是否能继续推?(哪怕推出来的不知道是什么数据)

启动代码最开始定义了5个堆栈长度
SVC_STACK_LEGTH         EQU         0
FIQ_STACK_LEGTH         EQU         0
IRQ_STACK_LEGTH         EQU         256
ABT_STACK_LEGTH         EQU         0
UND_STACK_LEGTH         EQU         0

这样可以吗除了IRQ其他的都是0


SvcStackSpace      SPACE   SVC_STACK_LEGTH * 4;Stack spaces for Administration Mode 管理模式堆栈空间

这条语句管理模式的堆栈空间是系统自动分配的吗?还是有其他语句制定具体地址
如果SVC_STACK_LEGTH=100那就是说 可能在100~500也可能在200~600是吗

      AREA    Stacks, DATA, NOINIT
StackUsr

这段语句里没有给出USR的具体地址
是不是默认其他未分配的空间都可以当做USR的堆栈




初学者可能问题很低级
书上实在找不到解释
希望各位大侠能指点指点
谢谢

zslzsl999 发表于 2011-6-3 22:33:49

不要一言不发啊
好歹来说两句啊。。。

qqlove 发表于 2011-6-8 13:40:32

我也在初学嵌入式,帮顶,坐等楼下强人解释

liubinghui 发表于 2011-6-15 19:12:36

没有高手指点。我也是初学者
页: [1]
查看完整版本: 求助!!周立功lpc2131例程的启动代码以及堆栈的几个问题