ARM A32多数据处理汇编指令理解分享

ARM A32多数据处理汇编指令理解分享

  • 1 多数据存储指令
    • 1.1 push指令
    • 1.2 STMFD/STMDB指令
    • 1.3 STMED/STMDA指令
    • 1.4 STMFA/STMIB指令
    • 1.5 STMEA/STMIA指令
  • 2 多数据加载指令
    • 2.1 pop指令
    • 2.2 LDMFD/LDMIA指令
    • 2.3 LDMFA/LDMDA指令
    • 2.4 LDMEA/LDMDB指令
    • 2.5 LDMED/LDMIB指令

在ARM A32多数据处理汇编指令分为多数据存储指令和多数据加载指令:
1,多数据存储指令:push, STMFD(STMDB), STMED(STMDA) , STMFA(STMIB), STMEA(STMIA);
2,多数据加载指令:pop,LDMF(LDMIA), LDMFA(LDMDA), LDMEA(LDMDB), LDMED(LDMIB);

1 多数据存储指令

多数据存储指令:push, STMFD(STMDB), STMED(STMDA) , STMFA(STMIB), STMEA(STMIA);

1.1 push指令

Push multiple registers to Stack stores multiple general-purpose registers to the stack, storing to consecutive memory locations ending just below the address in SP, and updates SP to point to the start of the stored data.
将多个寄存器压入栈(Push multiple registers to stack)会将多个通用寄存器保存到栈中,保存到连续的内存位置,结束地址位于栈指针(SP)所指向地址的下方,并且更新栈指针(SP)到已存储数据的起始位置。
This instruction is an alias of the STMDB, STMFD instruction.
该指令是 STMDBSTMFD 指令的别名。
指令执行的结果示意图如下所示:
在这里插入图片描述

1.2 STMFD/STMDB指令

Store Multiple Decrement Before (Full Descending) stores multiple registers to consecutive memory locations using an address from a base register. The consecutive memory locations end just below this address, and the address of the first of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.
该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

1.3 STMED/STMDA指令

Store Multiple Decrement After (Empty Descending) stores multiple registers to consecutive memory locations using an address from a base register. The consecutive memory locations end at this address, and the address just below the lowest of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.
该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

1.4 STMFA/STMIB指令

Store Multiple Increment Before (Full Ascending) stores multiple registers to consecutive memory locations using an address from a base register. The consecutive memory locations start just above this address, and the address of the last of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.

该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
**加粗样式**

1.5 STMEA/STMIA指令

Store Multiple (Increment After, Empty Ascending) stores multiple registers to consecutive memory locations using an address from a base register. The consecutive memory locations start at this address, and the address just above the last of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.

该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

2 多数据加载指令

多数据加载指令:pop,LDMF(LDMIA), LDMFA(LDMDA), LDMEA(LDMDB), LDMED(LDMIB);

2.1 pop指令

Pop Multiple Registers from Stack loads multiple general-purpose registers from the stack, loading from consecutive memory locations starting at the address in SP, and updates SP to point just above the loaded data.
This instruction is an alias of the LDM, LDMIA, LDMFD instruction.

该数据存储指令的格式:
在这里插入图片描述
该数据存储指令执行简易示意图:
在这里插入图片描述

2.2 LDMFD/LDMIA指令

Load Multiple (Increment After, Full Descending) loads multiple registers from consecutive memory locations using an address from a base register. The consecutive memory locations start at this address, and the address just above the highest of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.

该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

2.3 LDMFA/LDMDA指令

Load Multiple Decrement After (Full Ascending) loads multiple registers from consecutive memory locations using an address from a base register. The consecutive memory locations end at this address, and the address just below the lowest of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.

该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

2.4 LDMEA/LDMDB指令

Load Multiple Decrement Before (Empty Ascending) loads multiple registers from consecutive memory locations using an address from a base register. The consecutive memory locations end just below this address, and the address of the lowest of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.

该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

2.5 LDMED/LDMIB指令

Load Multiple Increment Before (Empty Descending) loads multiple registers from consecutive memory locations using an address from a base register. The consecutive memory locations start just above this address, and the address of the last of those locations can optionally be written back to the base register.
The lowest-numbered register is loaded from the lowest memory address, through to the highest-numbered register from the highest memory address.

该数据存储指令的格式:
在这里插入图片描述

该数据存储指令执行简易示意图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/486752.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…

二分查找(带图详解)

优选算法系列 文章目录 优选算法系列前言一、二分查找的思想二、算法使用小总结 三、代码实现四、二分查找拓展4.1、查找第一次出现的target小总结 4.2、target最后出现的位置小总结 五、代码总结 前言 在这篇博客中,我会给大家分享二分查找及其扩展。 这是链接-&…

arguments和纯函数的介绍

认识arguments arguments 是一个 对应于 传递给函数的参数 的类数组(array-like)对象. array-like意味着它不是一个数组类型,而是一个对象类型: □但是它却拥有数组的一些特性,比如说length,比如可以通过index索引来访问;□但是它却没有数组的一些方法,比如forEach、map等; …

煤矿 35kV 变电站 3 套巡检机器人 “上岗”,力破供电瓶颈

近日,杭州旗晟智能科技与甘肃某变电站配电室的三套智能巡检机器人线下测试顺利完成,并成功交付使用,这为电力运维工作注入了全新的活力与强大的技术支撑。 一、项目背景 甘肃某变电站总建筑面积1098平方米的变电站集变电、配电、监控等多功能…

隐式神经网络实现低光照图像增强

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【人工智能基础06】人工神经网络(练习题):神经网络的计算、激活函数的选择与神经网络的退化

文章目录 1. 基于神经网络计算心理健康程度2. 添加激活函数的神经网络计算3. 使用神经网络预测小胖是否会变胖4. 激活函数选择的讨论5. 神经网络的设计6. 深度线性模型的表达能力线性模型7. 神经网络退化 主要讨论的内容 什么是人工神经网络,相关计算反向传播算法的…

记录Windows中Mysql安装

www.mysql.com 我用的是mysql-installer-community-8.0.25.0.msi 原先安装过,先听了了mysql服务 ctrlshiftesc 先停了服务 控制面板关于mysql的全卸载 不修改的话,默认 如果不修改 自己电脑C盘不想放太多 这里Config Type有三个选项 第一个是测试开发模式 占用内存…

【Java计算机毕业设计】Springboot+vue校园外卖配送服务管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

彻底理解ThreadLocal的应用场景和底层实现

一.概念 定义: ThreadLocal 是 Java 中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据。 其实是可以通过调用 Set() 方法往里面存入值,存入的值是每个线程互…

Linux下redis环境的搭建

1.redis的下载 redis官网下载redis的linux压缩包,官网地址:Redis下载 网盘链接: 通过网盘分享的文件:redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…

使用 pyperclip 进行跨平台剪贴板操作

简介:pyperclip 是一个轻量级的 Python 库,支持在不同操作系统(Windows、macOS、Linux)中进行剪贴板的复制和粘贴。这个库的设计简单易用,非常适合需要频繁进行文本复制粘贴操作的场景。 历史攻略: 使用f…

什么是初积分

在学习《高等动力学》时碰到一个概念“初积分”,为了方便记忆,在这里做个笔记。 1 定义 在常微分方程理论中,初积分是指对于一个给定的常微分方程组,如果存在一个可微函数,使得沿方程组的任何解,函数的值…

S32K324 HSE使用注意事项

文章目录 前言HSE安装完成后APP无法运行问题描述问题产生原因解决方案APP偶发获取不到HSE版本问题描述问题产生原因解决方案使能XRDC后,APP与HSE无法通信问题描述问题产生原因解决方案总结前言 在HSE使用过程中,出现过一些必现和偶发的问题,本文总结一下问题原因和解决方案…

fastadmin 登录退出忽略中间提示页面

背景 研究了一圈CMS,从fastadmin、easyadmin、buildadmin、onethink等等几乎所有的框架CMS,当然也包括若依。 最后,根据当前项目综合考虑,还是选择的fastadmin: 预算经济实惠、维护成本低;工期端&#x…

DApp开发前端框架选择:React还是Vue?

在区块链DApp开发中,前端框架的选择对用户体验和开发效率至关重要。React和Vue作为两大主流前端框架,各自拥有广泛的开发者基础和丰富的生态支持。那么在DApp开发中,该如何选择适合自己的框架呢?下面我们来比较一下,看…

证明网络中的流形成一个凸集

证明网络中的流形成一个凸集 步骤1:定义和符号步骤2:线性组合步骤3:验证容量限制步骤4:验证流量守恒结论示例代码(C语言) 在网络流理论中,一个流 f f f 是定义在网络图的边集上的一种函数&…

opencv复习

目录 1.core 1.图像变换 1.1 affine仿射变换 1.2 透视变换 2.四元数(旋转) 2.1 轴角转四元数 2.2 旋转矩阵转四元数 2.3 欧拉角转旋转矩阵 2.4 四元数转旋转矩阵 2.5 四元数用eigen用的比较多 2. imgproc. Image Processing 2.1 bilateralF…

分治_归并_归并排序(逆序对)

912. 排序数组 上一次我们做这道题时用的是数组划分三块的思想搭配随机选择基准元素的⽅法。 随机选择一个数,以这个数key为基准划分数组,小于key的数在左边,大于key的数在右边。再把被划分的两部份再找key值划分,直到只剩1或者0个…

环境兼容: Vue3+ELement-plus

题目:环境兼容: Vue3ELement-plus 前言 身为小白的我也在负责一个项目咯,开发的是Vue3项目,然后就搜阅多篇文章,整理了这个。内容很多是转载的,拼成的我这个文章。 Element-plus简介 Element-plus 是基于…

UE5基本数据类型

bool: 表示布尔值,只有两个取值:true 或 false,用于表示逻辑条件。int8: 表示 8 位的有符号整数,范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数,范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…