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

ARM Cortex-M4 CPU指令大全:作用、原理与实例

引言

在计算机系统中,CPU(中央处理器)是执行各种指令的核心部件。ARM Cortex-M4是广泛应用于嵌入式系统中的一款处理器,其指令集架构(ISA)基于ARMv7-M。本文将介绍ARM Cortex-M4处理器中的常见指令,包括它们的作用、工作原理,并通过具体例子帮助理解。

1. 数据传输指令

1.1 MOV

作用:将数据从一个位置传输到另一个位置。

原理:MOV指令复制数据,不改变数据源,只是在目标位置存储一个副本。

例子

MOV R0, R1  ; 将寄存器R1的值复制到寄存器R0
MOV R2, #0x1234  ; 将立即数0x1234加载到寄存器R2

1.2 LDR和STR

作用:LDR指令将数据从内存加载到寄存器,STR指令将寄存器的数据存储到内存。

原理:LDR从指定的内存地址读取数据并存入寄存器,STR从寄存器读取数据并写入指定的内存地址。

例子

LDR R0, [R1]  ; 将内存地址R1的值加载到寄存器R0
STR R2, [R3]  ; 将寄存器R2的值存储到内存地址R3

2. 算术指令

2.1 ADD

作用:将两个数相加。

原理:ADD指令对两个操作数进行二进制加法,并将结果存储在目标寄存器。

例子

ADD R0, R1, R2  ; 将寄存器R1和R2的值相加,结果存储在R0

2.2 SUB

作用:将一个数减去另一个数。

原理:SUB指令对两个操作数进行二进制减法,并将结果存储在目标寄存器。

例子

SUB R0, R1, R2  ; 将寄存器R1减去R2的值,结果存储在R0

2.3 MUL和SDIV

作用:MUL用于乘法运算,SDIV用于有符号除法运算。

原理:MUL指令进行二进制乘法,SDIV指令进行有符号二进制除法。

例子

MUL R0, R1, R2  ; 将R1乘以R2,结果存储在R0
SDIV R0, R1, R2 ; 将R1除以R2,商存储在R0

3. 逻辑指令

3.1 AND

作用:按位与运算。

原理:AND指令对两个操作数的每一位进行与运算,结果存储在目标寄存器。

例子

AND R0, R1, R2  ; 对R1和R2进行按位与运算,结果存储在R0

3.2 ORR

作用:按位或运算。

原理:ORR指令对两个操作数的每一位进行或运算,结果存储在目标寄存器。

例子

ORR R0, R1, R2  ; 对R1和R2进行按位或运算,结果存储在R0

3.3 EOR

作用:按位异或运算。

原理:EOR指令对两个操作数的每一位进行异或运算,结果存储在目标寄存器。

例子

EOR R0, R1, R2  ; 对R1和R2进行按位异或运算,结果存储在R0

3.4 MVN

作用:按位取反运算。

原理:MVN指令对操作数的每一位进行取反操作,结果存储在目标寄存器。

例子

MVN R0, R1  ; 对R1进行按位取反运算,结果存储在R0

4. 控制指令

4.1 B

作用:无条件跳转到指定的指令地址。

原理:B指令修改程序计数器(PC)的值,使其指向目标地址,从而实现跳转。

例子

B 0x1000  ; 跳转到地址0x1000

4.2 Conditional Branches (如BEQ, BNE)

作用:根据条件跳转到指定的指令地址。

原理:条件跳转指令根据条件码(如零标志、负标志等)决定是否跳转。

例子

BEQ 0x2000  ; 如果零标志位为1,跳转到地址0x2000
BNE 0x3000  ; 如果零标志位为0,跳转到地址0x3000

4.3 BL和BX

作用:BL用于调用子程序,BX用于从子程序返回或跳转到指定地址。

原理:BL指令保存当前程序计数器的值(返回地址)并跳转到子程序地址,BX指令根据寄存器值跳转。

例子

BL 0x4000  ; 调用子程序地址0x4000
BX LR      ; 从子程序返回,LR中存储了返回地址

5. 数据操作指令

5.1 PUSH和POP

作用:PUSH用于将数据压入堆栈,POP用于将数据从堆栈弹出。

原理:PUSH指令将数据存储在堆栈顶并修改堆栈指针,POP指令从堆栈顶读取数据并修改堆栈指针。

例子

PUSH {R0}  ; 将R0的值压入堆栈
POP {R1}   ; 从堆栈弹出一个值存入R1

结论

ARM Cortex-M4处理器的指令集是其能够执行所有操作的基础。理解这些指令及其工作原理是深入学习嵌入式系统和计算机组成原理的关键。希望本文对您理解ARM Cortex-M4处理器的指令有所帮助。

相关文章:

ARM Cortex-M4 CPU指令大全:作用、原理与实例

引言 在计算机系统中,CPU(中央处理器)是执行各种指令的核心部件。ARM Cortex-M4是广泛应用于嵌入式系统中的一款处理器,其指令集架构(ISA)基于ARMv7-M。本文将介绍ARM Cortex-M4处理器中的常见指令&#x…...

Mysql学习(九)——存储引擎

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 七、存储引擎7.1 MySQL体系结构7.2 存储引擎简介7.3 存储引擎特点7.4 存储引擎选择7.5 总结 七、存储引擎 7.1 MySQL体系结构 连接层:最上层是一些客户…...

TFT屏幕波形显示

REVIEW 关于TFT显示屏,之前已经做过彩条显示: TFT显示屏驱动_tft驱动-CSDN博客 关于ROM IP核,以及coe文件生成: FPGA寄存器 Vivado IP核_fpga寄存器资源-CSDN博客 1. TFT屏幕ROM显示正弦波 ①生成coe文件 %% sin-cos wave dat…...

服务器无法远程桌面连接不上的问题排查与解决方案

一、问题概述 当尝试使用远程桌面协议(RDP)连接至服务器时,如果连接失败,这通常意味着存在一些配置问题、网络问题或服务器本身的问题。此类问题对于管理员而言,需要系统地进行排查和解决。 二、排查步骤 1. 检查网…...

JAVA面试题整理——内存溢出与内存泄露的区别与联系

内存溢出与内存泄露的区别与联系 在前面jvm学习整理的时候其实用过一个简单的例子了解过内存溢出,在jvm内存模型章节下,大家有兴趣的可以去看看:JVM初学 GC_knowwait的博客-CSDN博客 内存溢出 内存溢出(out of memory&#xff09…...

L50--- 104. 二叉树的最大深度(深搜)---Java版

1.题目描述 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 2.思路 这个二叉树的结构如下: 根节点 1 左子节点 2 右子节点 3 左子节点 4 计算过程 从根节点 1 开始计算: 计算左子树的最大深度: 根节点 2&#xf…...

Linux 中 “ 磁盘、进程和内存 ” 的管理

在linux虚拟机中也有磁盘、进程、内存的存在。第一步了解一下磁盘 一、磁盘管理 (1.1)磁盘了解 track( 磁道 ) :就是磁盘上的同心圆,从外向里,依次排序1号,2号磁盘........等等。…...

test_pipeline

test_pipeline 是一个测试管道(test pipeline)的定义。 在计算机视觉任务中,通常需要对输入图像进行一系列的预处理操作,以便将其适配到模型的输入要求或提高模型的性能。测试管道就是用于定义这些预处理操作的一系列步骤。 在给…...

使用甲骨文云arm服务器安装宝塔时nginx无法卸载

使用甲骨文云arm服务器安装宝塔 其他环境都能安装上 唯独nginx安装完不运行 卸载了几次以后还无法卸载了. 修复 重启都不行. 差点就重建主机了. 最后靠下面的命令 就卸载掉了 然后重装就把nginx安装好了 mv /www/server/nginx/sbin/nginx /tmp/nginx_back mv /etc/in…...

C++青少年简明教程:C++的指针入门

C青少年简明教程:C的指针入门 说到指针,就不可能脱离开内存。了解C的指针对于初学者来说可能有些复杂,我们可以试着以一种简单、形象且易于理解的方式来解释: 首先,我们可以将计算机内存想象成一个巨大的有许多格子的…...

Apache Doris 基础 -- 数据表设计(分层存储)

1、应用场景 未来一个重要的用例是类似于ES日志存储,其中日志场景中的数据是根据日期分割的。许多数据都是查询不频繁的冷数据,因此需要降低此类数据的存储成本。考虑到节约成本: 来自不同厂商的常规云磁盘的定价比对象存储更昂贵。Doris 集群实际在线…...

使用Spring Boot设计一套BI系统

商业智能(Business Intelligence,简称BI)系统是一种将数据转化为可操作信息,帮助企业进行决策支持的技术与工具的集合。随着大数据时代的到来,BI系统在企业中的应用变得越来越广泛。本文旨在探讨如何使用Spring Boot框…...

2024.6.12总结

今天是排毕业照的日子,拍照的时候并没有太过兴奋。后来受到主管说明天就能签offer了,这才喜极而泣。 自从得知自己面试通过后,我是非常高兴,开始幻想着今后的生活。可是,后面在等offer的过程中,我是无比的…...

1027 - 求任意三位数各个数位上数字的和

问题描述 对于一个任意的三位自然数 x ,编程计算其各个数位上的数字之和 S 。 输入 输入一行,只有一个整数 x(100≤x≤999) 。 输出 输出只有一行,包括 1 个整数。 样例 输入 123 输出 6 以下是C实现的代码: 代码1 #…...

K8s 卷快照类

卷快照类 卷快照类 这个警告信息通常出现在使用 kubectl 删除 Kubernetes 集群资源时,如果尝试删除的是集群作用域(cluster-scoped)的资源,但指定了命名空间(namespace),就会出现这个警告。 集…...

从零手写实现 nginx-23-directive IF 条件判断指令

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...

08_基于GAN实现人脸图像超分辨率重建实战_超分辨基础理论

1. 超分辨的概念与应用 我们常说的图像分辨率指的是图像长边像素数与图像短边像素数的乘积,比如iPhoneX手机拍摄照片的分辨率为 4032px3024px,为1200万像素。 显然,越高的分辨率能获得更清晰的成像。与之同时,分辨率越高也意味着更大的存储空间,对于空间非常有限的移动设…...

React.ReactElement 与 React.ReactNode

React.ReactNode 在 JSX 中作为子元素传递的所有可能类型的并集&#xff0c;这是对子元素的一个非常宽泛的定义。 <RNode><p>One element</p></RNode><RNode><><p>Fragments for</p><p>More elements</p></&g…...

深度解析服务发布策略之蓝绿发布

目录 什么是蓝绿发布 蓝绿发布的优点 蓝绿发布的缺点 蓝绿发布的实现步骤 小结 在软件开发和运维中&#xff0c;发布新版本是一个风险较高的操作。为了降低风险&#xff0c;提高发布的稳定性和可靠性&#xff0c;通常会采取一系列的技术策略。其中蓝绿发布&#xff08;Blu…...

【Mysql】 深入理解MySQL的执行计划

文章目录 前言一、字段解释二、代码实现三、总结 前言 在日常的数据库操作中&#xff0c;我们经常会遇到一些复杂的查询&#xff0c;这些查询可能会涉及到多个表的联合查询&#xff0c;或者是一些复杂的条件筛选。为了更好地理解和优化这些查询&#xff0c;了解MySQL的执行计划…...

R语言新手必看:ggplot2安装失败的5种常见原因及解决方法(附完整代码)

R语言ggplot2安装问题全解析&#xff1a;从报错排查到可视化实战 第一次接触R语言的ggplot2包时&#xff0c;那种兴奋和期待往往会被突如其来的报错信息浇灭。作为R社区最受欢迎的数据可视化工具&#xff0c;ggplot2以其优雅的语法和强大的定制能力吸引了无数用户&#xff0c;但…...

数据库表的性能优化过程

问题背景做一个数据库表查看、标注与分析的工具软件。是数据库中表的信息&#xff08;information_schema.tables&#xff09;&#xff1b;是的数据字典文档&#xff0c;存储在本地文件中&#xff1b;是对的额外标注信息&#xff0c;存储在另一个数据库中。每一条&#xff0c;最…...

OpenClaw+SecGPT-14B联动方案:3类网络安全自动化场景实测

OpenClawSecGPT-14B联动方案&#xff1a;3类网络安全自动化场景实测 1. 为什么选择这个技术组合&#xff1f; 去年我在做安全研究时&#xff0c;经常需要重复处理三类任务&#xff1a;分析漏洞报告、检查日志异常、收集威胁情报。这些工作既需要专业判断&#xff0c;又包含大…...

能源在线监测管理系统平台[fu源码]

EMS能源管理系统 基于 Vue3 / Spring Boot/Spring Cloud & Alibaba 微服务架构 项目技术框架 RuoYi-Cloud 基础框架上开发而成 源智优控AI能源大脑&#xff0c;能源AI版&#xff0c;即将上线 仓库地址&#xff1a; https://gitee.com/guangdong122/energy-management …...

【仅限首批认证用户开放】Polars 2.0企业清洗最佳实践白皮书(含GDPR脱敏DSL语法速查表)

第一章&#xff1a;Polars 2.0企业级数据清洗能力全景概览Polars 2.0 将数据清洗从“脚本式修补”推向“工程化流水线”&#xff0c;依托零拷贝内存模型、并行执行引擎与声明式 API&#xff0c;原生支持高吞吐、低延迟、强一致性的清洗任务。其核心能力不再依赖 Pandas 风格的链…...

4步攻克Fiji在macOS系统的启动难题:从诊断到长效维护的全方位解决方案

4步攻克Fiji在macOS系统的启动难题&#xff1a;从诊断到长效维护的全方位解决方案 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji 问题定位&#xff1a;精准识别Fiji启动…...

自适应陷波器的FPGA实现 作用:消除特定频率的干扰信号 包含quartus源码与models...

自适应陷波器的FPGA实现 作用:消除特定频率的干扰信号 包含quartus源码与modelsim仿真自适应陷波器 FPGA 实现 —— 从算法到硬件的完整技术解码一、引言在通信、雷达、音频以及工业测控等场景中&#xff0c;窄带干扰往往比宽带噪声更难处理&#xff1a;它能量集中、时变性强&…...

AnythingtoRealCharacters2511镜像免配置部署教程:Docker+ComfyUI开箱即用方案

AnythingtoRealCharacters2511镜像免配置部署教程&#xff1a;DockerComfyUI开箱即用方案 想快速将动漫人物变成真实照片&#xff1f;这个教程教你10分钟搞定专业级动漫转真人效果&#xff0c;无需任何技术背景&#xff01; 1. 为什么选择这个镜像&#xff1f; 如果你曾经尝试…...

保姆级教程:在PX4 SITL仿真中为Iris无人机挂载Kinect、RPLidar和FPV摄像头

PX4仿真环境多传感器集成实战&#xff1a;从零搭建SLAM无人机开发平台 无人机仿真开发中最令人头疼的&#xff0c;莫过于将各类传感器完美集成到飞行平台上。我曾花了整整两周时间调试Kinect和RPLidar在Gazebo中的兼容性问题&#xff0c;直到找到这套经过验证的解决方案。本文将…...

CosyVoice2-0.5B效果实测:背景噪音音频对克隆效果影响量化

CosyVoice2-0.5B效果实测&#xff1a;背景噪音音频对克隆效果影响量化 1. 测试背景与目的 声音克隆技术近年来发展迅猛&#xff0c;阿里开源的CosyVoice2-0.5B作为一款强大的零样本语音合成系统&#xff0c;能够在短短3秒内复刻任意说话人的声音。但在实际应用中&#xff0c;…...