ldr伪指令的第二个操作数之前有个=,意思是第一个操作书 = 第二个操作数,相当明了

核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text段里的内存地址)]这种基于PC的偏移量方式加载内存里的内容到寄存器

看下源代码和反汇编的结果就清楚了

伪指令用于大的常数:

源代码:

 top:
ldr r0,=
add r1,r2,r3
eor r1,r2,r3
eor r1,r2,r3
bottom:
b top

反汇编:

prebuilts/gcc/linux-x86/arm/arm-eabi-./bin$ ./arm-eabi-objdump -d test.o 

test.o:     file format elf32-littlearm

Disassembly of section .text:

 <top>:
: e59f000c ldr r0, [pc, #] ; 14 <bottom+0x4>
: e0821003 add r1, r2, r3
: e0221003 eor r1, r2, r3
c: e0221003 eor r1, r2, r3 <bottom>:
: eafffffa b <top>
: 00bc614e .word 0x00bc614e

伪指令用于标签:

源代码:

 top:
ldr r0,=bottom
add r1,r2,r3
eor r1,r2,r3
eor r1,r2,r3
bottom:
b top

反汇编:

prebuilts/gcc/linux-x86/arm/arm-eabi-./bin$ ./arm-eabi-objdump -d test.o 

test.o:     file format elf32-littlearm

Disassembly of section .text:

 <top>:
: e59f000c ldr r0, [pc, #] ; 14 <bottom+0x4>
: e0821003 add r1, r2, r3
: e0221003 eor r1, r2, r3
c: e0221003 eor r1, r2, r3 <bottom>:
: eafffffa b <top>
: .word 0x00000010

ldr指令用于常数:

源代码:

 top:
ldr r0,[r0]
add r1,r2,r3
eor r1,r2,r3
eor r1,r2,r3
bottom:
b top

反汇编:

prebuilts/gcc/linux-x86/arm/arm-eabi-./bin$ ./arm-eabi-objdump -d test.o 

test.o:     file format elf32-littlearm

Disassembly of section .text:

 <top>:
: e5900000 ldr r0, [r0]
: e0821003 add r1, r2, r3
: e0221003 eor r1, r2, r3
c: e0221003 eor r1, r2, r3 <bottom>:
: eafffffa b <top>

ldr指令用于标签:

源代码:

 top:
ldr r0,bottom
add r1,r2,r3
eor r1,r2,r3
eor r1,r2,r3
bottom:
b top

反汇编:

prebuilts/gcc/linux-x86/arm/arm-eabi-./bin$ ./arm-eabi-objdump -d test.o 

test.o:     file format elf32-littlearm

Disassembly of section .text:

 <top>:
: e59f0008 ldr r0, [pc, #] ; 10 <bottom>
: e0821003 add r1, r2, r3
: e0221003 eor r1, r2, r3
c: e0221003 eor r1, r2, r3 <bottom>:
: eafffffa b <top>

ARM7ldr指令与ldr伪指令的更多相关文章

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

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

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

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

  3. ARM LDR伪指令使用方法具体解释

    LDR伪指令 10.45 LDR pseudo-instruction   功能:把一个32位马上数或一个32位的内存地址载入到一个寄存器中. 注意:这里描写叙述的是LDR伪指令,而不是LDR指令   ...

  4. 转 -- ARM 中 LDR伪指令

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

  5. 8.adr与ldr伪指令的区别

    ldr和adr都是伪指令,区别是ldr是长加载.adr是短加载. 重点:adr指令加载符号地址,加载的是运行时地址: ldr指令加载符号地址时,加载的是链接地址.

  6. LDR伪指令与ADR伪指令的区别

    测试代码 ldr r0, _start adr r0, _start ldr r0, =_start nop mov pc, lr _start: nop 设置代码的起始地址为 0x0c008000, ...

  7. 汇编指令:ldr和str,ldm和stm的区别

    (1)LDR:L表示LOAD,LOAD的含义应该理解为:Load from memory into register.下面这条语句就说明的很清楚: LDR   R1,     [R2] R1<— ...

  8. arm汇编指令--str ldr

    STR :把寄存器中的字保存到存储器(寄存器到存储器) 示例: STR R0,[R1],#8             :将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1.STR ...

  9. LDR详解

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

随机推荐

  1. 一些达成共识的JavaScript编码风格约定

    如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...

  2. java在线截图---通过指定的URL对网站截图

    如何以java实现网页截图技术 http://wenku.baidu.com/view/a7a8b6d076eeaeaad1f3305d.html http://blog.csdn.net/cping ...

  3. DTCMS清除&emsp;&amp;

    DTcms.Common\Utils.cs #region 清除HTML标记 public static string DropHTML(string Htmlstring) 中的 Htmlstrin ...

  4. StringBuilder的Append()方法会比+=效率高

    StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 id from " + databa ...

  5. 在Tomcat中部署Java Web应用程序

    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署      静态部署指的是我们在服务器启动之前部 ...

  6. asp.net 后台 修改 javascript 变量

    Util.JSSetChange(Page, GetType()); public static void JSSetChange(Page page, Type cstype) { // Defin ...

  7. IO笔记

    Java流操作有关的类或接口: Java流类图结构: 1.文件操作时,注意要使用File.separator来代替/分隔符实现跨平台 2.RandomAccessFile类并不是流体系中的一员,但常用 ...

  8. IE10用video标签播放本地mp4文件失败的解决办法

    1. 首先用“格式工厂”将要播放的视频文件按照“AVC高质量与大小”转换为要求格式的mp4文件: 2. 设置IIS7.5,添加mp4的MIME类型,步骤如下: 1.打开IIS管理器(运行inetmgr ...

  9. (转)《深入理解java虚拟机》学习笔记6——类加载机制

    Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程. 在加载阶段,java虚拟机需要完成以下 ...

  10. nginx+php-fpm 502 bad gateway

    输出日志配置: http://blog.csdn.net/wzy_1988/article/details/8486888 解决方案: http://www.cnblogs.com/jackluo/p ...