lpc2200工程模板中的startup.s文件的堆栈定义问题

[复制链接]
2856|5
 楼主| yamaki 发表于 2007-10-29 21:04 | 显示全部楼层 |阅读模式
lpc2200工程模板中的startup.s文件第250行至254行<blockquote>StackSvc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SvcStackSpace&nbsp;+&nbsp;(SVC_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackIrq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IrqStackSpace&nbsp;+&nbsp;(IRQ_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackFiq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FiqStackSpace&nbsp;+&nbsp;(FIQ_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackAbt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbtStackSpace&nbsp;+&nbsp;(ABT_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackUnd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UndtStackSpace&nbsp;+&nbsp;(UND_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4</blockquote>括号中的STACK长度为何要减1呢?这样第一个StackSvc的地址为0x3ffffffc,虽然这个STACK的长度为0。这里如果不减1,可以么?<br />&nbsp;<br />&nbsp;<br />
 楼主| yamaki 发表于 2007-10-30 08:48 | 显示全部楼层

re

如果不减1的话,StackSvc的地址为0x40000000,这样是不是更好一点?
computer00 发表于 2007-10-30 09:28 | 显示全部楼层

也许是空栈 吧

  
yujun0834 发表于 2007-10-30 09:31 | 显示全部楼层

re

应该是考虑到地址对齐的问题吧
250147449 发表于 2007-10-30 09:33 | 显示全部楼层

我是新手多指教

我是新手多指教
 楼主| yamaki 发表于 2007-10-30 09:46 | 显示全部楼层

结论

查了一些资料,将(SVC_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4改写成SVC_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;-&nbsp;4。如果不减4的话,则是栈顶之外的第一个地址;如果减4,则是栈内的最高字地址。ARM栈是递减栈。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

53

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部