我们知道 arm 体系或 x86 体系中(我比较关心 arm ),在进行函数调用时,会区分 Caller saved 和 Callee saved (就是把通用寄存器划分为两个范围)。
软件行为我是指:我在汇编代码中能够看到保存的过程(就是入栈和出栈)。比如在被调用的函数( Callee )里如果改变了 Callee saved 寄存器,那么在 这个函数里的开头结尾,就会分别出一个 入栈保存和出栈恢复 的操作(如果没有改变 Callee saved 寄存器,那么就不会多这两个操作)。
硬件行为我是指:是 CPU 自动做的,不是我在汇编代码里面能看到的指令。
然后我现在理解,保存 Callee saved 寄存器的行为,应该是一个软件行为。但,保存 Caller saved 寄存器的行为,是什么行为呢?——如果能附上 arm 文档链接和原话就更好了。
saved, callee, 寄存, Caller