当前位置: 首页 > article >正文

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.kler.cn/a/390725.html

相关文章:

  • MyBatisPlus 用法详解
  • 记录学习react的一些内容
  • Python标准库模块的使用:math、datetime
  • Python网络爬虫与数据采集实战——什么是网络爬虫
  • 从0开始深度学习(28)——序列模型
  • 准确--FastDFS快速单节点部署
  • 【MongoDB】MongoDB的存储引擎及Wiredtiger的读/写缓存、数据结构设计、Page生命周期等实现原理(超详细)
  • 数字化转型实践:金蝶云星空与钉钉集成提升企业运营效率
  • 刘艳兵-DBA028-您可以在 ORCL1 和 ORCL2 数据库都运行其实例的主机上安装“独立服务器的 Oracle 网格基础结构“。哪两个陈述是正确的?
  • Day106:代码审计-PHP原生开发篇文件安全上传监控功能定位关键搜索1day挖掘
  • 力扣 二叉树的最大深度-104
  • 【qt】控件篇(Enable|geometry)
  • ubuntu20.04 ROS 临时修改功能包名并作一系列对应修改 (ubuntu20.04)
  • 梧桐数据库聚合函数使用举例
  • docker desktop运行rabittmq容器,控制台无法访问
  • 各种环境换源教程
  • 智启未来,趣享生活 德国卡赫举办系列新品首发活动
  • 例题解析:利用异或运算(XOR)找出单独的数
  • 2.索引:MySQL 索引分类
  • html简单实现音乐播放
  • 一文了解什么是腾讯云开发
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • Linux内核编程(二十)RTC子系统一驱动rx8010
  • LeetCode 3.无重复字符的最长子串
  • Oracle 外键
  • 关于倍速播放百度网盘视频