[ZLG-ARM] 请教 ZLG_ARM!

[复制链接]
2207|2
 楼主| 南京土著人 发表于 2007-5-23 12:16 | 显示全部楼层 |阅读模式
ARM, lg, TE, ST, ps
在IRQ.s中有这么一段:<br /><br /><br />$IRQ_Label<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;LR,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Calculate&nbsp;the&nbsp;returning&nbsp;address&nbsp;计算返回地址<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R3,&nbsp;R12,&nbsp;LR}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Protects&nbsp;the&nbsp;task&nbsp;environments&nbsp;保存任务环境<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;SPSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Protects&nbsp;the&nbsp;status&nbsp;variable&nbsp;保存状态<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;SP,&nbsp;{R3,LR}^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Protects&nbsp;SPSR&nbsp;and&nbsp;SP&nbsp;in&nbsp;user&nbsp;status,&nbsp;Notice:&nbsp;DO&nbsp;NOT&nbsp;write&nbsp;back.保存SPSR和用户状态的SP,注意不能回写<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;If&nbsp;the&nbsp;SP&nbsp;is&nbsp;written&nbsp;back,&nbsp;it&nbsp;should&nbsp;be&nbsp;adjusted&nbsp;to&nbsp;its&nbsp;appropriate&nbsp;value&nbsp;later.如果回写的是用户的SP,所以后面要调整SP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;SP,&nbsp;#4*2<br /><br /><br /><br />我想知道的是:SUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;SP,&nbsp;#4*2&nbsp;这个是怎么计算的,为什么这样计算?<br />希望周工能给点意见!
 楼主| 南京土著人 发表于 2007-5-23 12:39 | 显示全部楼层

11

我刚才自己想了一下,不知道对不对!<br />还望指教。<br />因为STMFD&nbsp;&nbsp;&nbsp;SP,&nbsp;{R3,LR}^&nbsp;,这句话是保存的用户的信息,但是SP指针没有更新(即在这句话入栈时,SP还是指在原来的地方没有动过)。<br />加了SUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;SP,&nbsp;#4*2&nbsp;来使SP更新到栈顶!<br /><br />那我就不是很明白了难道STMFD&nbsp;&nbsp;&nbsp;SP,&nbsp;{R3,LR}^&nbsp;保存用户的信息SP不能加“!”号的吗?这样不就更新了吗?即STMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R3,LR}^。<br />这是我自己认为的,希望大虾能指点迷津!<br />小弟不胜感激!<br />
 楼主| 南京土著人 发表于 2007-5-24 11:00 | 显示全部楼层

????

周工怎么不过来侃侃啊&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

1

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