澤口@一升金です。 Kazutaka さんの<20040408141110.30434@xxxxxxxxxxxxxx>から >でもまさか実際にstaticとは..... ちょっと Cygwin の gcc でアセンブラソースを吐かせてみました ら、スタックには確保してます。でも、初期値として 0 を代入し ていました。 で、明示的に static と宣言してやると・・・やっぱりスタックに 確保して 0 を代入してました。なんじゃぁ? ちなみに、普通の関数内で宣言した static 変数は別セグメントに 確保され、static でなければスタック上に確保されて自動的には 0 で初期化されません。 >なるほどなるほど。でも、そういうCPUの場合の自動変数っていったいどうや >って確保してたんでしょうね....。 > >いや、その方法ってH8の時にもなんらかの参考(例えばメモリ確保に関しての >ノウハウとか)にならないかなぁと思ったものですから(^_^;)。 その場合は、データ領域にポインタ変数をとるか、汎用レジスタを 一つ専用に使ってこれをスタックポインタ代わりにします。 要するに、データを格納してポインタをデクリメント(PUSH) と、データを取り出してインクリメント(POP)動作をさせれば よいわけです。PUSH、POP命令が使えないのでニモニック数が増えま すが。 普通のCPUはスタックポインタが1つしかありませんので、複数の スタックポインタを使う言語、例えば Forth などではこういうテク ニックを使います。