「buyobuyon サブページ」の編集履歴(バックアップ)一覧はこちら

buyobuyon サブページ」(2007/03/15 (木) 02:41:19) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*buyobuyonサブページ 作成したプログラムとその説明のためのページです。 ライブラリ関数の一部もこちらに載せておきます。 なお、コンパイラ本体は[[こちら>compiler隠しページ]]へ。 **外部変数定義用コンパイラ ~bero_glb_0314.tar.gz~ 外部変数定義を解析して、アセンブリコード(ラベルと.word命令の列)に変換するプログラムです。 "beroglb [外部変数定義ファイル名]"とすると、そのファイル名の.mlを.sに変えた名前の ファイルに対応するアセンブリコードが出力されます。 **シミュレータ ~simulator_0314.tar.gz~ 多少バージョンアップしました。 デフォルトではうちの班のFPUの挙動を真似たシミュレート関数でFPU演算を行います。 コンパイラやアセンブラの生成したコードをテストしたいだけであれば、 raichu_fpu.cをraichu_fpu_clib.cで置き換えると、Cライブラリ関数を用いて 計算するので、だいぶ高速になります。 その他に前のバージョンと違う点は、 ジャンプ命令やout命令などの仕様の変更(たしか12月頃に変更したはず…)に対応したこと、 STOREやFDIVなどの使われなくなった命令を除外して、 その命令が入力されるとエラーメッセージを出力するようにした点、 DIV命令が、引数として2をとった場合、もしくは答えが10未満になる場合のみ正しい答えを返し、 それ以外の場合には0を返すようにした点、くらいだったと思います。 現時点では、DIV命令に関する仕様の変化を取り除くと、レイトレが実行可能になります。 使用方法は、今までと同じく、実行ファイル名などの情報を入れたファイルconfig.txtを 用意して、"raichu config.txt"のようにして実行します。 **SLDバイナリ化プログラム ~sldmodi_0314.tar.gz~ SLDファイルを読み取り、浮動小数点数か整数かを判断して符号化し、値の列に変換します。 値の列は、現在はシミュレータで読み取り可能な形に変換されます。 (テキスト形式で、一行に1つずつ16進数8桁の値が入っている) 使用方法ですが、"sld2in [sldファイル名]"として実行すると、ファイル名の".sld"を ".in"に変えた名前でシミュレータ入力用のファイルが生成されます。 **その他のプログラム ~etc_0314.tar.gz~ -リンカ(bero_link.c) ただ複数のファイルをくっつけるだけ 使い方は"bero_link -o [出力ファイル名] [入力ファイル名1] [入力ファイル名2] ... [入力ファイル名n]"です。 -プリプロセッサ(bero_preproc.c) (*MINCAML*)で始まる行を削除し、プログラム末尾がin 0ならin ()に変換する 使い方は"bero_preproc -o [出力ファイル名] [入力ファイル名1] [入力ファイル名2] ... [入力ファイル名n]"です。 -ppmファイル用diff(ppmdiff.c) 1つのppmファイル(バイナリ形式・テキスト形式どちらも可)を読み込み 使い方は"ppmdiff [ファイル名1] [ファイル名2]"で、差分は標準出力に出力される。 -バイナリファイル用diff(diff.c) ただ2ファイルの差分をとるだけ。使い方はppmdiffと同じだったと思う…。 **算術演算ライブラリ ~math.s~ tsuy氏が作成してくれたライブラリ(ML版)をコンパイルしたあと、 単純にメインのプログラムと結合するだけで使えるように、ラベル等を少し調節したものです。 最適化をしないコンパイラで単純にコンパイルしただけなので、改良の余地大ありです。 **入出力・配列生成ライブラリ ~runtime.s~ read_int, read_float, print_char, print_int, create_arrayの5つの関数を定義してあります。 元から手書きのアセンブリソースですので、単純な最適化は通用しないはず…、 と思ったら、よく見ると最初の3関数でin/out命令は遅延スロットに移動可能ですね…。
*buyobuyonサブページ 作成したプログラムとその説明のためのページです。 ライブラリ関数の一部もこちらに載せておきます。 なお、コンパイラ本体は[[こちら>compiler隠しページ]]へ。 **外部変数定義用コンパイラ ~bero_glb_0314.tar.gz~ 外部変数定義を解析して、アセンブリコード(ラベルと.word命令の列)に変換するプログラムです。 "beroglb [外部変数定義ファイル名]"とすると、そのファイル名の.mlを.sに変えた名前の ファイルに対応するアセンブリコードが出力されます。 **シミュレータ ~simulator_0314.tar.gz~ 多少バージョンアップしました。 デフォルトではうちの班のFPUの挙動を真似たシミュレート関数でFPU演算を行います。 コンパイラやアセンブラの生成したコードをテストしたいだけであれば、 raichu_fpu.cをraichu_fpu_clib.cで置き換えると、Cライブラリ関数を用いて 計算するので、だいぶ高速になります。 その他に前のバージョンと違う点は、 ジャンプ命令やout命令などの仕様の変更(たしか12月頃に変更したはず…)に対応したこと、 STOREやFDIVなどの使われなくなった命令を除外して、 その命令が入力されるとエラーメッセージを出力するようにした点、 DIV命令が、引数として2をとった場合、もしくは答えが10未満になる場合のみ正しい答えを返し、 それ以外の場合には0を返すようにした点、くらいだったと思います。 現時点では、DIV命令に関する仕様の変化を取り除くと、レイトレが実行可能になります。 使用方法は、今までと同じく、実行ファイル名などの情報を入れたファイルconfig.txtを 用意して、"raichu config.txt"のようにして実行します。 **SLDバイナリ化プログラム ~sldmodi_0314.tar.gz~ SLDファイルを読み取り、浮動小数点数か整数かを判断して符号化し、値の列に変換します。 値の列は、現在はシミュレータで読み取り可能な形に変換されます。 (テキスト形式で、一行に1つずつ16進数8桁の値が入っている) 使用方法ですが、"sld2in [sldファイル名]"として実行すると、ファイル名の".sld"を ".in"に変えた名前でシミュレータ入力用のファイルが生成されます。 **その他のプログラム ~etc_0314.tar.gz~ -リンカ(bero_link.c) ただ複数のファイルをくっつけるだけ 使い方は"bero_link -o [出力ファイル名] [入力ファイル名1] [入力ファイル名2] ... [入力ファイル名n]"です。 -プリプロセッサ(bero_preproc.c) (*MINCAML*)で始まる行を削除し、プログラム末尾がin 0ならin ()に変換する 使い方は"bero_preproc -o [出力ファイル名] [入力ファイル名1] [入力ファイル名2] ... [入力ファイル名n]"です。 -ppmファイル用diff(ppmdiff.c) 1つのppmファイル(バイナリ形式・テキスト形式どちらも可)を読み込み 使い方は"ppmdiff [ファイル名1] [ファイル名2]"で、差分は標準出力に出力される。 -バイナリファイル用diff(diff.c) ただ2ファイルの差分をとるだけ。使い方はppmdiffと同じだったと思う…。 **レイトレ用ソース群 ~rtsource.zip~ min-rt.mlとglobals.ml、および以下のライブラリが入っています。 -算術演算(math.s) tsuy氏が作成してくれたライブラリ(ML版)をコンパイルしたあと、 単純にメインのプログラムと結合するだけで使えるように、ラベル等を少し調節したものです。 最適化をしないコンパイラで単純にコンパイルしただけなので、改良の余地大ありです。 一応、int_of_floatの四捨五入問題に対する応急処置として、 ftoi直前に0.5を引く処理を追加してあります。ループ回数の変更はまだ行っていません。 -入出力・配列生成ライブラリ(runtime.s) read_int, read_float, print_char, print_int, create_arrayの5つの関数を定義してあります。 元から手書きのアセンブリソースですので、単純な最適化は通用しないはず…、 と思ったら、よく見ると最初の3関数でin/out命令は遅延スロットに移動可能ですね…。

表示オプション

横に並べて表示:
変化行の前後のみ表示: