历史上的今天
今天是:2025年01月02日(星期四)
2020年01月02日 | arm程序的反汇编程序
2020-01-02 来源:eefocus
这是汇编源文件:
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
这两行不是指令,而是数据。
史海拾趣
|
现代汽车广泛采用的汽车防抱制动系统(Anti-lock Brake System,ABS),具有自动控制车轮的滑移程度防止车轮抱死,获得最佳制动效能的功能。现代电子式防抱死控制系统是具有先进的电子技术和机械技术相结合复杂机电一体化系统,由于其工作灵敏、控 ...… 查看全部问答> |
|
一般的内存公司都会列这么几种computing memory,consumer memory,graphics memory,mobile memory,这四项是什么意思啊,如果是做ARM的话应该用哪种啊 , 另外如果是换了一个SDRAM的话,除了要修改bootloader以外,还要修改什么啊,linux下的驱动要修改吗… 查看全部问答> |
|
我用友善之臂Micro2440+VGA显示模块做视频播放,同时需要一个视频字符叠加的功能,用Wince怎么做,有没有现成的例子。如果用linux又应该怎么做。谢谢了… 查看全部问答> |
|
请教各位大侠,我加入的驱动出现excluded from build,听说是说build的时候不会把驱动文件包含进去。 相当于从project中删除了。请问怎么能把它加入进去呢?去掉excluded from build。 谢谢!没分了啊!… 查看全部问答> |
|
TMS320VC33 DSP处理器 串口中断程序 谢谢大害帮忙 我是做测试的,现在要做一个简单的DSP串口同PC机通信的程序,芯片就是TMS320VC33的,我们工作的最终要求就是PC机通过串口向DSP发送一系列两到三位整数,由DSP接收并排序后返回给PC,串口通信已会设置,排序等也有思路,也有例程,但是就是没有关于串口中断 ...… 查看全部问答> |
|
cc2430休眠醒来后,定时器1 总是进中断,请问是什么原因? 我首先开启T1定时器,打算定时1分钟,一分钟后T1产生中断。紧接着在我打开定时器后就进入PM2模式休眠,不管休眠时间长短,休眠一醒,T1就进中断,就算休眠几秒,醒来后T1也还是立即进中断, 在休眠之前把关闭定时器,休眠之后再开定时器,这样T1也还 ...… 查看全部问答> |
|
写APP的时候,RAM用4096B,但我写了没反应。 于是先自己随便写了一个4096B的APP.BIN,发现写到RAM430B时候就停止了,因为还没有写满4096,所以也就没有往FLASH里写。后来把接受RAM变成128B,倒是能进到写FLASH那一步函数里,但是callback函 ...… 查看全部问答> |
|
由于项目需要现求购一套hi3512开发板,如果能销售的和能转让的请联系 QQ305080247 email:305080247@qq .com… 查看全部问答> |




