RTOS(4)保存现场与恢复现场(结合汇编分析)

1.函数调用过程

1.在执行add_val()时,调用c函数的时候,第一个参数保存在R0里,第二个参数保存在R1里;所以,R0=&a,R1=&b,LR=下一条指令的地址(也就是165行);

2.将局部变量和返回地址压入栈中;

3.R2=a;将R2写入sp所指的位置,那么栈中原来存R3的位置变成了新的R2,也就是tmp这个临时变量;

4.R2=b=2;R3=tmp=1;R2=R2+R3=a+b=3;将R2写入sp所指的位置,tmp=3;

5.R2=tmp=3;a=R2;

6.将R3,LR弹出栈。LR赋值给PC,跳转到返回地址继续执行;

2.如何保护现场

a.什么叫做现场?

被打断瞬间,所有寄存器的值;

b.怎么保存?

存入栈中;

3.保存现场的多种情况

a保存现场;

|------------------------|
| 1.任务切换:所有寄存器都要保存 |
| 2.函数调用:R0,R1,R2传参的不保存; |
| 3.硬件中断:硬件保存了一部分+软件保存 |

b执行函数/处理中断;

c恢复现场;

相关推荐
禅思院10 小时前
AI对话前端从入门到崩溃:一个长对话引发的五层优化战争【引子】
前端·面试·架构
林希_Rachel_傻希希11 小时前
web性能之相关路径——AI总结
前端·javascript·面试
掘金小豆11 小时前
Spring 事务失效的 6 大场景,你踩过几个?
后端·spring·面试
不好听61311 小时前
从零搭建一个 RAG 语义搜索系统 —— DEMO的初始阶段
javascript·面试·llm
黄敬峰12 小时前
RAG 实战:从关键词匹配到语义搜索,手把手教你用 Node.js 搭建 AI 检索引擎
面试
wear工程师12 小时前
Redis 分布式锁到底靠不靠谱:从 SETNX 到 Redlock,我踩过的坑和业内的争议
redis·面试
飞天狗12 小时前
TypeScript类型系统其实是个图灵完备的语言
面试·typescript
掘金安东尼12 小时前
中小厂前端候选人简历面试拆解:从 HR 面、技术面到主管面的双赢提问法
前端·面试
用户852495071841 天前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo1 天前
Vite进阶用法详解
前端·javascript·面试