韦东山FreeRTOS(1)ARM架构简明教程

news2025/1/15 3:19:09

ARM架构简明教程

1. ARM架构

1.1 RISC

ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点:

① 对内存只有读、写指令

② 对于数据的运算是在CPU内部实现

③ 使用RISC指令的CPU复杂度小一点,易于设计

在这里插入图片描述

对于上图所示的乘法运算a = a * b,

在RISC中要使用4条汇编指令:

① 读内存a

② 读内存b

③ 计算a*b

④ 把结果写入内存

1.2 提出问题

问题:在CPU内部,用什么来保存a、b、a*b ?

1.3 CPU内部寄存器

在这里插入图片描述

无论是cortex-M3/M4,

还是cortex-A7,

CPU内部都有R0、R1、……、R15寄存器;

它们可以用来“暂存”数据。

在这里插入图片描述

对于R13、R14、R15,还另有用途:

R13:别名SP(Stack Pointer),栈指针

R14:别名LR(Link Register),用来保存返回地址

R15:别名PC(Program Counter),程序计数器,表示当前指令地址,写入新值即可跳转

1.4 汇编指令

  • 读内存:Load

    # 示例
    LDR  R0, [R1, #4]  ; 读地址"R1+4", 得到的4字节数据存入R0
    
  • 写内存:Stroe

    # 示例
    STR  R0, [R1, #4]  ; 把R0的4字节数据写入地址"R1+4"
    
  • 加减

    ADD R0, R1, R2  ; R0=R1+R2
    ADD R0, R0, #1  ; R0=R0+1
    SUB R0, R1, R2  ; R0=R1-R2
    SUB R0, R0, #1  ; R0=R0-1
    
  • 比较

    CMP R0, R1  ; 结果保存在PSR(程序状态寄存器)
    
  • 跳转

    B  main  ; Branch, 直接跳转
    BL main  ; Branch and Link, 先把返回地址保存在LR寄存器里再跳转
    

2. C函数的反汇编

C函数:

int add(volatile int a, volatile int b)
{
	volatile int sum;
    sum = a + b;
    return sum;
}

让Keil生成反汇编:

在这里插入图片描述

为例方便复制,制作反汇编的指令如下:

fromelf  --text  -a -c  --output=xxx.dis  xxx.axf

C函数add的反汇编代码如下:

    i.add
    add
        0x08002f34:    b503        ..      PUSH     {r0,r1,lr}
        0x08002f36:    b081        ..      SUB      sp,sp,#4
        0x08002f38:    e9dd0101    ....    LDRD     r0,r1,[sp,#4]
        0x08002f3c:    4408        .D      ADD      r0,r0,r1
        0x08002f3e:    9000        ..      STR      r0,[sp,#0]
        0x08002f40:    bd0e        ..      POP      {r1-r3,pc}

总结

3-2-ARM.png

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

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

相关文章

spy最新安装教程!!青龙+spy,东东豆豆多)

spy最新安装教程!!青龙spy,东东豆豆多 spy最新安装教程!!服务器推荐!第一步 docker安装下载安装Spy(以下教程源自Faker的教程)获取Spy授权获取T\*e\*l\*e\*gram API以及参数修改配置…

简单了解一下:NodeJS的WebSocket网络编程

NodeJS的webSocket网络编程。 那什么是WebSocket呢?WebSocket是HTML5提供的一种浏览器和服务器进行通信的网络技术。两者之间,只需要做一个握手动作,就可以在浏览器和服务器之间开启一条通道,就可以进行数据相互传输。 实现WebS…

Linux 进程切换与命令行参数

假设进程1现在要切走了,切入进程2.那进程1就要先保存数据,方便以后恢复, 然后进程2再切走,进程1再把数据还原: 操作系统又分为实时操作系统和分时操作系统。 实时操作系统是是给操作系统一个进程,操作系统…

网络安全https

http是明文的,相当于在网上裸奔,引出了https,大多数网站都转为了https,连非法的赌博网站有的都是https的。 1.https的网站是不是必须让用户装数字证书? 答:分两种,一种是单向认证,像…

桥梁结构健康监测系统落地方案

桥梁结构健康监测的意义是多方面的。首先,它可以实时采集桥梁的结构数据,并对其进行处理和分析,以确定结构损伤的位置、评估桥梁的健康状况,并预测承载力的发展趋势。这有助于及时发现桥梁的结构问题和潜在风险,为采取…

2023年中国互联网视听平台发展趋势分析:未来增速将从2023年开始缓慢提升[图]

互联网视听平台是指基于互联网技术,提供包括音频、影视、综艺节目、直播、短视频等内容的数字化传播平台。互联网视听平台通过电脑端、移动端等多种终端提供在线点播、直播、互动等服务,具有内容丰富、便捷高效、交互性强等特点,是大众获取娱…

基础课7——计算机视觉研究任务与行业应用

计算机视觉的研究任务包括以下几个方面: 图像分类(Image Classification):该任务的目标是确定给定图像属于哪个类别。例如,将一张猫的图像分类为“猫”类别。目标检测(Object Detection)&#…

工业异常检测:从前沿到落地

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言一、前沿技术:SimpleNet1. 任务分类:分隔2. 性能对比:faster&higher3. 研究背景困难:方案:无监督数据…

8.1 矢量图层符号化整体说明

文章目录 前言符号化与图层渲染符号符号层渲染器 总结 前言 地图制图是QGIS的优势所在,QGIS包含完整的地图制图功能,如标注与注记、符号化与地图综合等多种功能。 符号化(Symbolization)是指利用符号将地理事物或现象抽象化。 QGi…

STM32-ADC实验

实验1:单ADC单通道中断 硬件原理图 由于PC1接到电位器上,所以我们实验选择PC1引脚作为ADC接口,查询STM32数据手册得知PC1可作为ADC1的IN11(ADC1_IN11)。 USART配置 115200-8-N-1,重定向支持printf打印&…

超简单的视差滚动网站

超简单的视差滚动网站 原理能就是记录鼠标的滚动,然后给不同的元素添加不同的偏移 遵循开源精神,源码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width…

视觉SLAM数据集(三):KITTI 数据集

教程目录 一、官网二、注册登录三、下载数据集四、测试数据集 一、官网 官网地址&#xff1a;https://www.cvlibs.net/datasets/kitti/eval_odometry.php Kitti数据集很庞大&#xff0c;包含了双目、光流、场景流、深度、里程计、目标、跟踪、马路、语义、原始数据等大类别&…

C++入门(3):引用,内联函数

一、引用 1.1 引用特性 引用必须初始化 一个变量可以有多个引用 引用一旦引用一个实体&#xff0c;就不能引用其他实体 int main() {int a 10, C 20;int& b a;b c; // 赋值&#xff1f;还是b变成c的别名&#xff1f;return 0; }1.2 常引用 引用权限可以平移或缩小…

有没有免费靠谱的配音软件?(不带广告)

免费配音软件在当今社会中越来越受到人们的关注和喜爱。随着科技的不断发展和智能手机的普及&#xff0c;配音软件成为了人们生活中不可或缺的一部分。无论是在职场中需要制作视频配音&#xff0c;还是在社交媒体上发布个人动态&#xff0c;配音软件都能帮助我们实现文字转语音…

以太坊搭建私有链(非常详细!!!)

我的系统&#xff1a;CentOS7 64位 我喜欢宝塔的直观&#xff1a; /www/server/panel/pyenv/bin/python3.7 -m pip install --upgrade pip yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed84…

【APP VTable】和市面上的 Table 组件一样,都是接收表格[] 以及数据源[]

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; uni-app | 小程序开发 开发工具&#xff1a;HBuilderX 这里写目录标题 表格组件USE 表格组件 <template><view class"scroll-table-wrapper"><view class"scroll-table-container"…

使用 excel 快速拼接省市区镇街村居五级区划完整名称

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言数据准备excel 函数附件 前言 之前做了国家区划的映射关系&#xff0c;在其过程中&#xff0c;使用代码…

JAVA-编程基础-12-01-创建多线程的3种方式

JAVA-编程基础-12-创建多线程的3种方式 文章目录 JAVA-编程基础-12-创建多线程的3种方式创建一个类继承Thread类&#xff0c;并重写run方法创建一个类实现Runnable接口&#xff0c;并重写run方法实现Callable接口&#xff0c;重写call()方法&#xff0c;这种方式可以通过Future…

亚马逊云代码AI助手CodeWhisperer使用教程

一、CodeWhisperer 简介 1、CodeWhisperer是一款基于机器学习的通用代码生成器&#xff0c;由Amazon出品&#xff0c;可以给我们提供代码建议。 2、CodeWhisperer 基于各种上下文线索提供建议&#xff0c;包括光标在源代码中的位置、位于光标前面的代码、注释&#xff0c;以及…

MR混合现实情景实训教学系统在旅游管理专业中的应用

在旅游管理专业中&#xff0c;MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面&#xff1a; 1. 实地考察的替代&#xff1a;对于一些无法实地考察的景点或设施&#xff0c;学生可以通过MR系统进行虚拟参观&#xff0c;从而了解其实际情况。这不仅可以减少时间和…