ARM架构简明教程

RTOS中的栈

创建任务时为什么要指定

 一、ARM架构

1、RISC

电脑组成:CPU、内存、硬盘

单片机组成:CPU、内存、flash

 在计算过程中,数值保存在CPU的哪里?

程序保存在flash上,数值保存在内存里;

CPU内部有计算单元和各种寄存器;计算单元进行计算,寄存器进行内存数据的读写

有其他用途的寄存器

R13:别名SP,栈指针(保存栈地址)

R14:LR,用来保存返回地址

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

2、汇编指令

数据传输时候的三个参数: 

 二、C函数的反汇编

本质上还是读内存,写内存,加加减减,跳转

1、add函数

函数中加volatile就是为了不想让编译器做某些优化

a,b,sum为3个局部变量,保存在栈里

 

 2、add函数的调用

参数的传递

  1. 设置R0,R1分别为1和cnt
  2. 调用add函数

3、单片机执行程序的流程

  1. cpu读flash地址得到机器码
  2. cpu执行机器码

以机器码为例:

  1. push把三个寄存器的值写到栈里,并调整栈的位置
  2. lr为返回地址,返回while循环的末尾,对于汇编代码来说,返回到

sum函数汇编流程 

 

三、函数被打断后发生什么事情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值