4.5 题外话: C 语言的函数调用过程

Pcode 的函数调用过程参考了 x86(32bits) 架构下的 C 语言 stdcall 类型的函数调用约定,整个流程基本一致。 stdcall 的不同之处主要在于:

(1) 参数是按 从右向左 的顺序入栈的;

(2) 函数的返回值保存在寄存器 eax 中,而不是栈顶。

这样做的效率比 Pcode 所采用的方式稍微好一些, Pcode 所采用的方式是和为了和逆波兰表达式的逻辑顺序匹配的,使 Pcode 更加简短、可读性更强、手工翻译的难度和编译器的实现难度都更低,总而言之, Pcode 采用方式好看、简单,易于实现,但实用性稍差,仅用于学习和研究。

网友 clover_toeic 的博客中非常深入的介绍了 C 语言函数调用过程,有兴趣的读者可以读一读,网址为:

http://www.cnblogs.com/clover-toeic/p/3755401.html

第4章完