KLIJava: KL1 to Java Compiler based on KLIC 3.002 990302-SNAPSHOT (C)1993, 1994, 1995 Institute for New Generation Computer Technology (Read COPYRIGHT for detailed information.) (C)1996, 1997 Japan Information Processing Development Center (Read COPYRIGHT-JIPDEC for detailed information.) Copyright(C) 1998,1999 Satoshi KURAMOCHI ・概要 KLIC-3.002 のコンパイラを改造して Java のコードを出力するコンパイラを作 成しました。実行時ライブラリは Java で書き直してあります。 とりあえずコンパイラのセルフコンパイルを目標に実装を進めていますが、まだ デバッグが終了していないため、コンパイラは動作しません。また、テストプロ グラムの中にも実行時エラーになるものがいくつか残っています。 ・配布ファイルに含まれているもの compiler/ コンパイラのソースコード kl1/lang/ 実行時ライブラリのソースコード test/ テストプログラム ・動作環境 コンパイラ: KLIC-3.002 の動作する環境 出力プログラム: JDK 1.1 以上 ・現在、動作を確認しているプログラム append.kl1, cmac.kl1, fact.kl1, fiblazy.kl1, hanoi.kl1, iotest.kl1, kkqueen.kl1, life.kl1, mastermind.kl1, pascal.kl1, pp.kl1, primes.kl1, primesp.kl1, prio.kl1, qlay.kl1, qsort.kl1 ・まだ実装されていない機能、TODO - 一部の組込み述語(UNIX インタフェース, タイマ, postmortem など) - 一部のジェネリックオブジェクト(I/O など) - トレーサ - 分散処理 - 出力コードの最適化 - デバッグ など ・新機能 - Java とのインタフェース(GUI、アプレットなど) - インライン Java :-) ・コンパイル手順 コンパイラの作成 % cd compiler % make ランタイムライブラリの作成 % cd ../kl1/lang % make symlinks % make ・テストプログラムを実行するには、以下のようにします。 % setenv CLASSPATH $CLASSPATH:トップディレクトリ % ./compiler/kl1cmp foo.java % cp foo.java Module_main.java % javac Module_main.java % java Module_main ・ベンチマーク結果(参考) compiler KLIC KLIJava (sec) ----------------------------------------------------- primes(10000) 0.37 14.98 (x 40.49) kkqueen(10) 0.33 12.98 (x 39.33) life(120,38,38,4,4) 1.22 22.28 (x 18.26) mastermind(3,3) 0.77 26.97 (x 35.03) MMX-Pentium 266MHz, 64MB, Linux 2.0.33 KLIJava: JDK 1.1.7, w/o JIT -ms32m -mx32m -noasyncgc -noclassgc -noverify KLIC: 3.002, gcc -O2 ・配布 最新版の公開は、 http://www.ueda.info.waseda.ac.jp/~satoshi/klijava/ で行なっています。 御意見、御感想などはお気軽に satoshi@ueda.info.waseda.ac.jp までお寄せ下さい。 ・参考文献 [1] 関田 大吾. Inside KLIC Version 1.0, 1998 [2] jProlog -- 倉持 聡 / Satoshi Kuramochi satoshi@ueda.info.waseda.ac.jp http://www.ueda.info.waseda.ac.jp/~satoshi/index-j.html