在ZLG213x中有如下的语句:
;定义堆栈的大小
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
为什么把FIQ中断的堆栈设置为0呢?而且FIQ堆栈的sp指针和IRQ指针的地址是一样的,在发生FIQ中断的时候确实也用了压栈和出栈,这样不会出错吗?
还有个问题,如下:
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
其中,这应该是得到相应堆栈的最高地址,但是SVC_STACK_LEGTH=0的情况下,这样可以达到正确地址吗?我觉得不应该减1啊,什么原因呢? |