函数类型

基本上有两种函数类型。 需要堆栈帧的函数称为帧函数。 不需要堆栈帧的函数称为叶函数。

帧函数是分配堆栈空间、调用其他函数、保存非易失寄存器或使用异常处理的函数。 它还要求有一个函数表项。 帧函数需要有 Prolog 和 Epilog。 帧函数可以动态分配堆栈空间并采用帧指针。 帧函数可以全权处理此调用标准的所有功能。

如果帧函数不调用另一个函数,那么就不需要用它来对齐堆栈(请参考 堆栈分配 一节)。

叶函数不需要函数表项。 它不能调用任何函数,不能分配空间,也不能保存任何非易失寄存器。 执行叶函数时,允许不对齐堆栈。

请参见

参考

堆栈使用