ARM7ldr指令与ldr伪指令
2015-12-10 10:44
369 查看
ldr伪指令的第二个操作数之前有个=,意思是第一个操作书 = 第二个操作数,相当明了
核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text段里的内存地址)]这种基于PC的偏移量方式加载内存里的内容到寄存器
看下源代码和反汇编的结果就清楚了
伪指令用于大的常数:
源代码:
反汇编:
伪指令用于标签:
源代码:
反汇编:
ldr指令用于常数:
源代码:
反汇编:
ldr指令用于标签:
源代码:
反汇编:
核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text段里的内存地址)]这种基于PC的偏移量方式加载内存里的内容到寄存器
看下源代码和反汇编的结果就清楚了
伪指令用于大的常数:
源代码:
top: ldr r0,=12345678 add r1,r2,r3 eor r1,r2,r3 eor r1,r2,r3 bottom: 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
伪指令用于标签:
源代码:
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-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指令用于常数:
源代码:
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-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指令用于标签:
源代码:
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-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>
相关文章推荐
- Linux上Python的安装升级
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- linux内存占用问题
- Python第三方库使用 —— PIL
- DIV+CSS实操六:经管系网页添加导航栏下拉菜单
- 关于Fragment 不响应onActivityResult的情况分析
- Assembly x64 Intro - Stack frame layout on x86-64
- HDU 2064 汉诺塔III【递推】
- cocos2d-x3.0 相对布局(一)
- intellij idea exclude from compile后怎么加回来
- Android 自制的一个简单的心电图pulseview
- ubuntu没有进入图形界面解决办法
- ExecuteNonQuery引发了System.ArgumentException类型异常
- 遍历电脑下面所有文件--递归
- SqlServer数据库实现C#中的split功能
- 异或运算^
- 两种常用的序列化
- .exe 不包含适合入口点的静态“Main”方法
- SqlServer2008启动不了的问题
- 浅试txt文件与xml文件互相转换