6. ARM_ARM指令寻址

概念 

什么是寻址方式:

寻址方式就是CPU去寻找一个操作数的方式。

ARM指令寻址的种类:

ARM指令寻址有立即寻址、寄存器寻址、寄存器移位寻址、寄存器间接寻址、基址加变址寻址、等。

种类 

1、立即寻址

立即寻址就是操作数直接包含在指令中,即:操作数是一个立即数

如:"MOV R1,#1" 在这个指令里的1数值是一个立即数,它包含在32位的ARM指令中。

2、寄存器寻址

寄存器寻址就是操作数是寄存器,即:操作数是R0~R15

如:"MOV R1,R2" 在这个指令里的R2就是寄存器

3、寄存器移位寻址

寄存器移位寻址就是操作数后面有一个移位操作,操作数需要先进行移位再进行赋值

如:"MOV R1,R2,LSL #1"

4、寄存器间接寻址

寄存器间接寻址就是寄存器中存放的值是一个地址,从这个地址去取数值。

如:"STR R1,[R2]" ,在这个指令中R2寄存器中存放的数据代表一个地址,是将R1数据赋值给该地址空间中。

5、基址加变址寻址

5.1 概念

基址加变址寻址就是将寄存器的值改变某个值后,再取值

如:"STR R1,[R2,R3]",在这个指令中R2叫做基址、R3叫做变址,R2+R3之后的数据是最终的地址。最终指令是将R1的数据存放到R2+R3这个地址空间处。

如:"STR R1,[R2,R3,LSL #1]",在这个指令中最终的地址是R2+(R3值<<1),将R1的数据存放到该地址中。

5.2 索引方式

基址加变址寻址的索引方式有前索引和后索引,前索引就是先加值再用地址,后索引就是先用地址再进行加值

如:"STR R1,[R2,#8]",该指令就是前索引,将R1数据存放到R2+8指向的地址中,但是R2中的数据不会进行改变

如:"STR R1,[R2],#8",该指令就是后索引,先将R1数据存放到R2指向的地址中,再将R2存放的地址数据+8,在后索引中,R2的数据发生了改变

5.3 自动索引

自动索引是允许前索引改变地址值。

如:"STR R1,[R2,#8]!",该指令就是前索引的自动索引,将R1数据存放到R2+8指向的地址中,这时R2的值也发生改变,变为R2=R2+8

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

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

相关文章

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5 1. 安装 Oracle Database 23ai2. 连接 Oracle Database 23c3. 重启启动后&#xff0c;手动启动数据库4. 重启启动后&#xff0c;手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开…

【debug记录】MATLAB内置reshape与Python NumPy库reshape的差异

【debug记录】MATLAB内置reshape与Python NumPy库reshape的差异 背景函数原型MATLAB内置reshapeNumPy库reshape 差异分析解决方法 背景 最近在编程时遇到一个需求&#xff0c;需要将MATLAB工具箱中的函数用Python NumPy库进行实现&#xff0c;在对实现进行验证的过程中&#x…

Ubuntu23.10下解决C语言调用mysql.h问题

Ubuntu23.10下解决C语言调用mysql.h问题 导语环境准备问题和解决方案总结参考文献 导语 在学习C语言和MySQL的调用的时候遇到包和版本的问题&#xff0c;由于使用的书很老&#xff08;10年的&#xff09;&#xff0c;因此很多MySQL的包已经过时&#xff0c;在查找很多资料和询…

【JAVA毕业设计】基于Vue和SpringBoot的微服务在线教育系统

博主说明&#xff1a;本文项目编号 T 060 &#xff0c;文末自助获取源码 \color{red}{T060&#xff0c;文末自助获取源码} T060&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Spring Boot编程训练系统:技术实现与案例分析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

在JPA和EJB中用乐观锁解决并发问题

同一条记录不同的用户都有权限修改&#xff0c;如&#xff1a;有一条记录编号为100&#xff0c;有一个字段price&#xff0c;张三修改price的值为200&#xff0c;李时修改其值为300。后修改的会覆盖前修改的&#xff0c;张三在修记录编号为100的记录过程中&#xff0c;中途去了…

在 ASP.NET Core 6.0 中使用 Swagger/OpenAPI 丰富 Web API 文档

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/89961435 介绍 在选择或尝试与 API 集成之前&#xff0c;大多数开发人员都会查看其 API 文档。保持 API 文档更新以反映软件更改是一项挑战&#xff0c;需要时间和精力。对于 Web API&#xff0c;我们…

tensorflow案例5--基于改进VGG16模型的马铃薯识别,准确率提升0.6%,计算量降低78.07%

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 本次采用VGG16模型进行预测&#xff0c;准确率达到了98.875&#xff0c;但是修改VGG16网络结构&#xff0c; 准确率达到了0.9969&#xff0c;并且计算量…

【二叉树】——

计算布尔二叉树的值 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) …

Spring Boot编程训练系统:构建可扩展的应用

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足&#xff0c;创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分&…

Java-sec-code-SSRF攻击

Java-sec-code&#xff08;SSRF攻击&#xff09; java-sec-code平台中也内置了SSRF攻击案例&#xff0c;我们来看看SSRF漏洞代码是什么样的。 案例1 直接从url参数接收数据&#xff0c;但是未进行任何检查和校验。 通过调用httpUtil.URLConnection方法&#xff0c;建立URL对…

docker基础:搭建centos7(详见B站泷羽sec)

docker的简单学习&#xff1a; sudo apt-get update //这个命令让系统检查有没有新软件 sudo apt-get install docker.io //安装 Docker sudo docker version //查看是否安装成功&#xff0c;显示docker的版本信息 启用Docker 启…

SwiftUI开发教程系列 - 第十四章:项目实战,创建一个完整的 SwiftUI 应用

在这一章,我们将创建一个简单的任务管理应用,名为 MyTasks,用户可以添加、删除和编辑任务,查看完成状态,并实现数据的本地持久化。应用的核心功能包括: 查看任务列表,支持删除和编辑。添加新任务,支持设置任务标题和完成状态。管理任务状态,可以将任务标记为“完成”或…

RNN(循环神经网络)详解

1️⃣ RNN介绍 前馈神经网络&#xff08;CNN&#xff0c;全连接网络&#xff09;的流程是前向传播、反向传播和参数更新&#xff0c;存在以下不足&#xff1a; 无法处理时序数据&#xff1a;时序数据长度一般不固定&#xff0c;而前馈神经网络要求输入和输出的维度是固定的&a…

解剖C++模板(2) —— 模板匹配规则及特化

众所周知&#xff0c;模板声明部分的尖括号中的内容是声明模板形参&#xff0c;而调用模板时的尖括号是给模板传参。然而这样理解仅仅停留于现象&#xff0c;只是将模板形参传参和函数传参的过程划等号了。C 的函数重载匹配并非真的进行匹配&#xff0c;因为函数名修饰规则导致…

题目讲解15 合并两个排序的链表

原题链接&#xff1a; 合并两个排序的链表_牛客题霸_牛客网 思路分析&#xff1a; 第一步&#xff1a;写一个链表尾插数据的方法。 typedef struct ListNode ListNode;//申请结点 ListNode* BuyNode(int x) {ListNode* node (ListNode*)malloc(sizeof(ListNode));node->…

高性能Web网关:OpenResty 基础讲解

一&#xff1a;概述 OpenResty是由国人章亦春开发的一个基于Nginx的可伸缩的Web平台。 openresty 是一个基于 nginx 与 lua 的高性能 web 平台&#xff0c;其内部集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于方便搭建能够处理超高并发、扩展性极高的动态 web 应…

OceanBase JDBC (Java数据库连接)的概念、分类与兼容性

本章将介绍 OceanBase JDBC的 概念与分类&#xff0c;已帮助使用 JDBC 的用户及技术人员更好的 了解JDBC&#xff0c;以及 OceanBase JDBC在与 MySQL 及 Oracle 兼容性方面的相关能力。 一、JDBC 基础 1.1 JDBC 的概念 JDBC 一般指 Java 数据库连接。Java 数据库连接&#xf…

关于Django 模型字段 `choices`自定义数据类型的枚举——补充

文章目录 1. 处理 datetime 类型的 choices2. 处理 time 类型的 choices3. 处理 Decimal 类型的 choices4. 处理 UUID 类型的 choices5. 处理 float 类型的 choices 在 Choices 类的基础上扩展&#xff0c;可以将 choices 与特定数据类型&#xff08;如 date 或 datetime&a…

小程序中引入下载到本地的iconfont字体图标加载不出来问题解决

我这个是uniapp项目,字体图标都是一样的,在vue项目中web端、uniapp运行到h5都没问题,但是运行到小程序加载不出来,报错如下: 不让用本地路径,所以我们要转为base64编码,这里给大家提供一个工具,它可以把本地字体文件转为base64:transfonter 进入官网后,第一步: …