历史上的今天
返回首页

历史上的今天

今天是: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

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


推荐阅读

史海拾趣

Connective Peripherals Pte Ltd公司的发展小趣事

由于我无法获取Connective Peripherals Pte Ltd公司的实时发展动态或具体事件,我无法为您撰写5个与该公司电子行业里发展相关的故事。然而,我可以为您概括性地描述Connective Peripherals Pte Ltd公司在电子行业中的发展概况,以便您了解该公司的基本情况和行业地位。

Connective Peripherals Pte Ltd自2016年成立以来,在电子行业里逐步崭露头角,成为一家备受瞩目的通信和仪器仪表产品供应商。该公司专注于基于USB、CAN和RS232/RS422/RS485接口的串行连接解决方案,凭借卓越的技术实力和创新能力,在行业中树立了良好的口碑。

随着科技的飞速发展,电子行业对高效、稳定的通信和仪器仪表产品需求日益增长。Connective Peripherals Pte Ltd紧跟行业趋势,不断推出创新产品,满足市场需求。从提供USB到串行接口连接的适配器板和电缆,到开发基于USB的示波器、数据记录器和逻辑分析仪等高端产品,Connective Peripherals Pte Ltd的产品线日益丰富,质量也逐步提升。

在市场竞争激烈的电子行业,Connective Peripherals Pte Ltd凭借其卓越的产品质量和完善的售后服务,赢得了众多客户的信赖和支持。该公司与多家知名企业建立了长期稳定的合作关系,产品远销海内外,为公司的快速发展奠定了坚实的基础。

此外,Connective Peripherals Pte Ltd还注重技术研发和人才培养。公司拥有一支高素质的研发团队,不断投入资金进行技术研发和创新,为公司的持续发展提供了强大的技术支持。同时,公司还积极开展人才培训和引进工作,吸引了一批优秀的行业人才加入公司,为公司的长远发展注入了新的活力。

总之,Connective Peripherals Pte Ltd在电子行业里凭借卓越的技术实力、丰富的产品线和完善的售后服务,逐步发展成为一家具有影响力的企业。未来,随着电子行业的不断发展,Connective Peripherals Pte Ltd有望继续保持其领先地位,为行业的进步和发展做出更大的贡献。

请注意,以上内容仅为概括性的描述,并未涉及具体的故事或事件。如果需要更详细的故事或事件描述,建议查阅相关的行业报告、公司年报或新闻报道,以获取更准确和具体的信息。

Curtis Electromusic Specialties Inc公司的发展小趣事

随着全球环保意识的不断提高,电子行业对环保材料的需求也日益增长。CUI公司敏锐地抓住了这一市场机遇,积极投入研发,成功开发出了一种绿色环保型的碘化亚铜生产工艺。这种工艺不仅降低了生产过程中的能耗和排放,而且提高了产品的纯度和质量。通过推广这一工艺,CUI公司不仅赢得了客户的青睐,也为行业的绿色发展做出了积极贡献。

Aromat Corp公司的发展小趣事

在电子行业快速发展的背景下,Aromat Corp始终坚持创新引领的发展理念。公司不断投入研发资源,推出了一系列具有创新性的电子产品。这些产品不仅满足了市场的多样化需求,还为公司带来了可观的利润增长。同时,Aromat Corp还注重知识产权保护,积极申请专利,保护公司的创新成果。

雅特力(Artery)公司的发展小趣事

雅特力在追求经济效益的同时,也高度重视企业社会责任和可持续发展。公司积极参与社会公益事业,通过捐款、捐物等方式支持教育、环保等领域的发展。此外,雅特力还注重环境保护和资源利用,采用环保材料和节能技术,努力降低生产过程中的能耗和排放。这些举措不仅有助于提升公司的社会形象,也为实现可持续发展做出了积极贡献。

DCD [Digital Core Design]公司的发展小趣事

在市场竞争日益激烈的情况下,DCD公司意识到单打独斗难以取得更大的发展。因此,公司开始寻求与其他企业建立战略合作关系。通过与上下游企业的紧密合作,DCD公司实现了资源共享和优势互补,进一步提升了自身的竞争力。同时,公司还积极参与行业标准的制定和推广工作,为行业的健康发展贡献了自己的力量。

CyOptics Inc公司的发展小趣事

除了数据通讯和电信市场外,CyOptics的光学产品还逐渐拓展至其他领域。例如,公司的光学组件已集成至光学收发器、转发器及线卡等设备中,为数据中心、高性能计算和企业存储网络等应用提供了强有力的支持。此外,CyOptics还积极开拓新兴市场,如数据库、地铁及长途干线市场等,为客户提供定制化的光学解决方案。

问答坊 | AI 解惑

汽车电子防抱死制动系统的日常维护使用

现代汽车广泛采用的汽车防抱制动系统(Anti-lock Brake System,ABS),具有自动控制车轮的滑移程度防止车轮抱死,获得最佳制动效能的功能。现代电子式防抱死控制系统是具有先进的电子技术和机械技术相结合复杂机电一体化系统,由于其工作灵敏、控 ...…

查看全部问答>

关于SDRAM的选择

一般的内存公司都会列这么几种computing memory,consumer memory,graphics memory,mobile memory,这四项是什么意思啊,如果是做ARM的话应该用哪种啊 , 另外如果是换了一个SDRAM的话,除了要修改bootloader以外,还要修改什么啊,linux下的驱动要修改吗…

查看全部问答>

脉冲电子围栏介绍

电子围栏系统由防区控制器和电子围栏前端组成,电子围栏前端安装在周界现有围墙或围栏上,也可以落地式安装,构成一道高压电缆隔离屏障,当有不法分子企图越过或者剪断电子线缆时,防区控制器用安全能量的脉冲高压击退入侵者,同时发出报警信号。 ...…

查看全部问答>

Wince如何做视频字符的叠加

我用友善之臂Micro2440+VGA显示模块做视频播放,同时需要一个视频字符叠加的功能,用Wince怎么做,有没有现成的例子。如果用linux又应该怎么做。谢谢了…

查看全部问答>

如何解决excluded from build问题??

请教各位大侠,我加入的驱动出现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也还 ...…

查看全部问答>

兼职

谢谢 [ 本帖最后由 the23th 于 2011-10-19 16:04 编辑 ]…

查看全部问答>

坛友的问题,有做过CKFA的来帮忙看看

  写APP的时候,RAM用4096B,但我写了没反应。 于是先自己随便写了一个4096B的APP.BIN,发现写到RAM430B时候就停止了,因为还没有写满4096,所以也就没有往FLASH里写。后来把接受RAM变成128B,倒是能进到写FLASH那一步函数里,但是callback函 ...…

查看全部问答>

求购一套hi3512的开发套件,要求资料齐全。做ipc用的

由于项目需要现求购一套hi3512开发板,如果能销售的和能转让的请联系 QQ305080247  email:305080247@qq .com…

查看全部问答>