韦东山freertos学习-arm架构及汇编指令

简单的单片机架构
在这里插入图片描述
ARM芯片的指令集是RISV,即精简指令集,具有:
1、对内存只有读、写指令
2、对数据的运算是在CPU内部实现
芯片读写运算的过程,例如a = a*b

在这里插入图片描述
那么CPU内部用什么来保存变量a、b的值呢?
这得深入CPU内部结构了

在这里插入图片描述
指令保存在芯片的FLASH上,数据保存在内存里
flash:
在这里插入图片描述
内存:
在这里插入图片描述
CPU内部寄存器:R0——R15

在这里插入图片描述
R13-SP寄存器, 保存栈指针
R14-LR寄存器, 保存返回地址
R15-程序计数器

一些简单的汇编指令
1、内存相关:
LDR R0, [R1, #4]
读地址“R1+4”,得到的四字节数据存入R0

STR R0, [R1, #4]
写地址,将R0的值写入"R1+4"的地址

2、CPU相关
ADD R0, R1, R2 //R0 = R1 + R2
SUB R0, R1, R2 //R0 = R1 - R2

3、比较
CMP R0, R1
比较R0, R1的值,比较的结果放在xPSR寄存器(程序状态寄存器)中

4、跳转
B main Branch,直接跳转,PC直接跳转
BL main Branch and Link,先把返回地址保存进LR寄存器中,再进行跳转

实例
C函数:
加入volatile防止编译器优化,这样容易看一点
在这里插入图片描述

add函数调用位置:
在这里插入图片描述

add函数的汇编代码:
在这里插入图片描述

调用add的代码的汇编码:
在这里插入图片描述
add函数的具体过程:
在这里插入图片描述
其中, r1寄存器保存常量1
r0保存变量cnt
然后跳转到add函数的执行代码
在这里插入图片描述

具体可以看
https://www.bilibili.com/video/BV1Jw411i7Fz?p=9&spm_id_from=pageDriver&vd_source=59b175c9e7602375c9a2564f595c9e1f

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值