linux生成反汇编命令
arm–linux-objdump -D uboot >uboot.dis
一. arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码
二. 常用选项:
1.-b bfdname 指定目标码格式
2.—disassemble或者-d 反汇编可执行段
3.—dissassemble-all或者-D 反汇编所有段
4.-EB,-EL指定字节序
5.—file-headers或者-f 显示文件的整体头部摘要信息
6.—section-headers,–headers或者-h 显示目标文件中各个段的头部摘要信
7.—info 或者-I 显示支持的目标文件格式和CPU架构
8.—section=name或者-j name显示指定section 的信息
9.—architecture=machine或者-m machine 指定反汇编目标文件时使用的架构

boot_elf: file format elf32-littlearm
Disassembly of section .text:
33f80084
: //sdram 表格存放着各个寄存器地址
33f80084: .word 0x
33f80088: 00000700 .word 0x00000700
33f8008c: 00000700 .word 0x00000700
33f80090: 00000700 .word 0x00000700
33f80094: 00000700 .word 0x00000700
33f80098: 00000700 .word 0x00000700
33f8009c: 00000700 .word 0x00000700
33f800a0: 00018005 .word 0x00018005
33f800a4: 00018005 .word 0x00018005
33f800a8: 008c04f4 .word 0x008c04f4
33f800ac: 000000b1 .word 0x000000b1
33f800b0: 00000030 .word 0x00000030
33f800b4: 00000030 .word 0x00000030
33f800b8: 4c000014 .word 0x4c000014
33f800bc: 4c000004 .word 0x4c000004
33f800c0: 0005c011 .word 0x0005c011
33f800c4: 33f80000 .word 0x33f80000
33f800c8: 33f808b8 .word 0x33f808b8
33f800cc: 33f80080 .word 0x33f80080
33f800d0: 33f80714 .word 0x33f80714
/ 判断Nor还是Nand/
33f800d4 :
33f800d4: e59f201c ldr r2, [pc, #28] ; 33f800f8
//r2 = 0x;
33f800d8: e3a00000 mov r0, #0 ; //r0=0
33f800dc: e ldr r1, [r0]//r1=0
33f800e0: e str r2, [r0]//r0=0x
33f800e4: e ldr r3, [r0]//r3=0x
33f800e8: e cmp r3, r2
33f800ec: addne r0, r0, #1 ; 0x1 // 如果cmp 不等于,则相加置i
33f800f0: 0 streq r1, [r0] //如果相等,则为0
33f800f4: e12fff1e bx lr
33f800f8: .word 0x //函数调用的,最后用bx lr 返回
/* 函数返回和异常返回都可能用到了BX LR
函数调用的最后使用BX LR 返回,LR对应的是BL functionName的下一条指令的地址(当然如果函数中再用到了BL指令,
需要先push LR,等返回了以后再POP LR)
异常返回如果使用BX LR的形式,LR的值只不过定义了一下返回时从哪个堆栈出栈(PSP or MSP),已经没有地址的意义
了,具体返回地址都是根据选择的堆栈弹出 的PC值决定的。
如果果LR的值不是0xffffxxxx类型的,则PC跳至LR[31:1],而根据LR[0:0]则决定跳转后处理器进入的状态。
如果LR[0:0]=1,则进入Thumb状态,否则进入ARM状态。 在CM3中不支持ARM状态,所以LR[0:0]必须是1——也就是LR必须是奇数
在CM3中,如果以0xffff开头则有特殊的含义,命名为EXC_RETURN,它指示正在从异常返回,并决定返回的方式,
在《Cortex-M3权威指南》中有重点介绍
*/
33f800fc
:
33f800fc: e59f301c ldr r3, [pc, #28] ; 33f80120
//将r3 =33f808b8 :
33f80100: e59f101c ldr r1, [pc, #28] ; 33f80124
33f80104: e cmp r3, r1
33f80108: 212fff1e bxcs lr //cs:大于/等于
33f8010c: e3a02000 mov r2, #0 ; 0x0 //r2 =0
33f80110: e str r2, [r3], #4 //[r2]->[r3] r3=r3+4
33f80114: e cmp r3, r1
33f80118: 3afffffc bcc 33f80110
//cc:小于
33f8011c: e12fff1e bx lr
33f80120: 33f808b8 .word 0x33f808b8
33f80124: 33f808bc .word 0x33f808bc //由于只有一个bss 初始化为0/或未初始化
33f80128
:
33f80128: e3a0344e mov r3, # ; 0x4e000000
33f8012c: e3a02c01 mov r2, #256 ; 0x100 //NFCONF = (TACLS<<12) | (TWRPH0<<8) | (TWRPH1<<4);
33f80130: e3a01013 mov r1, #19 ; 0x13 //NFCONT = (1<<4)|(1<<1)|(1<<0);
33f80134: e str r2, [r3]
33f80138: e str r1, [r3, #4] // ;将r1中的值存到r3+4所指定的地址中
33f8013c: e12fff1e bx lr
33f80140
:
33f80140: e3a0244e mov r2, # ; 0x4e000000
33f80144: e ldr r3, [r2, #4]
33f80148: e3c33002 bic r3, r3, #2 ; 0x2 // r3 & ~1==>置0
/ BIC指令将Rn 的值与操作数operand2 的反码按位逻辑"与",结果存放到目的寄存器Rd 中。
指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。/
33f8014c: e str r3, [r2, #4]
33f80150: e12fff1e bx lr
33f80154
:
33f80154: e3a0244e mov r2, # ; // 错误的:[r2]=0x4e000000 ,因为是复杂立即数,伪汇编指令,应该写入地址才对 r2=0x4e000000
33f80158: e ldr r3, [r2, #4] // [r2+4]->[r3]
33f8015c: e orr r3, r3, #2 ; 0x2
/ ORR{cond}{S} Rd,Rn,operand2 ORR指令将操作数operand2 与Rn 的值按位逻辑"或",结果存放到目的寄存器Rd 中
ORR R0,R0,#0x0F ;R0=R0|0x0F,将R0最低4位置1,其余位不变/
33f80160: e str r3, [r2, #4] // [r3]->[r2+4]
33f80164: e12fff1e bx lr
———————???————————————–
33f80168
:
33f80168: e24dd008 sub sp, sp, #8 ; 0x8 // sp 寄存器的值减 8,即向下移动 8 个字节 ??这样的作用?
33f8016c: e3a0344e mov r3, # ; 0x4e000000
33f80170: e3a02000 mov r2, #0 ; 0x0
33f80174: e5c30008 strb r0, [r3, #8] //[r0] -> [r3+8]
/ STRB指令用于从源寄存器中将一个8位的字节数据传送到存储器中。该字节数据为源寄存器中的低8位。
解释:STR R0,[R1],#8 ;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。
STR R0,[R1,#8] ;将R0中的字数据写入以R1+8为地址的存储器中。/
33f80178: e58d2004 str r2, [sp, #4]
33f8017c: e59d3004 ldr r3, [sp, #4]
33f80180: e cmp r3, #9 ; 0x9
33f80184: ca000005 bgt 33f801a0
33f80188: e59d3004 ldr r3, [sp, #4]
33f8018c: e add r3, r3, #1 ; 0x1
33f80190: e58d3004 str r3, [sp, #4]
33f80194: e59d2004 ldr r2, [sp, #4]
33f80198: e cmp r2, #9 ; 0x9
33f8019c: dafffff9 ble 33f80188
33f801a0: e28dd008 add sp, sp, #8 ; 0x8
33f801a4: e12fff1e bx lr
——————-???——————————————–
33f801a8
:
33f801a8: e20010ff and r1, r0, #255 ; 0xff
33f801ac: e24dd008 sub sp, sp, #8 ; 0x8
33f801b0: e3a0344e mov r3, # ; 0x4e000000
33f801b4: e3a02000 mov r2, #0 ; 0x0
33f801b8: e5c3100c strb r1, [r3, #12]
33f801bc: e58d2004 str r2, [sp, #4]
33f801c0: e59d3004 ldr r3, [sp, #4]
33f801c4: e1a01a80 lsl r1, r0, #21
33f801c8: e cmp r3, #9 ; 0x9
33f801cc: e1a01aa1 lsr r1, r1, #21
33f801d0: e1a005a0 lsr r0, r0, #11
33f801d4: ca000005 bgt 33f801f0
33f801d8: e59d3004 ldr r3, [sp, #4]
33f801dc: e add r3, r3, #1 ; 0x1
33f801e0: e58d3004 str r3, [sp, #4]
33f801e4: e59d2004 ldr r2, [sp, #4]
33f801e8: e cmp r2, #9 ; 0x9
33f801ec: dafffff9 ble 33f801d8
33f801f0: e3a0344e mov r3, # ; 0x4e000000
33f801f4: e1a01421 lsr r1, r1, #8
33f801f8: e3a02000 mov r2, #0 ; 0x0
33f801fc: e5c3100c strb r1, [r3, #12]
33f80200: e58d2004 str r2, [sp, #4]
33f80204: e59d3004 ldr r3, [sp, #4]
33f80208: e cmp r3, #9 ; 0x9
33f8020c: ca000005 bgt 33f80228
33f80210: e59d3004 ldr r3, [sp, #4]
33f80214: e add r3, r3, #1 ; 0x1
33f80218: e58d3004 str r3, [sp, #4]
33f8021c: e59d2004 ldr r2, [sp, #4]
33f80220: e cmp r2, #9 ; 0x9
33f80224: dafffff9 ble 33f80210
33f80228: e3a0344e mov r3, # ; 0x4e000000
33f8022c: e20010ff and r1, r0, #255 ; 0xff
33f80230: e3a02000 mov r2, #0 ; 0x0
33f80234: e5c3100c strb r1, [r3, #12]
33f80238: e58d2004 str r2, [sp, #4]
33f8023c: e59d3004 ldr r3, [sp, #4]
33f80240: e cmp r3, #9 ; 0x9
33f80244: ca000005 bgt 33f80260
33f80248: e59d3004 ldr r3, [sp, #4]
33f8024c: e add r3, r3, #1 ; 0x1
33f80250: e58d3004 str r3, [sp, #4]
33f80254: e59d2004 ldr r2, [sp, #4]
33f80258: e cmp r2, #9 ; 0x9
33f8025c: dafffff9 ble 33f80248
33f80260: e1a03420 lsr r3, r0, #8
33f80264: e20330ff and r3, r3, #255 ; 0xff
33f80268: e3a0244e mov r2, # ; 0x4e000000
33f8026c: e3a01000 mov r1, #0 ; 0x0
33f80270: e5c2300c strb r3, [r2, #12]
33f80274: e58d1004 str r1, [sp, #4]
33f80278: e59d3004 ldr r3, [sp, #4]
33f8027c: e cmp r3, #9 ; 0x9
33f80280: ca000005 bgt 33f8029c
33f80284: e59d3004 ldr r3, [sp, #4]
33f80288: e add r3, r3, #1 ; 0x1
33f8028c: e58d3004 str r3, [sp, #4]
33f80290: e59d2004 ldr r2, [sp, #4]
33f80294: e cmp r2, #9 ; 0x9
33f80298: dafffff9 ble 33f80284
33f8029c: e3a0344e mov r3, # ; 0x4e000000
33f802a0: e1a01820 lsr r1, r0, #16
33f802a4: e3a02000 mov r2, #0 ; 0x0
33f802a8: e5c3100c strb r1, [r3, #12]
33f802ac: e58d2004 str r2, [sp, #4]
33f802b0: e59d3004 ldr r3, [sp, #4]
33f802b4: e cmp r3, #9 ; 0x9
33f802b8: ca000005 bgt 33f802d4
33f802bc: e59d3004 ldr r3, [sp, #4]
33f802c0: e add r3, r3, #1 ; 0x1
33f802c4: e58d3004 str r3, [sp, #4]
33f802c8: e59d2004 ldr r2, [sp, #4]
33f802cc: e cmp r2, #9 ; 0x9
33f802d0: dafffff9 ble 33f802bc
33f802d4: e28dd008 add sp, sp, #8 ; 0x8
33f802d8: e12fff1e bx lr
33f802dc
:
33f802dc: e3a0244e mov r2, # ; 0x4e000000
33f802e0: e5d23020 ldrb r3, [r2, #32]
33f802e4: e tst r3, #1 ; 0x1
33f802e8: 0afffffc beq 33f802e0
33f802ec: e12fff1e bx lr
33f802f0
:
33f802f0: e3a0344e mov r3, # ; 0x4e000000
33f802f4: e5d30010 ldrb r0, [r3, #16]
33f802f8: e12fff1e bx lr
33f802fc
:
33f802fc: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
33f80300: e3a0c44e mov ip, # ; 0x4e000000
33f80304: e59c3004 ldr r3, [ip, #4]
33f80308: e3a05000 mov r5, #0 ; 0x0
33f8030c: e1a0a002 mov sl, r2
33f80310: e24dd014 sub sp, sp, #20 ; 0x14
33f80314: e3c33002 bic r3, r3, #2 ; 0x2
33f80318: e1a07a80 lsl r7, r0, #21
33f8031c: e3a09e7f mov r9, #2032 ; 0x7f0
33f80320: ea cmp r5, sl
33f80324: e1a08000 mov r8, r0
33f80328: e58c3004 str r3, [ip, #4]
33f8032c: e58d1004 str r1, [sp, #4]
33f80330: e1a07aa7 lsr r7, r7, #21
33f80334: e1a0400c mov r4, ip
33f80338: ef add r9, r9, #15 ; 0xf
33f8033c: e1a06005 mov r6, r5
33f80340: e3a0b030 mov fp, #48 ; 0x30
33f80344: 2a00002b bcs 33f803f8
33f80348: e5c46008 strb r6, [r4, #8]
33f8034c: e58d600c str r6, [sp, #12]
33f80350: e59d300c ldr r3, [sp, #12]
33f80354: e cmp r3, #9 ; 0x9
33f80358: ca000005 bgt 33f80374
33f8035c: e59d300c ldr r3, [sp, #12]
33f80360: e add r3, r3, #1 ; 0x1
33f80364: e58d300c str r3, [sp, #12]
33f80368: e59d200c ldr r2, [sp, #12]
33f8036c: e cmp r2, #9 ; 0x9
33f80370: dafffff9 ble 33f8035c
33f80374: e1a00008 mov r0, r8
33f80378: ebffff8a bl 33f801a8
33f8037c: e5c4b008 strb fp, [r4, #8]
33f80380: e58d600c str r6, [sp, #12]
33f80384: e59d300c ldr r3, [sp, #12]
33f80388: e cmp r3, #9 ; 0x9
33f8038c: ca000005 bgt 33f803a8
33f80390: e59d300c ldr r3, [sp, #12]
33f80394: e add r3, r3, #1 ; 0x1
33f80398: e58d300c str r3, [sp, #12]
33f8039c: e59d200c ldr r2, [sp, #12]
33f803a0: e cmp r2, #9 ; 0x9
33f803a4: dafffff9 ble 33f80390
33f803a8: e5d43020 ldrb r3, [r4, #32]
33f803ac: e tst r3, #1 ; 0x1
33f803b0: 0afffffc beq 33f803a8
33f803b4: e1a02007 mov r2, r7
33f803b8: e5d43010 ldrb r3, [r4, #16]
33f803bc: e59d1004 ldr r1, [sp, #4]
33f803c0: e add r2, r2, #1 ; 0x1
33f803c4: e7c13005 strb r3, [r1, r5]
33f803c8: e add r5, r5, #1 ; 0x1
33f803cc: e cmp r2, r9
33f803d0: c3a03000 movgt r3, #0 ; 0x0
33f803d4: d3a03001 movle r3, #1 ; 0x1
33f803d8: e15a0005 cmp sl, r5
33f803dc: 93a03000 movls r3, #0 ; 0x0
33f803e0: e cmp r3, #0 ; 0x0
33f803e4: e add r8, r8, #1 ; 0x1
33f803e8: e3a07000 mov r7, #0 ; 0x0
33f803ec: 1afffff1 bne 33f803b8
33f803f0: ea cmp r5, sl
33f803f4: 3affffd3 bcc 33f80348
33f803f8: e3a0244e mov r2, # ; 0x4e000000
33f803fc: e ldr r3, [r2, #4]
33f80400: e orr r3, r3, #2 ; 0x2
33f80404: e str r3, [r2, #4]
33f80408: e28dd014 add sp, sp, #20 ; 0x14
33f8040c: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr}
33f80410: e12fff1e bx lr
33f80414
:
33f80414: e59fc060 ldr ip, [pc, #96] ; 33f8047c
33f80418: e92d00f0 push {r4, r5, r6, r7}
33f8041c: e3a06000 mov r6, #0 ; 0x0
33f80420: e ldr r7, [r6]
33f80424: e586c000 str ip, [r6]
33f80428: e ldr r3, [r6]
33f8042c: ec cmp r3, ip
33f80430: e1a05000 mov r5, r0
33f80434: e1a04001 mov r4, r1
33f80438: e1a0c002 mov ip, r2
33f8043c: 0a00000b beq 33f80470
33f80440: e cmp r2, r6
33f80444: 11a02006 movne r2, r6
33f80448: 11a01002 movne r1, r2
33f8044c: 0a000005 beq 33f80468
33f80450: e add r2, r2, #1 ; 0x1
33f80454: e7d53001 ldrb r3, [r5, r1]
33f80458: e15c0002 cmp ip, r2
33f8045c: e7c43001 strb r3, [r4, r1]
33f80460: e1a01002 mov r1, r2
33f80464: 8afffff9 bhi 33f80450
33f80468: e8bd00f0 pop {r4, r5, r6, r7}
33f8046c: e12fff1e bx lr
33f80470: e str r7, [r6]
33f80474: e8bd00f0 pop {r4, r5, r6, r7}
33f80478: eaffff9f b 33f802fc
33f8047c: .word 0x
33f80480
:
33f80480: e3a01456 mov r1, # ; 0x
33f80484: e ldr r3, [r1, #112]
33f80488: e38330a0 orr r3, r3, #160 ; 0xa0
33f8048c: e str r3, [r1, #112]
33f80490: e3a00205 mov r0, # ; 0x
33f80494: e3a0200c mov r2, #12 ; 0xc
33f80498: e3a03003 mov r3, #3 ; 0x3
33f8049c: e str r2, [r1, #120]
33f804a0: e3a0c000 mov ip, #0 ; 0x0
33f804a4: e str r3, [r0]
33f804a8: e sub r2, r2, #7 ; 0x7
33f804ac: e add r3, r3, #23 ; 0x17
33f804b0: e str r2, [r0, #4]
33f804b4: e580c008 str ip, [r0, #8]
33f804b8: e580c00c str ip, [r0, #12]
33f804bc: e str r3, [r0, #40]
33f804c0: e12fff1e bx lr
33f805b0
:
33f805b0: e3a0c203 mov ip, # ; 0x
33f805b4: e59f2038 ldr r2, [pc, #56] ; 33f805f4
33f805b8: e52d4004 push {r4} ; (str r4, [sp, #-4]!)
33f805bc: e28c1c01 add r1, ip, #256 ; 0x100
33f805c0: e3a00000 mov r0, #0 ; 0x0
33f805c4: e28c4f45 add r4, ip, #276 ; 0x114
33f805c8: e3a03355 mov r3, # ; 0x
33f805cc: e str r0, [r1, #16]
33f805d0: e add r3, r3, # ; 0x
33f805d4: e str r4, [r2]
33f805d8: e3a02005 mov r2, #5 ; 0x5
33f805dc: e str r3, [r1, #4]
33f805e0: e58c2100 str r2, [ip, #256]
33f805e4: e str r0, [r1, #8]
33f805e8: ec str r0, [r1, #12]
33f805ec: e8bd0010 pop {r4}
33f805f0: e12fff1e bx lr
33f805f4: 33f808b8 .word 0x33f808b8
33f805f8
:
33f805f8: e59f002c ldr r0, [pc, #44] ; 33f8062c
33f805fc: e ldr r1, [r0]
33f80600: e3a03203 mov r3, # ; 0x
33f80604: ec str r3, [r1, #12]
33f80608: e3a02301 mov r2, # ; 0x
33f8060c: e add r3, r3, # ; 0x
33f80610: e str r2, [r1, #8]
33f80614: e281c010 add ip, r1, #16 ; 0x10
33f80618: e add r3, r3, # ; 0x
33f8061c: e3a02004 mov r2, #4 ; 0x4
33f80620: e580c000 str ip, [r0]
33f80624: ec stm r1, {r2, r3}
33f80628: e12fff1e bx lr
33f8062c: 33f808b8 .word 0x33f808b8
33f80674
:
33f80674: e5d03000 ldrb r3, [r0]
33f80678: e cmp r3, #0 ; 0x0
33f8067c: e52d4004 push {r4} ; (str r4, [sp, #-4]!)
33f80680: 03a02003 moveq r2, #3 ; 0x3
33f80684: 0a000006 beq 33f806a4
33f80688: e3a02000 mov r2, #0 ; 0x0
33f8068c: e add r2, r2, #1 ; 0x1
33f80690: e7d03002 ldrb r3, [r0, r2]
33f80694: e cmp r3, #0 ; 0x0
33f80698: 1afffffb bne 33f8068c
33f8069c: ec add r3, r2, #12 ; 0xc
33f806a0: e1a02123 lsr r2, r3, #2
33f806a4: e59f4048 ldr r4, [pc, #72] ; 33f806f4
33f806a8: e3a03315 mov r3, # ; 0x
33f806ac: e594c000 ldr ip, [r4]
33f806b0: e add r3, r3, # ; 0x
33f806b4: e add r3, r3, #9 ; 0x9
33f806b8: e1a0100c mov r1, ip
33f806bc: e58c3004 str r3, [ip, #4]
33f806c0: e str r2, [r1], #8
33f806c4: e3a02000 mov r2, #0 ; 0x0
33f806c8: e7d03002 ldrb r3, [r0, r2]
33f806cc: e cmp r3, #0 ; 0x0
33f806d0: e7c13002 strb r3, [r1, r2]
33f806d4: e add r2, r2, #1 ; 0x1
33f806d8: 1afffffa bne 33f806c8
33f806dc: e59c3000 ldr r3, [ip]
33f806e0: e1a03103 lsl r3, r3, #2
33f806e4: e08c3003 add r3, ip, r3
33f806e8: e str r3, [r4]
33f806ec: e8bd0010 pop {r4}
33f806f0: e12fff1e bx lr
33f806f4: 33f808b8 .word 0x33f808b8
33f806f8
:
33f806f8: e59f3010 ldr r3, [pc, #16] ; 33f80710
33f806fc: e ldr r1, [r3]
33f80700: e3a02000 mov r2, #0 ; 0x0
33f80704: e str r2, [r1]
33f80708: e str r2, [r1, #4]
33f8070c: e12fff1e bx lr
33f80710: 33f808b8 .word 0x33f808b8
Disassembly of section .comment:
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202941.html原文链接:https://javaforall.net
