历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2020年02月26日 | arm汇编adrl(以及ldr与adr的区别)

2020-02-26 来源:eefocus

看《嵌入式linux应用开发》第六章实例中看到个句:


adrl r2,men_cfg_val


最初对adr1相当不解,后来发现,那个不是数字1,而是字母l(认真看头部,有点区别的)



这里记录下ADRL的用法:


功能:将相对于程序或相对于寄存器的地址载入寄存器中。 与 ADR 指令相似。ADRL 生成两个数据处理指令,因此它比 ADR 加载的地址范围要宽。


语法

ADRL{cond} Rd,label

其中:


cond:是一个可选的条件代码。Rd:是要加载的寄存器。label:是相对于程序或寄存器的表达式。

上面给出的范围是相对于位于当前指令地址后的、距离当前指令四个字节(在 Thumb 代码中)或两个字(在 ARM 代码中)远的点而言的。如果对齐为 16 字节,或与此点的相关性更高,则远程地址的范围可更大。

查看ADRL的同时,看到篇讲述ldr与adr的区别的博文,感觉写的很好,摘录下来。


http://coon.blogbus.com/logs/2738861.html


ldr r0, _start adr r0, _start ldr r0, =_start nop mov pc, lr


_start: nop 编译的时候设置 RO 为 0x0c008000


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


0c008000 <_start-0x14>: c008000: e59f000c ldr r0, [pc, #12] ; c008014 <_start> c008004: e28f0008 add r0, pc, #8 ; 0x8 c008008: e59f0008 ldr r0, [pc, #8] ; c008018 <_start+0x4> c00800c: e1a00000 nop (mov r0,r0) c008010: e1a0f00e mov pc, lr


0c008014 <_start>: c008014: e1a00000 nop (mov r0,r0) c008018: 0c008014 stceq 0, cr8, [r0], -#80


分析:


ldr r0, _start


从内存地址 _start 的地方把值读入。执行这个后,r0 = 0xe1a00000


adr r0, _start


取得 _start 的地址到 r0,但是请看反编译的结果,它是与位置无关的。其实取得的时相对的位置。例如这段代码在 0x0c008000 运行,那么 adr r0, _start 得到 r0 = 0x0c008014;如果在地址 0 运行,就是 0x00000014 了。


ldr r0, =_start


这个取得标号 _start 的绝对地址。这个绝对地址是在 link 的时候确定的。看上去这只是一个指令,但是它要占用 2 个 32bit 的空间,一条是指令,另一条是 _start 的数据(因为在编译的时候不能确定 _start 的值,而且也不能用 mov 指令来给 r0 赋一个 32bit 的常量,所以需要多出一个空间存放 _start 的真正数据,在这里就是 0x0c008014)。 因此可以看出,这个是绝对的寻址,不管这段代码在什么地方运行,它的结果都是 r0 = 0x0c008014



看此文最大的收获不在于说懂了这几个命令的用法,关键却在于反汇编的运用,有反汇编看出不同用法的具体差别。


注:反汇编用arm—linux_objdump就可以实现了。

推荐阅读

史海拾趣

Fuji Electric Co Ltd公司的发展小趣事

以下是五个关于Fuji Electric Co., Ltd.(富士电机)公司发展起来的相关故事,每个故事均基于事实描述,并尽量保持字数在500字以上:

1. 创立与早期发展

Fuji Electric Co., Ltd.(富士电机)成立于1923年,是古河电器工业与德国西门子资本技术合作的产物。公司最初以电气机器制造为主,迅速在日本市场站稳脚跟。在成立初期,富士电机便致力于技术创新和产品质量的提升,逐渐在电机制造领域建立了良好的声誉。通过不断的技术积累和市场拓展,富士电机逐渐成长为日本电机行业的领军企业之一。

2. 多元化战略的实施

随着市场的不断变化和技术的不断进步,富士电机开始实施多元化战略。公司不仅继续深耕电机制造领域,还积极拓展至电子设备、零售终端设备等多个领域。通过并购和内部孵化等方式,富士电机成功进入了多个新兴市场,并在这些领域取得了显著成就。例如,在自动贩卖机领域,富士电机凭借其先进的技术和卓越的产品质量,占据了日本国内第一的市场份额。

3. 国际市场的开拓

富士电机深知国际市场的重要性,因此一直致力于海外市场的拓展。公司通过在海外设立分支机构、与当地企业合作等方式,成功将产品和服务推向了全球市场。在国际市场上,富士电机凭借其高品质的产品和专业的服务赢得了广泛的认可和好评。同时,公司还积极参与国际标准的制定和推广工作,提升了自身的国际影响力。

4. 技术创新与研发实力的提升

技术创新是富士电机持续发展的重要动力。公司不断加大研发投入力度,建立了完善的技术创新体系。通过自主研发和合作研发等方式,富士电机在多个技术领域取得了重大突破。例如,在电力电子、自动化控制等领域,富士电机推出了多款具有自主知识产权的创新产品和技术解决方案。这些创新成果不仅提升了公司的核心竞争力还推动了整个行业的发展。

5. 数字化转型与智能化升级

面对数字化转型的浪潮富士电机积极应对挑战并抓住机遇。公司开始推进数字化转型和智能化升级工作通过引入先进的数字化技术和智能化设备提升生产效率和产品质量。同时富士电机还加强了对大数据、云计算等前沿技术的研发和应用推动了公司业务的智能化发展。这些举措不仅提升了公司的市场竞争力还为公司未来的可持续发展奠定了坚实基础。

Advanced Microelectronic Products Inc公司的发展小趣事

随着公司业务的不断发展,AMP公司意识到与国际伙伴合作的重要性。于是,公司积极寻求与国际知名企业的战略合作,通过技术交流和资源共享,共同开发新型电子产品。这些国际合作不仅提升了AMP公司的技术水平,还进一步提升了其品牌影响力和国际知名度。公司因此获得了更多海外市场的认可,实现了业务的全球化布局。

Cogent_Computer_Systems公司的发展小趣事

在电子行业中,技术创新是企业发展的核心驱动力。Cogent_Computer_Systems公司深知这一点,因此始终坚持将大量资金投入研发领域。公司建立了一支高素质的研发团队,并配备了先进的研发设备。通过持续不断的研发投入,公司成功推出了一系列具有创新性的产品,满足了市场不断变化的需求。这种以研发驱动的发展模式使得公司在激烈的市场竞争中始终保持领先地位。

Datakey Electronics公司的发展小趣事

随着数字化技术的快速发展,数字化转型已经成为企业提升竞争力的关键。Datakey Electronics紧跟时代潮流,积极推进数字化转型。公司引进先进的信息化管理系统和智能化生产设备,实现了生产过程的自动化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗。通过数字化转型,Datakey Electronics在激烈的市场竞争中保持了领先地位。

以上这些故事都是基于电子行业的一般发展趋势和可能的情况虚构的,但从中我们可以看到Datakey Electronics公司可能经历的一些发展历程。希望这些故事能够为您提供一些参考和启发。

晨晶电子(Chenjing Electronics)公司的发展小趣事

晨晶电子自成立以来,始终坚持以技术创新为核心竞争力。公司拥有一支高素质的研发团队,致力于石英晶体元器件的研发与生产。通过不断的技术创新和产品升级,晨晶电子在行业内逐渐树立了技术领先的地位。其产品广泛应用于通信、计算机、消费电子等领域,赢得了众多客户的信赖和好评。

Desco Tools公司的发展小趣事

随着技术的不断进步,Desco Tools公司不断进行技术创新和产品升级。公司投入大量研发资源,开发出了更加高效、可靠的防静电工具,如新型防静电工作服、无尘室专用工具等。这些产品不仅满足了市场对防静电工具日益增长的需求,还进一步巩固了公司在该领域的领先地位。

问答坊 | AI 解惑

关于09竞赛题目

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 各位兄弟姐妹们,09年全国电子设计大赛即将开始,大家都准备的如何了?这次大赛听说有重大改革?有没有人指导今年的出题方向啊?  …

查看全部问答>

pspice讲义

本帖最后由 paulhyde 于 2014-9-15 09:38 编辑 所用教材: 很可惜,这本书已经停印了,不过看本PPT应该可以入个门,现在很多只教画图,仿真,我觉得熟悉一下PSPICE的文本程序,还是很有用的,许多芯片公司提供PSPICE模型都是给文本模型的,才好看 ...…

查看全部问答>

走出选购门禁控制器的四误区

门禁控制器是门禁系统的核心部分,是门禁系统的灵魂。门禁控制器的质量和性能优劣直接影响着门禁系统的稳定性,而系统的稳定性会直接影响着门禁系统使用者的工作和生活秩序,甚至影响到生命和财产的安全。     目前中国市场上门禁控制 ...…

查看全部问答>

【分享帖】超详尽WinCE 6.0环境搭建过程图解

前段时间有朋友问wince的环境搭建方法,由于安装有一些需要注意的地方,直接用语言描述有诸多不便,今天整理了一个图片集,觉得说的比较明白了,需要的朋友看一看,也希望高手朋友们多完善,谢谢! PS: [广告,被屏蔽] 了解更多内容可登陆:[广 ...…

查看全部问答>

SIM300 GPRS UART 连接问题

XDJM 们: 我现在有一个SIM300的模块,我把这个模块和WinCE的系统的一个COM口接了起来。但是我的这个系统的COM口只有TX和RX,没有其他的DCE和DTE 的管脚。 可是SIM300要求的是traditional DCE-DTE的连接方式。 我现在直接把RTS和CTS连接了起来。 ...…

查看全部问答>

崩溃啊 求助!

我的毕设课题是基于单片机的红外接口设计,打算用proteus仿真,但是元件库里没有接口芯片max3100和收发芯片hdls3201,怎么办啊? 各位好心的大侠,帮帮忙吧!…

查看全部问答>

linux下中断处理问题

现有一外部中断,中断来临后要求驱动马上读取数据,现在问题是:中断来临后,怎么通知用户主动读取数据,现在我用的是使用了中断上下部,下部处理中断,一产生中断马上进入上半部分处理接收,并传送到用户空间,那么此时的读如果在没有中断时就一直 ...…

查看全部问答>

关于Windows CE实用开发技术 电子档 下载问题

以前的地址我由于更新网站已经改掉了。 Windows CE实用开发技术 电子档下载。 版权说明,本电子档版权归原书作者所有,下载仅供学习,请与下载后24小时删除。 保护合法版权,请购买正版书籍! 请勿多线程,保护本空间的速度! 谢谢!! 下载 ...…

查看全部问答>

求Wince下运行的可编辑的Word应用软件

如题,因为WinCE系统自带的Word Viewer是不能够进行新建和编辑的只能用来浏览Word文件,而且我试过插入一个图片和表格在Word Viewer中也能正常显示出来,因为本人现在急需一个也能在WinCE上面进行新建和可编辑的Word(当然插入表格和图片也是可以的 ...…

查看全部问答>

请问Prj和dtp是什么工程?

RT 包含了s03文件 需要用什么软件来进行编译?…

查看全部问答>