RAM处理器的8种寻址方式

2023-11-15

什么是寻址:

寻址是指找到存储数据或指令的地址,然后读取其中的内容。寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。ARM处理器采用的RISC架构,CPU本身是不能直接读取内存的,需要将内存的数据加载到Soc的通用寄存器,CPU再去寄存器进行读取。ARM采用的LADR/STR架构来实现 CPU和内存之间的数据交互。ldr(load register)将内存的数据加载到寄存器,str(store register)将寄存器的内容写到内存中。

8种寻址方式:

1.寄存器寻址:

move r1, r2
操作数在寄存器中,此句代码的功能就是将r2的数据加载到r1中。相当于C语言:r1 = r2

2.立即数寻址:

mov r0, #0xFFFF00
直接给出操作数,但是要受到合法立即数的限制。相当于c语言:r0=0xFFFF00

3.寄存器移位寻址:

mov r0, r1, lsl #3
寄存器中的数进行移位后得到操作数。相当于C语言:r0=r1<<3

4.寄存器间接寻址:

ldr r1,[r2]
操作数不是在寄存器中,而是操作数的所在内存地址在寄存器中。在C语言中,就是r2中存的是一个指针,指针指向的内存地址存的操作数:r1=*r2

5.基址变址寻址:

ldr r1, [r2, #4]
操作数的地址等于寄存器中的值加上偏移量,访问该地址可以得到操作数。相当于C语言:r1=*(r2+4).

6.多寄存器寻址:

ldmia r1!, {r2-r7, r12}
多寄存器寻址就是一次往多个寄存器里写数据,比如上面那条语句就是以r1里的数据为地址,读取地址里的数据依次写到后面的寄存器,每次操作完r1里的地址都+4,再去新的地址读取数据写到寄存器中。这对应于C语言里的数组,知道数组的首地址就可以每次数组首地址+4的方式来读取数组里的元素。

7.堆栈寻址:

stmfd sp!, {r2-r7, lr}
堆栈寻址其实和多寄存寻址很像,几乎就是特殊的多寄存寻址。sp是栈指针,上面的语句就是把栈里的内容依次写到r2-r7还有lr寄存器中。

8.相对寻址:

beq flag
pc当前值为基址,指令中值为偏移量,相加作为操作数的地址。地址分为相对地址和绝对地址,这里就是相对地址,跳转地址=当前地址+偏移量。此句是一个跳转指令,flag是汇编里的标号,相当于C语言中的函数名,eq是指令后缀,当上一句的执行结果为相等时才会执行本句,eq的作用相当于C语言的if条件语句。整句相当于c语言中的函数跳转,调用某个函数时,就会跳转到函数代码去执行,执行完毕后会返回。

总结:

从以上8中寻址方式的分析可以知道,汇编语句和C语句是存在对应关系的,C语言的特性是基于汇编语言的,学习汇编语言可以让我们更好的理解C语言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RAM处理器的8种寻址方式 的相关文章

  • adc读出的数据和输入电压不匹配

    1 参考电压输入有误 1 stm8和stm32 模拟电源输入的电压有问题 或者精度设置出错 导致最终电压参考有误 最终adc值出错 2 华大的芯片还多了一种可能 就是adc的参考源选择错误 可选的参考源包括内部1 5v参考 2 5v参考 外
  • 创业小记:终于开发了个有点希望的产品了

    过了3个月了 做了8个产品 有一个产品 有点起色 在7月有290刀的收入 3个月时间了 打算简单复盘一下 一个字 抄 二个字 参考 三个字 微创新 我是个典型的技术同学 我不建议跟我一样背景的人从开发自己有需求的产品开始 这是主流论调 就是
  • Java JDBC (MySQL5.7)

    文章目录 第一章 JDBC简介 1 JDBC的好处 第二章 JDBC使用 1 使用步骤 2 普通方式实现代码 3 优化为工具类 4 使用数据库连接池Druid 第三章 参考资料 第一章 JDBC简介 Java DataBase Connec
  • mysql distinct和order by 一起用时,order by的字段必须在select中

    原因 1 首先 在MySQL中 distinct 的执行顺序高于 order by 2 第二 distinct 执行时会对查询的记录进行去重 产生一张虚拟的临时表 3 第三 order by 执行时对查询的虚拟临时表进行排序 产生新的虚拟临

随机推荐

  • Windows下MySQL免安装版的下载与配置

    因为自己学习开发的需求 需要在本地安装MySQL数据库用来做本地测试 对于个人开发者 可以下载MySQL Community Server版本 该版本是免费的 安装和配置方法如下 MySQL Server下载地址 https dev mys
  • 算法通关村-----快速排序的原理和实现

    快速排序介绍 快速排序是一种经典高效的排序方法 是分治策略在排序上的具体体现 将一个大的待排序列分割成若干个小的有序序列 最终将各个小的有序序列合并成一个大的有序序列 快速排序的实现原理 选择一个基准值 将小于基准值的元素放在基准值左侧 大
  • 程序员疯抢的 Java 面试宝典(PDF 版)限时开源,别把大厂想的那么难,关键是你准备得如何

    Java 面试 2022 届高校毕业生规模预计 1076 万人 同比增加 167 万人 对于 22 届的同学们来说 今年下半年大规模进行的秋招是获得全职 Offer 的最重要的途径 对于程序员来说 大家都知道校招难度相对于社招来说会有所降低
  • Windows IIS服务器建站/网站配置全图文流程(新手必备!) 一条龙

    阿里ECS云服务器购买配置全教程 本文提供全图文流程 中文翻译 Chinar 坚持将简单的生活方式 带给世人 拥有更好的阅读体验 高分辨率用户请根据需求调整网页缩放比例 Chinar 心分享 心创新 助力快速完成服务器的购买 配置 以及网站
  • vite 和 webpack 优缺点对比

    Vite 和 Webpack 都是前端构建工具 它们有一些相似之处 也有一些不同之处 下面是 Vite 和 Webpack 的优缺点对比 Vite 的优点 快速的开发者体验 Vite 可以实现快速的冷启动和热更新 使开发者可以迅速地获取反馈
  • [QT编程系列-21]:基本框架 - QT常见数据结构:QString、QList、QVector、QMap、QHash、QSet、QPair详解

    目录 1 QString 2 QList 3 QVector 4 QMap 5 QHash 6 QSet 7 QPair 1 QString QString是Qt中用于存储和操作字符串的类 它提供了丰富的字符串处理方法和功能 以下是QStr
  • 基于改进SEIR模型的病毒传播动力学建模与疫情预测分析(以COVID-19新冠病毒为例,超详细,带matlab源码)

    文章目录 前言 一 数学基础知识 符号定义 二 传统SEIR模型的建立与求解 1 经典的SEIR传播动力学模型建立 2 根据经典的SEIR模型列出微分方程并求解 三 SEIR模型第一次修正 1 模型建立 2 模型求解 四 SEIR模型的第二
  • C++项目实战-makefile

    makefile简介 一个工程中的源文件不计其数 一个项目有有很多的文件 现在的项目基本都是按模块进行划分的 而这些模块存放在若干目录中 makefile中定义了一系列的规则 这些规则定义了一系列如何编译程序的操作 比如哪些文件需要编译 哪
  • 如何使用git send-email

    How to Use git send email 建议使用git send email发送补丁 更多关于发送补丁的信息请参考Community 本文介绍如何使用git send email 安装 send email 你的git可能已经安
  • PLSQL Developer设置

    PLSQL Developer设置 解决用PLSQL Developer查询时数据大小超过100M的提示问题 Tools gt Preferences gt SQL Window Maximum Result Set size 0 is u
  • error 1962

    今天电脑出了一点小毛病 报错 error 1962 No operation system found 由于很多的资料还有项目在里边存着 而且只有一个c盘 这可怎么解决 对于一个英文不好的中国人来说 这可是个麻烦事 静下心 仔细琢磨还是能够
  • C++11新特性

    1 列表初始化 2 变量类型推导 3 范围for循环 4 final与override 5 智能指针 6 新增加容器 静态数组array forward list以及unordered系列 7 默认成员函数控制 8 右值引用 9 lambd
  • gcc -lpthread

    转自 http www cnblogs com suntp p 6473751 html 如果用gcc编译使用了POSIX thread的程序时 通常需要加额外的选项 以便使用thread safe的库及头文件 一些老的书里说直接增加链接选
  • 《机器学习的随机矩阵方法》

    机器学习的随机矩阵方法 作者 Romain Couillet 和Zhenyu Liao 出版商 剑桥大学出版社 第 1 版 2022 年 10 月 31 日 语言 英语 精装版 408 页 ISBN 10 1009123238 ISBN 1
  • chrome浏览器https证书不安全页面打开设置

    访问https协议的页面浏览器都会加载此页面所需要的证书 在证书不被信任 即证书不是有正规CA机构颁发的话 通常是由自己通过证书生成工具或命令生成的 chrome浏览器会提示页面不安全而不会直接访问该页面 此时有两种选择 选择安全方式 不再
  • 面试题创作0005,请说明Linux 和 AI的关系(联系和区别)

    请说明Linux 和 AI的关系 联系和区别 可以在AI的业务应用 平台服务提供 平台设备商 集成电路开发等各个跟AI相关的行业来寻找联系和区别
  • MATLAB——矩阵与阵列

    变量及操作 变量命名规则 赋值语句 运算符和表达式 矩阵产生与表示 直接输入法创建矩阵 向量法创建矩阵 函数法创建矩阵 特殊矩阵 矩阵元素的引用 矩阵单个元素与行列提取 向量标识方式 矩阵基本操作 矩阵提取子块 合并短阵 转置与展开 提取子
  • Lion闭源大语言模型的对抗蒸馏框架实践

    Lion闭源大语言模型的对抗蒸馏框架实践 概述 对抗蒸馏框架概述 我们基于高级闭源LLM的基础上提炼一个学生LLM 该LLM具有三个角色 教师 裁判和生成器 有三个迭代阶段 模仿阶段 对于一组指令 将学生的响应与老师的响应对齐 区分阶段 识
  • ESP8266-NodeMCU(一)

    ESP8266 NodeMCU开发板的驱动有CH340和CP210等等 本文使用ESP8266 NodeMCU CH340驱动版本 一 开发板详解 NodeMCU是一个开源的IoT物联网硬件开发板 由于它支持WIFI功能且使用方法十分类似A
  • RAM处理器的8种寻址方式

    什么是寻址 寻址是指找到存储数据或指令的地址 然后读取其中的内容 寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式 是确定本条指令的数据地址以及下一条要执行的指令地址的方法 ARM处理器采用的RISC架构 CPU本身是不能直接