在操作系统中有一个关键的操作是上下文切换,上下文切换中有两类寄存器,在不同CPU上的C手册上有不同的叫法,下面列出一些CPU的不同叫法. AVR call saved call used MSP430 callee caller TMS320F2812 Save on Entry Save on Call 开始看这些文档时,理解起来很费力.后来慢慢体会到了原来两种寄存器保护责任者不同而已.在正常的函数调用过程中(不考虑中断情况),两种责任者是调用函数和被调函数,或者叫父函数和子函数. 父函数在调用一个子函数之前负责保护的这一批寄存器叫Save on Call,子函数可以任意使用这些寄存器而不用预先保护它们;还有另外一批寄存器Save on Entry,子函数需要使用时必须提前保护,这些寄存器在父函数那里不会得到保护.
|