[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 1105] Re: JavaVM のスタック( Re: はじめまして)
岩間さん、こんにちは。リギーコーポレーションの片桐です。
| ちょっと、話題からずれるかと思いますが、今月号(3月号)の
| bit 誌に、『JIT コンパイラの開発』という記事があって、そこに
| 関数呼び出し時のスタックの挙動について書いてあります。そこを
| 読むと、
|
| プログラム制御の流れによってスタックを動的に扱えない
|
| ということが書いてあります。だから、各命令を実行するときのス
| タックの深さは固定になって、スタックの操作をせずにスタックに
| 詰まれた内容を操作することができるそうです。
情報有りがとうございます。今度本屋さんに行ったら読んでみます。
Java言語は、
「引数をスタックで渡す」(←FORTHのそれとは少し違うんですが‥)
ことはあっても、
「(複数の)戻値をスタックで返す」
ことはないんですね。あ、引数じゃなくてオブジェクトって言うんでしたっ
け。そのために(Java言語レベルでは)スタックを明に使うことができないとい
うか、その必要がないようです。
「ああ、もったいない」とFORTH派は思うのですが(^^)。
CやJava(上のほう)が関数呼び出しでスタックにパラメータを積むのは、そ
れこそ話に出ている「レジスタ」の変わりみたいなもので短期間使うだけです
ね。呼び出しから帰って来ると消えてしまいますし。
FORTH系では、スタックに積んだデータはかなり長期間生きています(その
気になれば、プログラムが走っているあいだずーっと)。局所変数の一種であ
るにもかかわらず、名前の付いていない大域変数のような性質も持つという感
じでしょうか。(その関数のスコープから外れても生きているという意味で)
片桐 明 (株)リギーコーポレーション
killy@rigy.co.jp
NIFTY: PAG01434