4432|6

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教LDR R1,=0x12和LDR R1,0x12 有什么不相同啊? [复制链接]

请教:   
  LDR     R1,=   0x12345678       ;加载   32   位立即数   
  和     
  LDR     R1,0x12345678      
  有什么不相同啊?   
  一般在什么情况下用     LDR     R1,=   0x12345678   ?   
  在什么情况下用   LDR     R1,0x12345678   ?   
   
   
   
   
  LDR     R0,=LED_TAB               ;加载标号地址   
  和     
  LDR     R0,LED_TAB      
  有什么不相同啊?   
  一般在什么情况下用   LDR     R0,=LED_TAB   ?   
  在什么情况下用     LDR     R0,LED_TAB   ?   
   
   
  谢谢!   

最新回复

楼上正解,建议dump出来看最终的汇编code;  详情 回复 发表于 2009-3-3 15:50
点赞 关注

回复
举报

55

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶!
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
一条指令译成机器码只有32位,而你ldr r0,0x12345678 这样如何能够放在一条机器码里,因为你后面的立即数就32位了, 所以 ldr r0,=0x12345678 是一条伪指令,有=号的都是伪指令,是要转换成几条机器码的,我也记不清楚了,这些问题看书就能解决了
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
寻址方式不一样。。。
ldr r0,0x12345678  是将内存0x12345678地址中存储的数据搬到r0寄存器中
ldr r0,=0x12345678 可以理解为:将立即数0x12345678放到r0寄存器中
 
 
 

回复

77

帖子

0

TA的资源

宇宙尘埃

5
 
搞混了。。。ldr r0,0x12345678 是楼上说的那样
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
1. 没有“LDR R1,0x12345678 ”
2. 以下两条指令是一样的,都被称为“伪指令”,就是说编译器会把这条指令替换成其他合适的指令。
LDR R1, =0x12345678
LDR R0, =LED_TAB
如果这些数值不太复杂,那么就会用mov指令代替,比如:
ldr r1, =0x00
在编译时就会变成:
mov r1, #0x00

如果这些数值很复杂,那么编译时,这个数值会被保存在某个地方,然后使用读内存的指令进行读取,比如:
LDR R1, =0x12345678
在编译时变成:
ldr r1, [pc, xxxxx] // 这个xxx与pc相加,刚好就是some_locate的地址──编译器会帮你做好这一切
some_locate: .word 0x12345678

3. 你说“LDR R0,=LED_TAB ;加载标号地址 ”,没错,
LED_TAB是个地址标号,就是一个数值而已,编译器连接程序时会确定它的值,如果它很简单,就会使用mov指令赋值;如果很复杂,就存在某个地址,然后用读内存的指令读出。

4. LDR R0,LED_TAB
没有“=”号,它表示“读内存”.
比如:
LDR R0,LED_TAB
LDR R1, =LED_TAB
LED_TAB: .work 0x12345678

R0的值是0x12345678,R1的值是LED_TAB标号值,就是0x12345678在内存中存放的地址


 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼上正解,建议dump出来看最终的汇编code;
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表