看了arm汇编语言语法一个多月了。总算入门了。当然还有很多东西值得继续努力推敲滴。
最近对LDR与LTORG有了一些新的认识。
LDR是一个比较复制的指令。作用是从存储器到寄存器的单一数据读取指令。它有19条指令格式。
其中有两条格式为宏指令(macro),格式如下:
1,LDR<cond><type>Rd,<label>
2,LDR<cond> Rd,=<32-bit-value>
这里重点分析下第二条宏指令。它会被编译器编译成一条指令,把给定的32位数值保存到寄存器Rd.通常这掉指令是LDR<cond>Rd,[pc,#<offset>],这个32位数保存在以地址(pc+<offset>开始的一个文字池(literal pool)中。
关于指令LDR<cond>Rd,[pc,#<offset>],大家就要复习一下arm汇编的"单寄存器load-store指令的寻址方式"了。这里使用到了它的前变址寻址方式。 pc的值不变,寻找的内存值为mem[pc+offset]。
LTORG用于声明一个数据缓冲池,(也称为文字池)的开始。在使用伪指令LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据暂时被编译器放于数据缓冲池中。
使用说明:
当程序中使用LDR之类的指令时,数据缓冲池的使用可能越界。为防止越界发生,可使用LTONG伪操作定义数据缓冲池。通常大的代码段可以使用多个数据缓冲池。ARM汇编编译器一般把数据缓冲池放在代码段的最后面,即下一代码段开始之前,或者END伪操作之前。LTORG伪操作通常放在无条件跳转指令之后,或者子程序返回指令之后,这样处理器就不会错误的将数据缓冲池中的数据当作指令来执行。
示例代码:
AREA Example ,CODE,READONLY; //声明一个代码段,名称为Example,属性为只读
Start BL funcl
;code
funcl //子程序
;code
LDR R1,=0x800 //将0X800加载到R1
MOV PC,lr //子程序结束
LTORG //定义数据缓冲池
data SPACE 4200 //从当前开始分配40字节的内存单元并初始化为0
END //程序结束
0x800的值被编译器暂时放在了data[0-3]字段中。
分享到:
相关推荐
本文给大家介绍了ARM汇编中ldr与adr的区别。
ADS的工程1.2,经过本人调试可用,
详细讲解对比了ARM汇编指令ADR和汇编指令LDR的区别
arm是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr
Thumb 指令集与 ARM 指令集的区别 39 Thumb 存储器访问指令 40 LDR 和 STR 41 PUSH 和 POP 43 LDMIA 和 STMIA 43 Thumb 数据处理指令 45 数据传送指令46 MOV 46 MVN 46 NEG47 算术逻辑运算指令47 ...
ARM LDR指令和LDR伪指令的总结,搞ARM的朋友建议看看!
arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x...
本文主要介绍了arm指令中mov和ldr有什么区别,希望对你的学习有所帮助。
详细讲解arm汇编的指令,方便容易查询,是个好材料 LDM * LDR * STM * STR * SWP
ARM风格ARM汇编:指令一般用大写字母、Windows中的IDE开发环境(如ADS、MDK等)常用。如: LDR R0, [R1] GNU风格ARM汇编:指令一般用小写字母、linux中常用。如:ldr r0, [r1] 0.3 ARM汇编指令的特点 ...
ARM汇编手册--S3C2440开发板中需要的汇编指令,mov,ldr等等保存为了使用方便
对初学arm的时,一些疑难问题进行总结,ARM汇编% ldr和adr CPSR_cxsf ^的作用 MACRO-MEND
1、熟练掌握常用指令LDR LDM STR STM ,条件符号的使用,影响标志位的操作,常用伪指令LDR DCD DCB 等的使用; 2、熟悉ADS1.2汇编的基本格式和调试方法,逐渐掌握排错技巧。 3、ADS1.2软件操作不明的同学查看“ADS...
ARM指令详解!详细的介绍ARM 给指令的定义,使用规则!以及需要特别的注意事项!
在分析 2410 工程中启动代码的过程中,除了一些常用的汇编如 ldr,str,bic 等,还有一些很陌生的符号让我们很困惑,到网上一查资料,噢,原来是 ARM 的一些伪操作。为了在阅读启动代码的过程中不会出现很大的阅读与...
学习ARM汇编指令的经典资料。 对ARM的各种汇编指令进行了深入全面的讲解,并给出了各种示例和详细注解,并且还对一些值得注意的点或是容易犯错误的地方进行了总结。 目录 前言......................................
在分析 2410 工程中启动代码的过程中,除了一些常用的汇编如 ldr,str,bic 等,还有一些很陌生的符号让我们很困惑,到网上一查资料,噢,原来是 ARM 的一些伪操作。为了在阅读启动代码的过程中不会出现很大的阅读与...
1.arm在thumb指令下ldr和bl实例 2.ads工程
arm汇编之冒泡排序 嵌入式开发 AREA Sort,CODE,READONLY :首先用AREA伪代码加上CODE,表明下面引出的将是一个代码段(于此相对的还有数据段DATA),ENTRY 和END成对出现,说明他们之间的代码是程序的主体 ENTRY:...
ARM指令集详解 ARM可以用两套指令集:ARM指令集和Thumb指令集。本文介绍ARM指令集。在介绍ARM指令集之前,先介绍指令的格式。 1 指令格式 (1)基本格式 <opcode>{<cond>}{S} ,<Rn>{,<opcode2>} 其中,内的项是...