凯里网站建设如何收费,大连网站排名推广,自己注册一家公司需要多少钱,wordpress固定链接怎么设置ARM内核 函数的调用加载、存储计算中断异常线程的切换 为了提高学习效率#xff0c;我们要提前想好学习策略。 首先#xff0c;使用频率越高的知识点#xff0c;越要首先学习。假使#xff0c;我们学习了一个知识点#xff0c;能覆盖工作中80%的工作量#xff0c;那是不是… ARM内核 函数的调用加载、存储计算中断异常线程的切换 为了提高学习效率我们要提前想好学习策略。 首先使用频率越高的知识点越要首先学习。假使我们学习了一个知识点能覆盖工作中80%的工作量那是不是很夸张的学习效率 其次有两种覆盖知识点梳理知识点的策略。一种是将知识按体系划分挨个学习系统学习。具体而形象的学习样板就是教科书。第一章第二章等等挨个分支学习、梳理。如果我们要讲述应题的知识就要按寄存器、计算机工作原理、汇编指令、内核架构分体系去挨个讲解。还有一种策略就是面对问题。比如我们首先提出一个问题“函数调用从C语言到汇编再到CPU内核,以及寄存器的工作表现是怎样实现的”如果我们把这个问题讲解清楚就要把各个牵涉的体系知识揉到一起讲解。第二种策略似乎更能把使用频率高的知识点串一起一起学习。是我们面对工程应用更好的学习策略。因为我们不是做研究啊如果我们用第二种工作策略感觉收益不大了因为使用频率低的这种学习方式我们不易接触到无法高效率补充知识盲点。那么我们就应该更换第一中学习策略了补充知识盲点系统学习系统梳理。 ok我们采用第二种策略开始学习。
函数的调用
要实现函数调用有至少要有四步
压栈保护当前函数现场。跳转实现函数跳转。 a. 读参数 b. 运算、运行 c. 返回结果跳转返回父级函数。出栈恢复现场。
用实例来对应感受一下。 对应的汇编 可见套路既是 5. 压栈保护当前函数现场。 { PUSH 或者 LDR } sp寄存器Rx寄存器 6. 跳转实现函数跳转。{B、BL、BX}对应给PC寄存器赋值 a. 读参数 (出栈【从栈读取】、或者R0、R1) b. 运算、运行 ADD等 c. 返回结果(压栈【从栈保存】或者R0、R1) 7. 跳转返回父级函数。{B、BL、BX 但对应LR} 对应给PC寄存器赋值 8. 出栈恢复现场。{POP 或者LDR}, sp寄存器Rx寄存器
【注意】
跳转前保存下一条指令地址至LR寄存器 不带返回的跳转指令B, 不会保存地址至LR寄存器 带返回的跳转指令BL会自动保存地址至LR寄存器在子函数不会自动跳回父函数需要手动将LR寄存器的值赋给PC寄存器才能跳转回来
加载、存储
计算
中断
异常
线程的切换