出了下一条机器指令的地址之外还有一些,比如一些通用寄存器(ax,cx,dx)和段寄存器(段寄存器我记不请到底要不要放进栈里了),总之还是要存很多东西的,但是还有一些,比如bx寄存器则是不压栈的,这部分是留给函数代码在使用前去保存的。所以CPU的上下文是要保存的。
不定参数一般是不能知道他们的数量的,除非像int main(int argc char *argv[])这样,用一个变量来说明,如果是int printf(char *fmt, ...);这样的函数,要读后面几个参数是有前面的变量fmt中的内容决定的,在函数里根据fmt的内容去判断的。