ldr指令代码
来源:互联网 发布:悦诗风吟洗面奶知乎 编辑:程序博客网 时间:2024/06/05 04:09
.equ STACK_BASE, 0x0c002000
.equ STACK_SIZE, 0x00001000
.text
ldr sp, = STACK_BASE
ldr sl, = STACK_BASE - STACK_SIZE
ldr pc, = entry
汇编结果为:
demo.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <.text>:
0: e59fd004 ldr sp, [pc, #4] ; c <.text+0xc>
4: e59fa004 ldr sl, [pc, #4] ; 10 <.text+0x10>
8: e59ff004 ldr pc, [pc, #4] ; 14 <.text+0x14>
c: 0c002000 stceq 0, cr2, [r0]
10: 0c001000 stceq 0, cr1, [r0]
14: 00000000 andeq r0, r0, r0
Disassembly of section .data:
其中第二列对应的就是arm指令的二进制代码
ldr指令所对应的32位二进制代码如下:
.equ STACK_SIZE, 0x00001000
.text
ldr sp, = STACK_BASE
ldr sl, = STACK_BASE - STACK_SIZE
ldr pc, = entry
汇编结果为:
demo.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <.text>:
0: e59fd004 ldr sp, [pc, #4] ; c <.text+0xc>
4: e59fa004 ldr sl, [pc, #4] ; 10 <.text+0x10>
8: e59ff004 ldr pc, [pc, #4] ; 14 <.text+0x14>
c: 0c002000 stceq 0, cr2, [r0]
10: 0c001000 stceq 0, cr1, [r0]
14: 00000000 andeq r0, r0, r0
Disassembly of section .data:
其中第二列对应的就是arm指令的二进制代码
ldr指令所对应的32位二进制代码如下:
cond
0 1
I
P
U
0
W
1
Rn
Rd
addr_mode
31 28 27 26 25 24 23 22 21 20 19 1615 12 0
[31:28]:为条件码,默认情况下使用的条件码是AL,对应的二进制是1110
I P U W 以及addr_mode决定了地址模式
如例中,从反汇编中可以看出该地址模式为<Rn,+/-offset12>,因此对应的[I:P]为[0:1]
[27:24]:0101
U:如果U=1,表示是正偏移,即Rn+offset12,否则为负偏移
W:如果W=1,表示是字节传递,仅传送该地址的低8位,否则是字传递
[23:20]:[1001]
Rn:源寄存器 1111:15号寄存器 即PC
Rd:目的寄存器 1101:13号寄存器 即SP
所以e59ff004的含义就明确了
- ldr指令代码
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- LDR指令
- ldr和ldr伪指令
- ARM伪指令ldr&adr使用 代码重定位实现
- LDR指令和LDR伪指令区别
- LDR指令和LDR伪指令
- LDR指令和LDR伪指令
- LDR指令和LDR伪指令区别
- LDR伪指令与LDR加载指令
- arm汇编中的跳转指令
- TOMCAT主目录与虚拟目录
- 使用OllyDBG逆向程序技术启用应用程序不可用菜单
- squid官方faq
- 试用Bakefile(1)
- ldr指令代码
- Linux:安装Tomcat服务器,开发JSP
- 容错输入
- 最近招了几个新员工,大家有什么好的管理经验,分享一下
- Linux下安装Tomcat5.5,并进行优化
- Java对象排序的3种实现方法
- [转]类似Windows的开源操作系统 - ReactOS介绍
- 母版页
- Linux系统下jdk1.5与tomcat5.5的安装方法