CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  内核及驱动程序研究区

请问ARM指令LDR和ARM伪指令LDR有什么区别

楼主jimliu04(jim)2006-06-01 10:40:55 在 Linux/Unix社区 / 内核及驱动程序研究区 提问

这几天看uClinux引导部分代码的时候,到到这么一段汇编代码:  
  .text  
  /*   设置系统配置器SYSCFG   */  
  ldr r0,   =SYSCFG      
  ldr r1,   =rSYSCFG  
  str r1,   [r0]      
   
  查了一下资料,发现ldr如果作为ARM的load/store指令用于将存储骑数据传递到寄存器,但是ARM的伪指令中也有一个ldr指令,用于大范围地址读取。那么:  
  .以上的汇编代码中ldr到底属于哪种情况?  
  .汇编器编译的时候如何理解ldr,理解为ARM指令还是ARM伪指令?  
  .两者具体有什么区别?如何使用?  
   
  谢谢!  
  问题点数:20、回复次数:2Top

1 楼lihao1111111111(Blue sea)回复于 2006-09-07 10:11:20 得分 0

没见过啊!Top

2 楼moonfkypm(传说)回复于 2006-09-08 11:36:11 得分 0

还没注意这个问题,刚刚查了书,确实有指令和伪指令。  
  引自arm体系结构  
  ...............................  
  伪指令LDR{cond}   register,   ={expr|label-expr}  
  expr为32为常量。编译器根据expr的取值情况来处理这条伪指令:  
  1、当expr表示的地址没有超过mov或mvn指令中地址的取值范围时,编译器用合适的mov指令或mvn指令代替该LDR伪指令。  
  2、当expr表示的地址超过了mov或mvn指令中地址的取值范围时,编译器将该常数放在缓冲区中,同时用一条基于PC的LDR指令读取该常数。  
  ...............................  
   
  通过上面两种可以得出伪指令LDR和ARM指令LDR的区别,具体使用时,可以不用考虑二者的区别,由编译器决定的,看源码时,你只要搞清楚它的功能就行。Top

相关问题

关键词

得分解答快速导航

  • 帖主:jimliu04

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo