大家帮我看下arm指令的问题,ldr str,奇怪!

[复制链接]
3383|5
 楼主| luocolor 发表于 2008-3-10 15:08 | 显示全部楼层 |阅读模式
ldr&nbsp;r3,=0xffff<br />ldr&nbsp;r4,=0x45&nbsp;&nbsp;;;;;;;;;;;;;;<br />str&nbsp;r4,[r3]&nbsp;&nbsp;&nbsp;;;;;;;;;;;运行时,总在这句死循环了!<br /><br />ldr&nbsp;r3,=0xffff<br />mov&nbsp;r4,r3&nbsp;&nbsp;;;;;;;;;;;;;;<br />str&nbsp;r4,[r3]&nbsp;&nbsp;&nbsp;;;;;;;;;;;运行时,也总在这句死循环了!<br /><br />ldr&nbsp;r3,=0xffff<br />ldr&nbsp;r4,[r3]&nbsp;;;;;;;;;;;;;;<br />str&nbsp;r4,[r3]&nbsp;&nbsp;&nbsp;;;;;;;;;;;正常<br /><br />哪位解释下为什么,我想不到原因!<br />可以得到的是,str指令前面的一条指令给r4的数据对结果有影响!<br />
twentyone 发表于 2008-3-10 15:27 | 显示全部楼层

RE

可能是地址的问题吧。在你的代码里面,你把0XFFFF做为操作地址。请问0XFFFF对应的是什么区域?是否是可以访问的?你把地址换成别的试一试。<br /><br />有没有可能是,每次做STR&nbsp;R4,&nbsp;[R3]操作的时候产生了异常,程序重新执行,在回到指令STR&nbsp;R4,&nbsp;[R3],所以看起来是死循环。
 楼主| luocolor 发表于 2008-3-10 16:15 | 显示全部楼层

3ks

  
 楼主| luocolor 发表于 2008-3-10 16:18 | 显示全部楼层

to twentyone

我认同你的<br />产生中断并重新执行了观点!<br /><br />另外,我是在一个模拟器上跑,我把地址改为了多个值,包括:<br />0xb0100000<br />0x0a800000<br />0xffff0000<br />这些都有问题,<br />而模拟器是模拟strong&nbsp;arm的,而0xb0100000是lcd&nbsp;control&nbsp;register的地址
aguijie 发表于 2008-3-10 17:14 | 显示全部楼层

地址对齐问题

str是字对齐指令(4BYTE),&nbsp;而地址0xffff不是字对齐的.&nbsp;至于改成0xb0100000等值也不行,&nbsp;那可能还有别的原因.
tanyu3604183 发表于 2011-7-6 17:40 | 显示全部楼层
应该是地址不对,0xffff和0x45都不是字对齐的,用作地址时,会产生不可预知的结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

105

帖子

0

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