C言語の 関数コールの形式は、 すべて "値による呼び出し" (call byvalue) です。 MS-C では通常、スタックをつかって引数を受け渡ししています。 たとえば、
int nibai(int x) {
return 2*x ;
}
という関数を考えてみましょう。
int main(void) {
:
x = nibai(1) ;
:
}
と呼ばれたとき、main()側では、
こう引数をスタックにpushしてから、 nibai()をよびます。 呼び出された nibai() 側では SPの値を見て、 リターンアドレスの下に積んである引数の値(=1)を知るのです。