arm汇编adrl(以及ldr与adr的区别)

发布者:EnchantedMelody最新更新时间:2020-02-26 来源: eefocus关键字:arm  汇编  adrl  ldr  adr 手机看文章 扫描二维码
随时随地手机看文章

看《嵌入式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就可以实现了。

关键字:arm  汇编  adrl  ldr  adr 引用地址:arm汇编adrl(以及ldr与adr的区别)

上一篇:ARMv8 架构与指令集.学习笔记
下一篇:Linux下ARM汇编语法

推荐阅读最新更新时间:2024-11-09 17:57

基于ARM9和嵌入式Linux系统的多功能综合通信控制系统的框架
本文介绍了基于ARM9硬件平台和嵌入式Linux系统的多功能综合通信控制系统的框架设计及各模块的功能。系统采用符合POSIX.1标准的C语言编写,实现了对下位机传送数据帧的采集、分析和存储,并能根据上位机的配置指令和数据传输指令分别对串口波特率、数据时间及手机短信号码等参数进行配置和存储数据的传输。 伴随着计算机技术的迅速发展,工业数据采集已由传统的测控 电路 发展为由微型计算机、接口电路、外部通用设备和工业生产对象等组成的现代数据采集与控制系统。但是以微型计算机为核心的数据采集系统也逐渐暴露出许多缺陷:体积大,不易携带;扩展性差、成本高等。因此,以嵌入式系统为平台的数据采集和控制系统应运而生,嵌入式数据采集系统具备可靠性
[单片机]
基于<font color='red'>ARM</font>9和嵌入式Linux系统的多功能综合通信控制系统的框架
Arm全新Mali-D77显示处理器让虚拟世界更加真实
全新Arm Mali-D77显示处理器IP为头戴式显示器(HMD)带来卓越的3K120虚拟实境(VR)性能,同时能消除晕眩感。 全新的固定功能硬件节省VR作业负载四成以上的系统频宽,以及12%的功耗。 实现更小、更轻、更舒适,且不受接线牵绊的VR装置的部署,应用范围涵盖从头戴式显示器至一般高阶行动显示器。 Arm宣布推出全新Mali-D77显示处理器IP,减少系统频宽与功耗,为未来虚拟实境带来更沉浸式的体验与更流畅的性能,并消除晕眩感,为消费者带来使用更友善、价格更亲民的VR装置。 基于Arm的芯片已经趋动现今99%的智能手机,消费者对于VR的兴趣持续增长,对技术的要求也愈来愈高。虽然台式机能够提供强大的
[嵌入式]
PWM控制LED灯渐亮渐灭汇编程序
;******************************************************************* ;* 演示程序 - PWM控制LED灯渐亮渐灭 * ;* 邮箱: mcuinfo@163.com * ;* 作者: keel * ;* 时间: 2005/11/30 * ;*【版权】Copyright(C)晶格电子 All Rights Reserved* ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! * ;******************************************************************* ; PWM 控制 LED 灯渐亮渐灭
[单片机]
非常实用的arm智能测温系统应用方案
  测温测量和控制在当今社会生活中扮演着至关重要的角色,国际国内市场现有的多种测温技术涵盖了安检、市 场、生活、消防、科研等诸多领域。温度的测量和控制在工 业生产中有广泛的应用,尤其在石油、化工、电力、冶金等 重要工业领域中,对温度的测量和监控是非常重要的一个环节。在传统的温度测量系统中,温度采集器通常采用模拟温 度传感器,模拟信号在传输的过程中容易受到干扰从而影响测量的准确度,模拟信号转化成数字信号,精度较高的A/D 转换器一般价格昂贵,对于传统系统存在的不足,结合国内外在温度监测系统上的研究现状,本文进行了新的设计。   本文智能测温系统基于物联网技术与嵌入式技术实现 远程无线可移动的视频监控系统,依托于FS_S5PC10
[单片机]
非常实用的<font color='red'>arm</font>智能测温系统应用方案
海思ARM平台交叉编译zeroMQ
在使用海思的项目中要使用到ZeroMQ这个消息队列框架,之前在PC端使用感觉不错。所以通过要通过交叉编译,将其移植到ARM平台。 移植方法,可以参考 https://blog.csdn.net/sishuihuahua/article/details/77203094 以下是我使用海思交叉编译工具的方法: 一、配置编译器 ./configure --host=arm-himix100-linux --prefix=/opt/hisi-linux/zeromq-4.1.6/arm-zeromq --without-libsodium arm-himix100-linux --host=arm-himix100-
[单片机]
使用ARM7 LPC2148微控制器构建一个简单的机械臂
  机械臂是令人着迷的工程创造之一,看着这些东西倾斜和平移以像人类手臂一样完成复杂的事情总是令人着迷。这些机械臂常见于装配线上进行焊接、钻孔、喷漆等高强度机械工作的行业中,最近还开发了高精度的先进机械臂来执行复杂的外科手术。因此,在本教程中,让我们使用 ARM7-LPC2148 微控制器构建一个简单的机械臂,通过手动控制几个电位器来拾取和放置物体。   所需组件   3D 打印机机械臂   ARM7-LPC2148   SG-90 伺服电机 (4)   10k 电位器 (4)   按钮 (4)   发光二极管 (4)   5V (1A) 直流电源适配器   电阻器(10k (4)、2.2k(4))   面包板   连接电线
[单片机]
使用<font color='red'>ARM</font>7 LPC2148微控制器构建一个简单的机械臂
LG两款ARM芯片曝光:或为Intel 10nm工艺打造
日前,LG向欧盟知识产权局提交了两份商标申请文件,分别是“LG KROMAX Processor 和 LG EPIK Processor”。LG表示这将用于两款芯片产品。 不过,目前并没有证据表明这两款芯片会应用在智能手机上,它们也有可能用于物联网设备。 此外,去年Recode曾报道,Intel证实他们将为LG制造用于智能手机的ARM芯片,这些芯片将运用10nm工艺。Intel为LG代工的有可能就是这两款芯片。
[手机便携]
LG两款<font color='red'>ARM</font>芯片曝光:或为Intel 10nm工艺打造
基于ARM硬件的手持机间短消息交互的程序设计
引言 短消息是现代通信的重要形式之一,短信业务让手机成为电报式的解读工具,使视觉文字成为现代通信中传递信息和沟通的一种重要方式。短信这种文字视觉式的信息传输、解析特点,使其他类似的短消息业务广泛应用于具备通信功能的嵌入式手持设备中。 在研制一种基于STM32F107VCT6芯片的互联形嵌入式手持机时,不同的用户之间需要进行文本信息交互。本文基于现实需求,根据短信的基本定义并参考现代手机中短信的功能设计,研究了一套实现短消息功能的方案,以实现短消息的编辑、存储、发送、接收等功能,并在某嵌入式手持设备中获得了应用。 1短消息总体设计 手持机的短消息通信功能是嵌入式通信系统整体设计方案的一部分,不同的嵌入式手持机设备通过网线采用
[单片机]
基于<font color='red'>ARM</font>硬件的手持机间短消息交互的程序设计
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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