码迷,mamicode.com
首页 > 其他好文 > 详细

ARM7ldr指令与ldr伪指令

时间:2015-12-10 11:17:09      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

伪指令用于大的常数:

 源代码:

1 top:
2 ldr r0,=12345678
3 add r1,r2,r3
4 eor r1,r2,r3
5 eor r1,r2,r3
6 bottom:
7 b top

反汇编:

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

test.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <top>:
   0:    e59f000c     ldr    r0, [pc, #12]    ; 14 <bottom+0x4>
   4:    e0821003     add    r1, r2, r3
   8:    e0221003     eor    r1, r2, r3
   c:    e0221003     eor    r1, r2, r3

00000010 <bottom>:
  10:    eafffffa     b    0 <top>
  14:    00bc614e     .word    0x00bc614e

 

伪指令用于标签:

源代码:

1 top:
2 ldr r0,=bottom
3 add r1,r2,r3
4 eor r1,r2,r3
5 eor r1,r2,r3
6 bottom:
7 b top

反汇编:

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

test.o:     file format elf32-littlearm


Disassembly of section .text:

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

 

ldr指令用于常数:

 源代码:

1 top:
2 ldr r0,[r0]
3 add r1,r2,r3
4 eor r1,r2,r3
5 eor r1,r2,r3
6 bottom:
7 b top

反汇编:

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

test.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <top>:
   0:    e5900000     ldr    r0, [r0]
   4:    e0821003     add    r1, r2, r3
   8:    e0221003     eor    r1, r2, r3
   c:    e0221003     eor    r1, r2, r3

00000010 <bottom>:
  10:    eafffffa     b    0 <top>

ldr指令用于标签:

源代码:

1 top:
2 ldr r0,bottom
3 add r1,r2,r3
4 eor r1,r2,r3
5 eor r1,r2,r3
6 bottom:
7 b top

反汇编:

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

test.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <top>:
   0:    e59f0008     ldr    r0, [pc, #8]    ; 10 <bottom>
   4:    e0821003     add    r1, r2, r3
   8:    e0221003     eor    r1, r2, r3
   c:    e0221003     eor    r1, r2, r3

00000010 <bottom>:
  10:    eafffffa     b    0 <top>

 

ARM7ldr指令与ldr伪指令

标签:

原文地址:http://www.cnblogs.com/cascle/p/5035207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!