OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5486|回复: 7

i.mx裸机教程中,关于ldr指令的困惑

[复制链接]

2

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-10-29
在线时间
15 小时
发表于 2019-11-6 15:49:30 | 显示全部楼层 |阅读模式
2金钱
本帖最后由 RongLiu 于 2019-11-6 15:51 编辑

看了正点原子的教程,在裸机篇教程中,对于ldr指令的使用有疑问,目前看到了关于ldr的3种使用形式:
1)ldr r0,=0x87800000
2)ldr r0, label
3)ldr r0, [r1]

关于1),是将一个立即数放到r0寄存器,因为高于8位的立即数mov指令不能放,所以高于8位的必须用  1)这种形式,这个指令是一个伪指令。没疑问。

关于2),有疑问了,label是一个标号,对应的是一个地址值,ldr r0,label,我理解的是将labe这个标号处(地址处)对应的值拷贝到r0。 不知是否正确,待确证。

关于3),r1寄存器存放的是ram中某个字的地址,ldr r0,[r1]则是将对应地址内存中的值送到r0。没疑问。

看起来,如果2)的理解我是真确的,那2)和3)意思感觉一样,既然这样为什么不直接都使用2)呢?
比如,内存中某个地址为0x87800000,将0x87800000处的值送入r0,直接这样:
ldr r0,0x87800000
而不是这样:
ldr r1,=0x87800000
ldr r0,[r1]

请各位坛友指正。谢谢!!


最佳答案

查看完整内容[请看2#楼]

ldr r0,label你的理解应该是正确的,将label出的值加载到r0中,这个很好验证的,直接读取I.MX6U内部的寄存器值就知道了,label就是寄存器地址。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2019-11-6 15:49:31 | 显示全部楼层
ldr r0,label你的理解应该是正确的,将label出的值加载到r0中,这个很好验证的,直接读取I.MX6U内部的寄存器值就知道了,label就是寄存器地址。
回复

使用道具 举报

14

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2410
金钱
2410
注册时间
2017-2-20
在线时间
234 小时
发表于 2019-11-6 23:07:22 | 显示全部楼层
ldr r1,=0x87800000 ldr r0,[r1]只是ARM汇编的寄存器寻址方式,汇编中地址需要加[].具体你可以百度“ARM寻址方式”
回复

使用道具 举报

2

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-10-29
在线时间
15 小时
 楼主| 发表于 2019-11-7 01:23:01 | 显示全部楼层
zuozhongkai 发表于 2019-11-6 22:12
ldr r0,label你的理解应该是正确的,将label出的值加载到r0中,这个很好验证的,直接读取I.MX6U内部的寄存 ...

那这样写合法吗?比如:
ldr r0, 0x89800000
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-16
在线时间
5 小时
发表于 2019-11-16 18:00:52 | 显示全部楼层
RongLiu 发表于 2019-11-7 01:23
那这样写合法吗?比如:
ldr r0, 0x89800000

是合法的吧我觉得,
例如:
ldr r0, 0x12345678
就是把0x12345678这个地址中的值存放到r0中。
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-11-16 18:17:31 | 显示全部楼层
帮顶      
成功没有捷径
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-23 01:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表