汇编指令——ARM Cortex-M指令分析

cpsid i

这条指令 cpsid i 是 ARM Cortex-M 处理器的汇编语言指令,用于关闭全局中断。在 ARM Cortex-M 处理器中,cpsid i 指令的作用是将处理器的中断(IRQ)禁用,以防止中断干扰当前的执行流程。这意味着在执行这条指令后,CPU 将不再响应任何中断请求,直到相应的使能指令被执行以重新开启中断。

ldr

ldr 是 ARM 汇编语言中的一个指令,用于加载寄存器中的数据。具体来说,它有两种主要的使用方式:

  1. 加载立即数到寄存器:

    ldr Rd, =constant
    

    这种形式将一个常数值加载到目标寄存器 Rd 中。这个常数通常是一个地址或者一个数据。

  2. 加载内存中的数据到寄存器:

    ldr Rd, [Rn, #offset]
    

    这种形式从内存中加载数据到目标寄存器 Rd 中,其中 Rn 是基地址寄存器,#offset 是偏移量。

mrc

mrc 是 ARM 架构中的一条指令,用于从协处理器(例如 CP15)中读取数据到ARM通用寄存器。具体来说,mrc 指令有以下格式:

mrc coproc, opcode1, Rd, coproc_reg, CRn, CRm
  • coproc 表示协处理器编码。
  • opcode1 是特定协处理器指令的操作码。
  • Rd 是目标寄存器,用于存储读取的值。
  • coproc_reg 表示协处理器内的寄存器编号。
  • CRnCRm 是控制寄存器的编码。

在你提供的例子中,mrc p15, 0, r0, c1, c0, 0 的含义是从协处理器 CP15 的控制寄存器 C1 中读取数据,并将其存储到通用寄存器 r0 中。

bic

bic 是 ARM 汇编语言中的一条指令,代表 “Bit Clear”,用于清除寄存器中的特定位。其格式通常如下:

bic Rd, Rn, #expression

其中:

  • Rd 是目标寄存器,用于存储结果。
  • Rn 是源寄存器,包含要被修改的原始数据。
  • #expression 是一个立即数或者寄存器,表示要进行位操作的掩码。

在执行时,bic 指令会将源寄存器 Rn 中的特定位根据 #expression 进行清零,并将结果存储到目标寄存器 Rd 中。

dmb

dmb 是 ARM 处理器的指令,代表 “Data Memory Barrier”。这条指令用于确保在执行到该指令时,所有对内存的数据访问操作都已经完成,并且对这些访问所做的修改对后续的访问可见。

具体来说,dmb 指令会导致处理器等待直到所有先前的内存访问都已经完成,并且对这些访问所做的修改对后续的访问可见。这在多核处理器或者多线程环境下尤为重要,以确保数据的一致性和可预测性。

dsb

dsb 是 ARM 处理器指令,代表 “Data Synchronization Barrier”,用于确保在指令执行过程中数据访问的顺序性。这条指令会强制处理器在执行到该指令时,将先前的数据访问操作完成,然后再继续执行之后的指令。

具体来说,dsb 指令会导致处理器等待直到所有先前的内存访问都已经完成,并且对这些访问所做的修改对后续的访问可见。这在多核处理器或者多线程环境下尤为重要,以确保数据的一致性和可预测性。

isb

isb 是 ARM 处理器的指令,代表 “Instruction Synchronization Barrier”。这条指令用于确保在执行到该指令时,处理器中的指令流水线中的指令按顺序执行。具体来说,isb 指令会保在执行到该指令时,之前的指令已经对后续指令的影响生效,并且后续的指令按顺序执行。这个指令主要用于确保内存访问和指令执行的顺序性,以提高系统的可靠性和一致性。

在多核处理器或者多线程环境下,使用 isb 指令可以确保内存访问和指令执行的顺序性,从而提高系统的可靠性和一致性。

orr

orr 是 ARM 汇编语言中的一条指令,代表 “OR with immediate”,用于将一个寄存器的值与一个立即数进行按位或运算,并将结果存储回目标寄存器中。其格式通常如下:

orr Rd, Rn, #expression

其中:

  • Rd 是目标寄存器,用于存储运算结果。
  • Rn 是源寄存器,包含要进行运算的原始数据。
  • #expression 是一个立即数,表示要进行按位或运算的值。

在执行时,orr 指令会将源寄存器 Rn 中的值与 #expression 进行按位或运算,并将结果存储到目标寄存器 Rd 中。

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

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

相关文章

Mac - Node/Java 配置安装全流程

Mac - Node/Java 配置安装全流程 一. Git 安装二. Java 相关安装2.1 jenv 版本控制工具2.2 JDK1.8 和 JDK21的安装2.3 maven 安装 三. Node 相关安装3.1 nvm 版本控制工具3.2 Node 版本安装 一. Git 安装 1.我们首先安装一下Homebrew,这个工具很有用,能…

LLM的基础模型7:Positional Encoding

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

单列集合.java

单列集合 为了存储不同类型的多个对象,Java提供了一些特殊系列的类,这些类可以存储任意类型的对象,并且存储的长度可变,这些类统称为集合。可以简单的理解为一个长度可变,可以存储不同数据类型的动态数组。集合都位于j…

【机器学习】原理与应用场景 Python代码展现

机器学习:原理、应用与实例深度解析 引言一、机器学习的基本原理二、机器学习的应用范围三、机器学习实例解析四、机器学习部分讲解五、机器学习的挑战与未来 引言 随着大数据和计算能力的飞速发展,机器学习(Machine Learning, ML&#xff0…

【UML用户指南】-10-对高级结构建模-高级类

目录 1、类目 2、高级类 3、可见性 4、实例范围和静态范围 5、抽象元素、叶子元素和多态性元素 6、多重性 7、属性 8、操作 9、模板类 10、标准元素 1、类目 类目 (classifier)是描述结构特征和行为特征的机制。类目包括类、关联、接口、数据类…

补充SimGNN

补充SimGNN 理解Test函数: 理解Test函数: 理解test()函数中部分代码: 假设数据: test_dataset [ {“norm_ged”: 0.1, “edge_index_1”: …, “edge_index_2”: …, “features_1”: …, “features_2”:…

常见硬件工程师面试题(一)

大家好,我是山羊君Goat。 对于硬件工程师,学习的东西主要和电路硬件相关,所以在硬件工程师的面试中,对于经验是十分看重的,像PCB设计,电路设计原理,模拟电路,数字电路等等相关的知识…

人工智能治理国内外政策与标准分析

文│阿里巴巴标准化部 朱红儒、彭骏涛、孙勇;中国信息通信研究院安全研究所 静静 人工智能(AI)作为新一轮科技革命的重要驱动力量,正在有效推动着数字化转型,其带来巨大机遇的同时,也伴随着新的风险和挑战…

数据库设计步骤、E-R图转关系模式、E-R图的画法

一、数据库设计步骤 ①需求分析阶段 准确了解与分析用户需求。 ②概念结构设计阶段 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。 ③逻辑结构设计阶段 将概念结构转换为某个数据库管理系统所支持的数据模型&am…

“安全生产月”专题报道:AI智能监控技术如何助力安全生产

今年6月是第23个全国“安全生产月”,6月16日为全国“安全宣传咨询日”。今年全国“安全生产月”活动主题为“人人讲安全、个个会应急——畅通生命通道”。近日,国务院安委会办公室、应急管理部对开展好2024年全国“安全生产月”活动作出安排部署。 随着科…

SpringBoot的maven项目自定义打包结构

文章目录 1. 背景2. 自定义打包结构3. 打包结果 1. 背景 加入新团队,发现项目打包后只有一个大大的jar包,每次修改了一个模块的代码,都要整个上传。效率低还浪费流量呢,哈哈。假如每次修改一个模块的一点代码,单独打包…

RLHF(从人类反馈中进行强化学习)详解(三)

在经过了前两节的内容学习之后,我们对于RLHF(从人类反馈中进行强化学习)有了比较深入的认知,并且初步了解了RLHF中偏好数据集的引入,奖励模型的设置以及baseLLM的训练过程。在本节的学习中,我们将深入LLM的…

【ssh命令】ssh登录远程服务器

命令格式:ssh 用户名主机IP # 使用非默认端口: -p 端口号 ssh changxianrui192.168.100.100 -p 1022 # 使用默认端口 22 ssh changxianrui192.168.100.100 然后输入密码,就可以登录进去了。

进位(bit)

进位 题目描述 给定两个整数 a 与 b,请计算在十进制加法过程中,ab 产生了多少次进位。 输入格式 第一行:单个整数表示 a。 第二行:单个整数表示 b。 输出格式 单个整数:表示发生进位的次数。 样例 #1 样例输入…

Java使用GDAL来解析KMZ及KML实战

目录 前言 一、在GQIS中浏览数据 1、关于空间参考 2、属性表格 二、GDAL的相关驱动及解析实战 1、GDAL中的KMZ驱动 2、GDAL实际解析 三、数据解析成果 1、KML解析结果 2、KMZ文件入库 四、总结 前言 在前面的博客中讲过纯Java实现Google地图的KMZ和KML文件的解析&…

问题:歌剧序曲是用什么曲式写成? #学习方法#其他#经验分享

问题:歌剧序曲是用什么曲式写成? A、贝多芬 B、海顿 C、肖邦 D、莫扎特 参考答案如图所示

天诚公租房、人才公寓NB-IOT人脸物联网智能门锁解决方案

近期,全国已有超70城推出商品房“以旧换新”。各地商品房“以旧换新”主要采取国企收购、市场联动、税费补贴三种模式,二手房和新房市场交易活跃度均有提升。 一、人才公寓掀起建设浪潮 事实上,旧房被收购后将被纳入保障性租赁住房&#xf…

【MySQL数据库】my.ini文件参数中文注释

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

【调试笔记-20240606-Linux-为 OpenWrt 的 nginx 服务器添加Shell CGI 支持】

调试笔记-系列文章目录 调试笔记-20240606-Linux-为 OpenWrt 的 nginx 服务器添加Shell CGI 支持 文章目录 调试笔记-系列文章目录调试笔记-20240606-Linux-为 OpenWrt 的 nginx 服务器添加Shell CGI 支持 前言一、调试环境操作系统:Windows 10 专业版调试环境调试…

片机+ISD1760智能家用语音唤醒系统设计

在节奏过快的生活中,人们承受的精神和心理压力十分巨大,这就使得现代人都希望在当代繁忙而枯燥的工作和学习中能身心愉悦的生活。随着信息化发展水平的逐步提高,智能化系统越来越受到人们的重视。市场上普遍的闹钟只是一种到了人们设定的时间就被令人烦躁的声音而吵醒的机械化…