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

发布者:温文儒雅最新更新时间:2016-05-10 来源: 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

 

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

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


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

上一篇:ARM汇编中的LDR及ADR的区别及其在UBOOT中的应用
下一篇:ARM立即数,LDR和MOV的区别

推荐阅读最新更新时间:2024-03-16 14:53

ARM汇编伪指令(1)
ARM汇编程序由机器指令、伪指令和宏指令组成。 1,符号定义伪指令 符号定义伪指令用于定义ARM汇编程序的变量、对变量进行赋值、定义寄存器名称。 全局变量声明: GBLA,GBLL,GBLS 局部变量声明: LCLA,LCLL,LCLS 变量赋值: SETA,SETL,SETS 为一个通用寄存器列表定义名称: RLIST 为一个协处理器的寄存器定义名称: CN 为一个协处理器定义名称: CP 为一个VFP寄存器定义名称: DN,SN 为一个FPA浮点寄存器定义名称: FN 1)GBLA,GBLL,GBLS 全局变量声明,作用范围是包含该变量的源程序。 GBLA variable ;声明全局算术变量 GBL
[单片机]
关于ARM汇编里的特殊符号
先前企图全部靠自己写一个bootloader,结果尝试了下,花了4天时间查各种技术资料,写了个startup.s文件出来,写的过程中才发现,原来还有很多问题是我基本上不知道的,比如说如何进行ARM的位操作、如何将堆栈设置到RAM中、UART的波特率计算方法等问题。 在边写边查资料的过程中,我又发现了别人的一些程序我看不懂。。。因为除了EQU、DCD等我基本不用伪指令。。。 所以我开始看44B0 BootLoader的范例程序,可能是人家水平实在比较高,也可能是俺的水平确实有限,总之是有些地方看不怎么懂,特别是一些个特殊符号,现特将那些个麻烦的符号总结下: 特殊符号 | 对应指令 | 含义
[单片机]
第1天-ARM汇编指令MSR/MRS
第1天-ARM汇编指令MSR/MRS 程序状态寄存器 MES/MSR 你不能在 32 位模式中使用 MOVS PC, R14 或 LDMFD R13!, {registers, PC}^。也不能使用 ORRS PC, R14, #1 28 来设置 V 标志。现在需要使用 MRS 和 MSR。 复制一个寄存器到 PSR 中 MSR CPSR, R0 ; 复制 R0 到 CPSR 中 MSR SPSR, R0 ; 复制 R0 到 SPSR 中 复制 PSR 到一个寄存器中 MRS R0, CPSR ; 复制 CPSR 到 R0 中 MRS R0, SPSR ; 复制 SPSR 到 R0 中
[单片机]
ARM中的ldr指令发现有些网友说的是错的啊
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中。而mov不能实现这个功能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。 另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。ldr伪指令可以在立即数前加上=,以表示把一个值(一
[单片机]
ARM汇编STR和LDR
1.使用单一数据传送指令(STR 和 LDR)来装载和存储单一字节或字的数据从/到内 存。 请问装载(LDR)和存储(STR)有什么区别?我个人理解没有区别.就是向指定的地址写数 据.是么? LDR是内存数据放到寄存器,即装载,是读 STR是寄存器数据到内存,即存储,是写 2.ldr r0, PtEBIBase 对于这条指令中的PtEBIBase,它是一个地址么?可是它之前的定义是: PtEBIBase: .long EBI_BASE PtEBIBase是一个标号,指向一个long型的数,这个数的值等于EBI_BASE,就是EBI的 基地址
[单片机]
为什么初始化SDRAM中 adrl r2, mem_cfg_val而不是 ldr r2,=mem_cfg_val
我们来回顾2440的启动方式 Nand启动 ①Nand前4K- SRAM(2440中有4K的SRAM) ②CPU从0地址执行(SRAM的0地址) Nor启动 ①0- Nor ②CPU从0地址取址执行(Nor的0地址) 我以Nand启动为例: S3C2440中有被称为“Steppingstone”的4KB内部RAM。当从NandFlash启动CPU时,CPU会通过内部的硬件将NAND Flash开始的4KB字节数据复制到这4KB内部的RAM中(此时内部RAM的起始地址为0),然后跳转地址0开始执行。 通过查看反汇编,最大地址偏移为0x14c肯定小于4KB; 我们在来看两种代码下的反汇编: 虽然表面来看r
[单片机]
为什么初始化SDRAM中 <font color='red'>adrl</font> r2, mem_cfg_val而不是 <font color='red'>ldr</font> r2,=mem_cfg_val
ARM汇编语言和C语言混合编程
ATPCS规则体现了一种 模块化 设计的思想,其基本内容是C模块(函数)和汇编模块(函数)相互调用的一套规则(C51中也有类似的一套规则)。我感觉比在线汇编功能强大(不用有很多忌讳),条理更清楚(很简单的几条规则)。 ATPCS规则内容: 1)寄存器的使用规则 1、子程序之间通过寄存器r0~r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。此时r0~r3可记作A1~A4。 2、在子程序中,使用寄存器r4~r11保存局部变量。因此当进行子程序调用时要注意对这些寄存器的保存和恢复。此时r4~r11可记作V1~V8。 3、寄存器r12用于保存堆栈指针SP,当子程序返回时使用该寄存器出栈,记作IP。 4、寄存器r13用作堆栈指
[单片机]
<font color='red'>ARM汇编</font>语言和C语言混合编程
基于ARM的MPEG-4软解码器的优化与实现
1 引 言 MPEG-4视频压缩标准自问世以来受到人们的广泛关注。近几年,嵌入式应用中对MPEG-4播放器的实现已经成为众多厂家的研究热点。专用的MPEG-4播放芯片已经非常普遍,但是减少功耗和降低成本一直是商家追求的目标,因此,随着嵌入式的主流微处理器ARM的处理能力越来越强,用他来实现MPEG-4系统的软解码成为了众多嵌入式设计公司研究的重点内容。由于MPEG-4系统庞大且需要大量的数据处理,因此在ARM中实现MPEG-4软解码需要对其原算法进行充分的优化才能达到理想的性能。为此研究了一种基于ARM926EJ-S微处理器的MPEG-4解码算法的纯软件实现和优化的方法,通过对解码算法的软件优化,将QVGA格式MPEG-4
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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