【韦东山RT-Thread系列教程】P1-P10笔记

发布时间 2023-04-21 10:41:25作者: MasterBean

1、线程在切换时,仅仅保存中间结果。例如,b=a+10 包含 tmp=a+10b=tmp 两个过程,当执行完 tmp = a+10 后,线程出现切换,那么OS需要保存这个中间结果。

2、汇编跳转指令——BL指令(即Branch And Link)
BL指令的作用之一是记录返回地址,然后执行当前指令。
如下函数:

fun()
{
  add_val(a, b);   ---> BL.W 0x0810001 add_val =>[记录A的返回地址,执行指令A]
  return 0;
}

以如下汇编语句为例分析:
BL.W 0x0810001 add_val
调用地址为 0x0810001 的子程序 add_val,并将子程序的返回地址(下一条语句,此处为 return 0)保存在 LR 寄存器。BL.W表示使用32位跳转指令进行函数调用。

3、LR(Link Register)链接寄存器
用于存放子程序的返回地址。在进入子程序之前,先将子程序的返回地址存入LR

4、C语言一条局部赋值语句,它是如何在汇编语言实现的?它的具体过程是如何的?
第一步将数值放到寄存器,第二步将寄存器的值放到栈里
举例:
【C语言】int a = 1;
【汇编】 1) MOVS r0, #0x01 2) STR r0, [sp, #0x04]