【FreeRTOS学习笔记】1.ARM架构以及汇编指令简明了解

CPU中的一些特殊寄存器:

R13堆栈指针,SP
R14程序链接寄存器,LR(返回地址)
R15程序计数器PC(下一条将要执行指令的地址)

几个常用汇编指令:

指令例子解释
读LoadLDR     R0 ,   [addrx]CPU从RAM中addrx地址里读出数据存放到R0里
写StoreSTR     R0 ,   [addrx]CPU把R0中的数据读到RAM中addrx地址处
加ADDADD     R0,R1,R2R0=R1+R2
写PushPush     {R3,LR}把R3,LR中的值写到SP指向的地址中
读PopPop        {R3,PC}     把SP指向的地址数据依次读入RC和PC中

①写Push具体流程是,sp先向下自减4,再写入R3,花括号{}里寄存器的顺序可以乱排,CPU高标号的寄存器写入高地址,CPU低标号的寄存器写入低地址。

②读Pop具体流程是,先把sp指向的地址读入R3,sp向上自加4,再读出一个数据赋给PC。

举例:执行运算a=a+b

CPU怎么去执行任务?

比如 a=a+b ,程序写入flash里后,保存的是一些指令,CPU先从flash中读出指令,再从RAM中读写具体的变量数据,在CPU中进行计算。

怎么保存现场?
一. 现场:指的就是CPU寄存器的值。

二. 不同的切换任务的类型,保存现场的方式不同:

   1.任务切换时,即不同程序之间的切换,CPU中所有寄存器的值都有可能改变,所以都要保存。

   2.硬件中断时,硬件会自动保存一些寄存器,所以不必保存所有的现场。

   3.A函数中执行B函数时,B函数用到的寄存器,对A来说不用保存。

   注:现场(寄存器的值)保存在栈里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笋干谬撒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值