ZHCADC4A September 2011 – March 2014
如节 3.2所述,函数负责保留指定为被调用者保存 的寄存器内容,这通常是通过在进入函数时将修改后的寄存器保存在本地帧并在退出前将其恢复来完成的。通常,被调用者保存的寄存器在栈上的顺序和位置并不重要,只要它们从保存时的相同位置恢复即可。在大多数情况下,编译器以任意顺序保存寄存器。但是,有一些功能需要已知的顺序:
被调用者保存的寄存器安全调试顺序为 A15、B15、B14、B13、B12、B11、B10、B3、A14、A13、A12、A11、A10。
当使用安全调试并且没有特殊栈布局时(请参阅节 4.4.3和节 4.4.4),编译器将始终按照该相对顺序保存寄存器,从帧的底部(最高地址)开始。如果未保存任何寄存器,则寄存器将打包,使栈中没有空洞,但相对顺序保持不变。