[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:85

From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 21 Jun 2004 15:52:25 +0900
Subject: [yarv-dev:85] AOT Compiler

 ささだです。

 JIT コンパイラ: ネイティブコードをせこせこ吐く
 AOT コンパイラ: Ruby Script -> C コード -> shared library として実行

 という計画を考えてました.

 そしたら首藤さんに,

> JIT コンパイラはネイティブコードを吐くのに、
> なんで AOT コンパイラは C ソースコードを吐くんでしょうか。
> 
> 両コンパイラの出力は共通にして、同じコンパイラを使いまわす、というのが
> 普通のやり方のように思います。
> 
> でも実際は
>   - C コンパイラによる最適化を活用したいから、
>     AOT コンパイラは C のソースコードを吐く。
>   - JIT コンパイラから C コンパイラを呼ぶのはいやーんなので、
>     仕方なく、なんとかして、質は良くないかもしれないがネイティブコードを吐く。
> でしょうか?

 といわれました.

 まったくもって首藤さんの推測のとおりです.
 追加するなら,Cに落とすのは比較的楽だと推測されるから,です.
(命令をペタペタ貼り付けする)


 で,わからないのが

- 両コンパイラの出力って何?
- なぜ C コンパイラを通さないの?
  (Cコンパイラの最適化よりもすごいことができる?)

 という点です.

 とくに後者は IBM みたいなところとは違って個人ではちょっと
なー,という気がします.素直に gcc の最適化に任せたい.
(って,gcc 依存な話)


 ただ,Cコンパイラ必須にすると,gcc というか,C コンパイラ
がない環境だと,AOT compiler役にたたないんだよな.


 AOT compiler をしらずに適当に言っていた悲劇かもしれません.

 JIT compiler でも,UTI lisp は実行時に c compiler 呼んでるって
話は聞いたことがあります.でも,それはちょっと富豪過ぎませんかね.
時間なくなったらそうするかも.

-- 
// SASADA Koichi at atdot dot net
//




--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

->      85 2004-06-21 15:52 [ko1 atdot.net       ] AOT Compiler                            
        86 2004-06-21 17:13 ┗[shudo computer.org  ]                                       
        87 2004-06-21 17:37  ┗[ko1 atdot.net       ]                                     
        88 2004-06-21 18:58   ┗[maeda-yarv atusi.org]                                   
        89 2004-06-21 20:35    ┗[ko1 atdot.net       ]                                 
        90 2004-06-21 21:51     ┗[(nil)               ]                               
        91 2004-06-22 01:58      ┗[ko1 atdot.net       ]                             
        92 2004-06-22 13:12       ┗[maeda-yarv atusi.org]                           
        93 2004-06-22 18:58        ┗[ko1 atdot.net       ]