Chinaunix首页 | 论坛 | 博客
  • 博客访问: 314008
  • 博文数量: 40
  • 博客积分: 1155
  • 博客等级: 少尉
  • 技术积分: 1047
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-02 16:41
文章分类

全部博文(40)

文章存档

2012年(38)

2011年(2)

分类: 嵌入式

2012-04-02 00:49:01

              我们以一个小程序来学习如何分析反汇编程序
 
 
这是汇编源文件:
MCU:S3C2440(arm920T)
代码实现点亮个led小灯

.text
.global _start
_start:
        ldr r0,=0x56000010        @GPBCON
        mov r1,#0x00000400        @
        str r1,[r0]                @GPB5_out=01
       
        ldr r0,=0x56000014        @GPBDAT
        mov r1,#0x0
        str r1,[r0]                @GPBDAT[5]=0,len_off
main_loop:
        b        main_loop


反汇编文件:
led_on.bin:     file format binary

Disassembly of section .data:

00000000 <.data>:
   0:        e59f0014         ldr        r0, [pc, #20]        ; 0x1c
   4:        e3a01b01         mov        r1, #1024        ; 0x400
   8:        e5801000         str        r1, [r0]
   c:        e59f000c         ldr        r0, [pc, #12]        ; 0x20
  10:        e3a01000         mov        r1, #0        ; 0x0
  14:        e5801000         str        r1, [r0]
  18:        eafffffe         b        0x18
  1c:        56000010         undefined
  20:        56000014         undefined

接下来让我们分析下这小小的反汇编程序吧!
 
 
   0:        e59f0014         ldr        r0, [pc, #20]        ; 0x1c
这条指令就是把内存单元 pc+20 的值load 到r0 中,而根据ARM 架构指南所讲,pc 的值读取得时候是当前指令的地址 +8 ,所以就是把地址28 (也就是16进制的1c)的值load 到r0中,r0 现在变成了0x56000010.
   
   4:        e3a01b01         mov        r1, #1024        ; 0x400
这条指令是把1024(ARM汇编At&T语法要在立即数前加#), 也即是16进制的0x400 移到r1中。

   8:        e5801000         str        r1, [r0]
这个就是通过str 指令把r1内容存到r0 寄存器所指向的内存单元。 也就是把1024 存到0x56000000 中。

   c:        e59f000c         ldr        r0, [pc, #12]        ; 0x20
  10:        e3a01000         mov        r1, #0        ; 0x0
  14:        e5801000         str        r1, [r0]
这三条指令一样的道理

  18:        eafffffe         b        0x18
这个是死循环
  1c:        56000010         undefined
  20:        56000014         undefined
这两行不是指令,而是数据。
 
虽然这程序很简单,但对于菜鸟的我一开始是什么感觉都没有,在这里要感谢CU的朋友
moniskiller 是他的细心解说让我顿悟,哈哈
                                       
 
                                                                   LAY

 
阅读(5036) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~