13_ARM汇编自学笔记指令系统之批量数据加载存储指令
2017-07-06 19:14
561 查看
批量数据加载/存储指令
ARM 微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。常用的加载存储指令如下:
— LDM 批量数据加载指令
— STM 批量数据存储指令
LDM(或 STM)指令
LDM(或 STM)指令的格式为:
LDM(或 STM){条件}{类型} 基址寄存器{!},寄存器列表{∧ }
LDM(或 STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为以下几种情况:
I A 每次传送后地址加 1;
I B 每次传送前地址加 1;
DA 每次传送后地址减 1;
DB 每次传送前地址减 1;
FD 满递减堆栈;
ED 空递减堆栈;
FA 满递增堆栈;
EA 空递增堆栈;
{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。基址寄存器不允许为 R15,寄存器列表可以为 R0~R15的任意组合。{∧ }为可选后缀,当指令为 LDM且寄存器列表中包含 R15,选用该后缀时表示:除了正常的数据传送之外,还将 SPSR复制到 CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。指令示例:
STMFD R13!,{R0,R4-R12,LR} ;将寄存器列表中的寄存器(R0,R4 到 R12,LR)存入堆栈。
LDMFD R13!,{R0,R4-R12,PC} ;将堆栈内容恢复到寄存器(R0,R4 到 R12,LR)。
ARM 微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。常用的加载存储指令如下:
— LDM 批量数据加载指令
— STM 批量数据存储指令
LDM(或 STM)指令
LDM(或 STM)指令的格式为:
LDM(或 STM){条件}{类型} 基址寄存器{!},寄存器列表{∧ }
LDM(或 STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为以下几种情况:
I A 每次传送后地址加 1;
I B 每次传送前地址加 1;
DA 每次传送后地址减 1;
DB 每次传送前地址减 1;
FD 满递减堆栈;
ED 空递减堆栈;
FA 满递增堆栈;
EA 空递增堆栈;
{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。基址寄存器不允许为 R15,寄存器列表可以为 R0~R15的任意组合。{∧ }为可选后缀,当指令为 LDM且寄存器列表中包含 R15,选用该后缀时表示:除了正常的数据传送之外,还将 SPSR复制到 CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。指令示例:
STMFD R13!,{R0,R4-R12,LR} ;将寄存器列表中的寄存器(R0,R4 到 R12,LR)存入堆栈。
LDMFD R13!,{R0,R4-R12,PC} ;将堆栈内容恢复到寄存器(R0,R4 到 R12,LR)。
相关文章推荐
- 12_ARM汇编自学笔记指令系统之加载存储指令
- 09_ARM汇编自学笔记指令系统之数据处理指令
- 11_ARM汇编自学笔记指令系统之程序状态寄存器访问指令
- 10_ARM汇编自学笔记指令系统之乘法指令与乘加指令
- 06_ARM汇编自学笔记指令系统之分类与格式
- 15_ARM汇编自学笔记指令系统之移位指令(操作)
- 08_ARM汇编自学笔记指令系统之跳转指令
- ARM学习笔记(二)——ARM数据处理指令、加载\存储指令
- ARM汇编基础-存储和加载指令
- ARM学习笔记4——加载存储指令
- ARM体系结构笔记①---(ARM的7种模式、寄存器、存储空间、指令、中断、最小系统)
- Android自学笔记-8-Android数据存储1:文件、SharedPreferences和获取sd卡信息
- ARM学习笔记 (二)存储系统
- ARM的六大类指令集--- 加载/存储指令
- 【转】arm汇编—ldr加载指令,ldr伪指令
- 系统学习ARM之三 --load/store指令--装载和存储指令
- 【郝斌数据结构自学笔记】12-13_连续存储数组的算法演示
- ARM汇编—ldr加载指令和ldr伪指令的用法
- Unity3D笔记第二十二天——数据存储,资源管理和加载
- ARM汇编伪指令学习笔记