打印

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

[复制链接]
2433|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luocolor|  楼主 | 2008-3-10 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ldr r3,=0xffff
ldr r4,=0x45  ;;;;;;;;;;;;;
str r4,[r3]   ;;;;;;;;;;运行时,总在这句死循环了!

ldr r3,=0xffff
mov r4,r3  ;;;;;;;;;;;;;
str r4,[r3]   ;;;;;;;;;;运行时,也总在这句死循环了!

ldr r3,=0xffff
ldr r4,[r3] ;;;;;;;;;;;;;
str r4,[r3]   ;;;;;;;;;;正常

哪位解释下为什么,我想不到原因!
可以得到的是,str指令前面的一条指令给r4的数据对结果有影响!

相关帖子

沙发
twentyone| | 2008-3-10 15:27 | 只看该作者

RE

可能是地址的问题吧。在你的代码里面,你把0XFFFF做为操作地址。请问0XFFFF对应的是什么区域?是否是可以访问的?你把地址换成别的试一试。

有没有可能是,每次做STR R4, [R3]操作的时候产生了异常,程序重新执行,在回到指令STR R4, [R3],所以看起来是死循环。

使用特权

评论回复
板凳
luocolor|  楼主 | 2008-3-10 16:15 | 只看该作者

3ks

使用特权

评论回复
地板
luocolor|  楼主 | 2008-3-10 16:18 | 只看该作者

to twentyone

我认同你的
产生中断并重新执行了观点!

另外,我是在一个模拟器上跑,我把地址改为了多个值,包括:
0xb0100000
0x0a800000
0xffff0000
这些都有问题,
而模拟器是模拟strong arm的,而0xb0100000是lcd control register的地址

使用特权

评论回复
5
aguijie| | 2008-3-10 17:14 | 只看该作者

地址对齐问题

str是字对齐指令(4BYTE), 而地址0xffff不是字对齐的. 至于改成0xb0100000等值也不行, 那可能还有别的原因.

使用特权

评论回复
6
tanyu3604183| | 2011-7-6 17:40 | 只看该作者
应该是地址不对,0xffff和0x45都不是字对齐的,用作地址时,会产生不可预知的结果

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

105

帖子

0

粉丝