LDR伪指令

10.45 LDR pseudo-instruction

  功能:把一个32位马上数或一个32位的内存地址载入到一个寄存器中。

注意:这里描写叙述的是LDR伪指令,而不是LDR指令

  语法:

              LDR{cond}{.W} Rt, =expr

              LDR{cond}{.W} Rt, =label_expr

*  
cond是一个可选的条件码

*  .W是可选的指令宽度说明符

*  
Rt是要载入的寄存器

*   expr是一个数字表达式

*   label_expr是一个以标号加上或减去一个数字值形式出现的PC相对或外部地址表达式

           举例:

           

            使用方法:

当使用LDR伪指令时:

*  假设表达式expr的值能用一个MOV或MVN指令进行载入,那么汇编器就使用MOV或MVN指令。

*  假设不能使用MOV或MVN指令,或者使用了label_expr,汇编器就把这个常量放在文字池里,

然后使用一条PC相对形式的LDR指令从文字池里读取这个常量。

  注意:

--- 以这样的方式载入的内存地址,其值是在链接时确定的,所以这里的代码不是位置独立的。

--- 无论链接器把包括LDR指令的节放在哪里,指向常量的地址仍然是有效的。

汇编器把label_expr的值放到一个文字池里,然后使用一条PC相对形式的LDR指令把这个值

从文 字池里读取到寄存器里。

假设label_expr是一个外部表达式,或不在当前节中,汇编器就在目标文件里放置一个重定位

指示符。链接器在链接时会产生详细的地址。

假设label_expr是一个局部的命名的(named)或数字标号,那么汇编器在目标文件里放置

一个 重定位指示符,同一时候为这个局部标号产生一个符号名。详细的地址也是在链接时产生的。假设

这个局部标号引用的是Thumb代码,则内存地址的Thumb位(bit 0)就会被设置。

从PC到内存池中常量值之间偏移量在ARM及32位Thumb编码中必须在 ±4K字节内,在16位Thumb

编码中必须在0到+1K字节范围 内。你必须自己确保在上述有效范围内有一个内存池。

假设被引用的标号是在Thumb代码中,那么LDR伪指令设置label_expr所代表的内存地址的

Thumb位(bit 0)。

注意:

            在RealView Compilation Tools(RVCT) v2.2中,内存地址的Thumb位不会被设置。假设你有

依赖于这样的行为的代码,请使用命令行选项--untyped_local_labels,强制汇编器不要设置被

引用的位于Thumb代码中的标号。

Thumb代码中的LDR伪指令

LDR in Thumb code

          你能够使用指令宽度说明符 .W 强制汇编器在ARMv6T2及以上的处理器上把Thumb代码中LDR

伪指令编码为32位长。即使马上数的值能使用一个16位的MOV指令载入,或存在一个在16位PC相

对LDR指令范围内的内存池,LDR.W总是产生一条32位的指令。

      未完待续。。。



ARM LDR伪指令使用方法具体解释的更多相关文章

  1. 转 -- ARM 中 LDR伪指令

    我们知道ARM CPU中有一条被广泛使用的指令LDR,它主要是用来从存储器(确切地说是地址空间)中装载数据到通用寄存器.但不论是ARMASM还是GNU ARM AS,都提供了一条与之同名的伪指令LDR ...

  2. ARM中LDR伪指令与LDR加载指令

    ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令. LDR伪指令的形式是“LDR Rn,=expr”.下面举一个例子来说明它的用法. COUNT EQU       0x4000310 ...

  3. ARM汇编中ldr伪指令和ldr指令(转载)

    转自:http://blog.csdn.net/ce123_zhouwei/article/details/7182756 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成, ...

  4. ARM7ldr指令与ldr伪指令

    ldr伪指令的第二个操作数之前有个=,意思是第一个操作书 = 第二个操作数,相当明了 核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text ...

  5. Js apply 方法 具体解释

    Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了 ...

  6. Format类及其子类功能和使用方法具体解释

    Format类及其子类功能和使用方法具体解释 1.   Format类结构: ·        java.lang.Object ·        java.text.Format ·         ...

  7. hbase-0.94安装方法具体解释

    先决条件:     1)java环境,须要安装java1.6以上版本号     2)hadoop环境.因为HBase架构是基于其它文件存储系统的,因此在分布式模式下安装Hadoop是必须的,可是,假设 ...

  8. ZooKeeper安装方法具体解释

    ZooKeeper安装方式分为两种,一种为单机模式.一个为集群模式,集群模式须要事先正确配置hadoop集群,安装方法參考hadoop-1.2.1安装方法具体解释 单机模式安装: 1.上传并解压zoo ...

  9. 模式识别 - libsvm的函数调用方法 具体解释

    libsvm的函数调用方法 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26261173 须要载入(load)SVM的 ...

随机推荐

  1. ios block使用

    BlockTest.h #import <Foundation/Foundation.h> typedef void (^didFinishBlock)(NSString *str); t ...

  2. Scala-Partial Functions(偏函数)

    如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...

  3. Gym Class(拓扑排序)

    Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  4. POJ 3114 Countries in War(强连通+最短路)

    POJ 3114 Countries in War 题目链接 题意:给定一个有向图.强连通分支内传送不须要花费,其它有一定花费.每次询问两点的最小花费 思路:强连通缩点后求最短路就可以 代码: #in ...

  5. android开发步步为营之65:解决ScrollView和ListView触摸事件onInterceptTouchEvent相互冲突问题

    近期项目里面有个需求,一个页面放了一个ScrollView,整个页面能够向上滚动,然后ScrollView里面又嵌套了一个ListView,ListView里面的数据也是能够上下滑动的,理论上List ...

  6. [Immutable + AngularJS] Use Immutable .List() for Angular array

    const stores = Immutable.List([ { name: 'Store42', position: { latitude: 61.45, longitude: 23.11, }, ...

  7. 【COCOS2DX-对28游戏开发】 Cocos2d-x-3c 道路设计 CocosBase CocosNet CocosWidget

    原文链接:http://blog.csdn.net/cocosviva/article/details/18970717 另一个比較不错的cocos2dx扩展库:https://github.com/ ...

  8. 8. 冒泡法排序和快速排序(基于openCV)

    一.前言 主要讲述冒泡法排序和快速排序的基本流程,并给出代码实现,亲测可用. 二.冒泡法排序 冒泡法排序主要是将相邻两个值比较,把小的向前冒泡,大的向后沉淀,时间复杂度为O(n2).主要思想如下: 分 ...

  9. Hacker(六)----黑客藏匿之地--系统进程

    windows系统中,进程是程序在系统中的依次执行活动.主要包括系统进程和程序进程两种. 凡是用于完成操作系统各种功能的各种进程都统称为系统进程: 而通过启动应用程序所产生的进程则统称为程序进程. 由 ...

  10. bootstrap 常用类名

    一. 常用类1.container居中的内容展示2.row  行内容显示3.col 列内容显示, 列必须在row 中xs 宽度小于768 ,sm宽度小于990 大于768 ,md 宽度大于990,小于 ...