C/C++编译器的函数调用有一套严格的规则。除特定的支持函数外,任何调用或被C/C++函数调用的函数均必须遵守这些规则。不遵循这些规则可能破坏C/C++环境并导致程序错误。
|
函数如何调用
当一个函数(父函数)调用另一个函数(子函数)时需执行以下任务:
(1)按2节的寄存器使用规则把需传递的函数参数放入寄存器或堆栈。
(2)如果A0~A9及B0~B9的值在函数调用后还有用,调用时需将他们压人堆栈保存。
(3)父函数调用子函数。
(4)返回时,主函数通过增加堆栈指针地址来释放函数调用开始处参数所站空间。
3.2被调用函数如何响应
(1)被调用函数(子函数)在堆栈中的局部变量、临时变量及被该函数调用的其他函数的变量分配足够空间。堆栈分配在函数开始处执行,有可能包括帧指针(FP)的分配。帧指针用于从堆栈中读参数及处理寄存器溢