[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