コンパイラ

提供: IS2005 Wiki (CPU実験)
移動: 案内検索

物(12/20, 5/19)

TODO

  • オワタ!

最終発表

media:コンパイラ-saisyuu.odp

中間発表

  • MinCaml改造版
    • アセンブリの変更
    • 整数の乗除算
    • Array.create -> create_array
    • とりあえず動く
  • 1から作成版
    • globals.mlごとコンパイル
    • 最適化は秘密 (考えてないともいう)
    • まだぽ

3/22

漏れは/usr/local/cad/jikken/2005/6/に書き込めないので saisyuu.odpをうpしといて下さい > 平野氏

うは

菅原さんに取り急ぎ送付しておきました。

3/12

  • kosak氏の助言により2000万減
  • kosak氏のもう一つの助言を実装して2000万減
  • グローバル変数をレジスタに載せて2000万減
  • 共通部分式除去で7000万減w

3/11

  • 心なしかフェッチミスを減らす最適化。
  • コンパイルオプション変えただけで4000万命令減った罠。

3/10

nf

media:コンパイラ-assembler20060310.zip

3/3

α版

  • 開始地点のラベルをmin_caml_startからmainに変更
  • スタックフレームは負の方向にのびる

media:コンパイラ-compiler20060303_2.zip

12/20

バグ取り

末尾でないときのfloat比較 <= で fbne を吐いていたのを fbg に修正

12/18

バグ取り

  • レジスタ割り当てのバグ修正
  • 関数呼び出しのバグ修正

12/17

バグ取り

float即値のバグ修正

12/16

バグ取り

  • addiの吐き方を修正
  • float即値の形式を自班のものにした

12/8

バグ取り

末尾呼び出しでjalを吐いていたのをjumpに修正

11/12

バグ取り & 変更

float定数テーブルを吐かなくした

11/11

hoge

float定数テーブルいらないじゃんorz

foo by ひらの

なにゆえ?

bar by namasute

float定数のビットパターンをそのままaddiでレジスタにいれればいいので。

11/10

ヒトリゴト

ラベルのアドレスをロードするときに 何気なくhi(ラベル)とかlo(ラベル)とか吐いていたが immが符号付きなのを失念していた。 ラベルのアドレスの下から16bit目が1のときこまる。 どうしたものか。

つぶやき 12/3 by ひらの

アセンブリがhi(ラベル)で四捨五入した上位ハーフワード、 lo(ラベル)で下位ハーフワードを吐けばいい話ということで、いいのかな。

つまり、

hi(0x00008000) = 0x0001
lo(0x00008000) = 0x8000

ということです。

11/7

バグ取り & 構文追加

整数の乗算、除算(やっつけ)。

11/6

とりあえずやっつけでmin-camlを改造してみますた。