批量加载/存储指令格式:

LDMXX|STMXX{条件符}{寻址模式}Rb{!},{寄存器列表}

其中XX表示IA/IB/DA/DB.

LDMIA/STMIA    访问/存储后地址递增(Increment After)

LDMIB/STMIB    访问/存储前地址递增(Increment Before)

LDMDA/STMDA    访问/存储后地址递减(Decrement After)

LDMDB/STMDB    访问/存储前地址递减(Decrement Before)

{寄存器列表}的列表顺序可随意,低编号的寄存器对应低地址空间,高编号的寄存器对应高地址空间。

该指令常用来实现堆栈的操作

eg:

LDMIA SP!, {RO-R12,LR}

STMDB SP!, {R0-R12,PC}^

有以下四种堆栈工作方式:

(1)空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址推进

(2)满递增堆栈:堆栈指针指向最后压入的数据的位置,且由低地址向高地址推进

(3)空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址推进

(4)满递减堆栈:堆栈指针指向最后压入的数据的位置,且由高地址向低地址推进

STMFD(Full Decerement)堆栈push操作,对应STMDB

LDMFD堆栈pop操作,对应LDMIA.

转载于:https://blog.51cto.com/slientradio/1330226

ARM的批量加载/存储指令相关推荐

  1. ARM多寄存器加载/存储指令

    ARM中如何实现跳转? a. 直接向PC 寄存器赋值实现跳转 MOV PC ,R14 b.使用分支指令直接跳转 分支指令种类 1.B:分支指令 2.BL:带链接的分支指令(可返回) 3.BX:带状态切 ...

  2. 自己动手写CPU(8)加载存储指令的实现

    自己动手写CPU(8)加载存储指令的实现 好久没更新blog了,暑假提前放了.现在收假也该收收心了,继续捡起之前的CPU,自己开的坑不管咋样把它填完吧. 指令介绍 1.加载指令 2.存储指令 修改系统 ...

  3. 【五级流水线CPU】—— 6. 加载存储指令(14)

    文章目录 1. 初步 12条 1.1 分析 1.2 添加数据存储器RAM 1.3 修改最小SOPC 2.3 测试9 加载存储指令 2. load-use数据冒险 测试10 load-use数据冒险的解 ...

  4. 自己动手写CPU之第九阶段(2)——加载存储指令说明2(lwl、lwr)

    将陆续上传新书<自己动手写CPU>,今天是第38篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在亚马逊.京东.当当三大图书网站上,发 ...

  5. 自己动手写CPU(11)——加载存储指令说明

    加载存储指令说明 加载指令(7) lb.lbu.lh.lhu.lw.lwl.lwr 存储指令(5) sb.sh.sw.swl.swr 补充 加载指令(7) lb.lbu.lh.lhu.lw.lwl.l ...

  6. 【自己动手写CPU】加载存储指令的实现

    目标 修改之前一直做测试的sopc,为其添加数据RAM,测试一般加载指令的实现,加入特殊加载存储指令. 探讨由于加载指令引起的load相关问题,给出OpenMIPS的解决方法,验证解决效果. 加载存储 ...

  7. ARM汇编加载/存储指令

    用在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器:存储指令则是完成相反操作.

  8. ARM汇编:加载和存储指令集(六大类)---LDR(ADR)、LDRB、LDRH、STR、STRB、STRH

    ARM的六大类指令集---LDR.LDRB.LDRH.STR.STRB.STRH ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则 ...

  9. 【ARM汇编-LDM】如何向寄存器批量加载数据?

    大家好,我是汤姆凯特. 文章目录 如何从存储器中批量加载/存储数据? 传送门: 给大家先详细介绍一下LDM.STM这两个批量加载.存储指令: 格式: 功能: 有两个常用的用法 一.如何用STM指令进行 ...

最新文章

  1. vs2010类文件添加版权版本作者信息
  2. python中var是什么_这些Python Number 知识你需要了解!
  3. 今天才知道css hack是什么
  4. python如何得出数组里最大_如何理解Python里的字典dict?
  5. 从socket中可以获取信息
  6. [Luogu] 程序自动分析
  7. 智能卡破解入门二三事(转载)
  8. 华为手机字体改简体_华为字体买了之后改不了 华为手机字体改简体
  9. java.lang.IllegalStateException: onMeasure() did not set the measured dimension by calling setMeasur
  10. 如何用C++制作游戏(每天分享一个制作小技巧)
  11. python+FTP 批量上传文件
  12. TypeScript - 函数
  13. java与C/C++的比较
  14. ARM Cortex-A 系列编程指南之ARMv8-A(AArch64浮点与NEON)
  15. Java小型项目:购物车小程序
  16. linux火车游戏,火车路路通安卓版下载-火车路路通手机版下载v1.0-Linux公社
  17. SEO网站诊断技巧-网站诊断书怎么写!!!
  18. C语言 复数四则运算
  19. hdu-4933-Miaomiao's Function(BC#4 1003)
  20. 基于FFmpeg的运动视频分析

热门文章

  1. MacBookPro 关机花屏解决
  2. 3 Curator框架实现分布式锁
  3. php mysql日期戳转时间戳_php日期转时间戳,指定日期转换成时间戳
  4. c++test能不能导入keil工程_深度解析AutoML框架——H2O:小白也能使用的自动机器学习平台...
  5. java快速排序泛型,如何进行对C# .NET通用泛型进行快速排序?
  6. 耳鼻喉专科服务机构“仁树医疗”完成数千万元A轮融资...
  7. Java虚拟机运行流程
  8. redux-form(V7.4.2)笔记(二)
  9. 6.LibSVM核函数
  10. jsp上传下载+SmartUpload插件上传