[ZLG-ARM] 问213x启动文件问题

[复制链接]
 楼主| xjtuer 发表于 2008-1-19 15:16 | 显示全部楼层 |阅读模式
如下<br />1.先定义一个常量:&nbsp;ABT_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />2.分配空间&nbsp;:&nbsp;AbtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;ABT_STACK_LEGTH&nbsp;*&nbsp;4<br />3.堆栈空间最高地址: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 /><br />4.设置中止模式堆栈:&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0xd7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackAbt<br /><br />请问最后SP指向的地址值是多少?<br /><br />我用AXD看了一下,r13值是0x4000204C&nbsp;这和fiq,und模式的值是一样的,能解释一下为什么是这个值吗?
xiuzhou 发表于 2008-1-21 10:00 | 显示全部楼层

问213x启动文件问题

因为ABT_STACK_LEGTH=0,所以执行完AbtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;ABT_STACK_LEGTH&nbsp;*&nbsp;4后没有分配内存空间,返回给AbtStackSpace的是RAM中空闲内存的起始地址,按照你在AXD中R13的值,此时AbtStackSpace应该是0x40002050,然后再执行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就是你在R13中看到的值。<br />
 楼主| xjtuer 发表于 2008-1-21 14:18 | 显示全部楼层

问213x启动文件问题

我不明白的一点是:<br /><br />ABT_STACK_LEGTH是0,<br /><br />ABT_STACK_LEGTH-1应该是0xFFFFFFFF&nbsp;,<br /><br />(ABT_STACK_LEGTH-1)*4相当于左移两位得到结果:0x3FFFFFFC,<br />AbtStackSpace的是RAM中空闲内存的起始地址0x40002050,那么加上0x3FFFFFFC后得到的值0x0000204c当然我知道这个结果是错的,但是怎么转移到了0x4000204C。<br /><br />如果这样算(ABT_STACK_LEGTH-1)*4=ABT_STACK_LEGTH*4-1*4=4,<br />0x40002050-4=0x4000204c没问题。<br /><br />是不是采用AbtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;ABT_STACK_LEGTH&nbsp;*&nbsp;4这样的分配方式分配内存空间,只要ABT_STACK_LEGTH为0,不论我把AbtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;ABT_STACK_LEGTH&nbsp;*&nbsp;4这个语句放在什么地方,AbtStackSpace都指向RAM中空闲内存的起始地址吗??<br /><br />多谢解答
xiuzhou 发表于 2008-1-21 16:51 | 显示全部楼层

问213x启动文件问题

ABT_STACK_LEGTH-1)*4相当于左移两位得到结果:0xFFFFFFFC,至于是不是指向RAM中空闲内存的起始地址我也不是很明白
 楼主| xjtuer 发表于 2008-1-21 17:52 | 显示全部楼层

粗心啊~~~~

拿计算器算的,结果是0x3FFFFFFFC,少看了一个F,粗心啊~~~~~~<br /><br /><br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

19

帖子

1

粉丝

12

主题

19

帖子

1

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