arm程序的反汇编程序

发布者:czl55555最新更新时间:2020-01-02 来源: eefocus关键字:arm程序  反汇编程序 手机看文章 扫描二维码
随时随地手机看文章

这是汇编源文件:

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

这两行不是指令,而是数据。


关键字:arm程序  反汇编程序 引用地址:arm程序的反汇编程序

上一篇:ADS+AXD调试,配置H-JTAG(华恒2410)
下一篇:arm-linux-gnueabi和arm-linux-gnueabihf 的区别

推荐阅读最新更新时间:2024-11-13 19:07

ARM学习笔记13——LED驱动程序设计
首先我们要根据开发板原理图得到控制LED灯的引脚是哪个,我们现在以LED1为例,我们已经知道LED1由S5PV210的GPC1_3控制,因此我们按如下步骤进行: 第一步是配制S5PV210的GPC1_3为输出口; 第二步我们禁止GPC1_3的上、下拉电阻功能; 第三步就是控制GPC1_3输出高电平或低电平。 要想对GPC1进行配置,那我们需要知道其配置寄存器的地址,根据S5PV210的编程手册我们可以知道: GPC1的配置寄存器地址是:0xE0200080 GPC1数据寄存器地址是:0xE0200084 GPC1上、下拉控制寄存器地址是:0xE0200088 同样由S5PV210的编程手册得知
[单片机]
ARM汇编语言学习笔记(二)跑个灯程序以及.s文件分析
一、汇编语言怎么写 我们都知道,c语言可以写成c语言然后编译。那么汇编语言了? 汇编语言用汇编语言写,然后写出来为.s文件。所以我们只需要任意一款可以编写.s文件的编辑器就可以啦,例如:source insight、notepad等。 二、写一个试试 /* * 点亮LED1: gpf4 */ .text .global _start _start: /* 配置GPF4为输出引脚 * 把0x100写到地址0x56000050 */ ldr r1, =0x56000050 ldr r0, =0x100 /* mov r0, #0x100 */ str r0, /* 设置GPF4输出
[单片机]
<font color='red'>ARM</font>汇编语言学习笔记(二)跑个灯<font color='red'>程序</font>以及.s文件分析
移植Qt图形界面应用程序到S3C2440 arm开发板
1.进入qt已经写好的一个图形界面应用程序目录里,例如,我的应用程序目录是在/home/czd/qt_project/mp3player/ $ cd /home/czd/qt_project/mp3player/ 发现里面有个mp3player.pro文件 我们在上面已配置好的qt-embedded-linux环境下,编译后自动在/usr/local/目录下生成咯一个Trolltech目录,Trolltech/QtEmbedded-4.5.0-arm/bin/下可以看到qmake这个编译,在/home/czd/qt_project/mp3player/目录下执行下句: $/usr/local/Trolltech/QtEmbedde
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved