2010-03-01から1ヶ月間の記事一覧

コード行数が1万行超えた

アセンブリ実装のrowl0 rowl0実装のrowl1 あわせて1万行超えた。そろそろrowl0での開発が破綻してきた。変数名・パラメータ名・タプルインデックスなどマジックナンバーだらけ当たり前といえば当たり前。 rowl1では名前管理ができるようになっているんで、早…

Simon L. Peyton Jonesが日本にくるだと?!

Haskellers Meeting 2010に来るらしい。 http://atnd.org/events/3820 大御所すぎる。残念ながらその時間帯には参加できないなぁ。 昼間どっかの大学で講演したりするんだろうか?動画など資料公開してほしいなぁ〜。 Implementing Functional Languages: A …

集成体の返却実装

タプルを関数の戻り値にすることができるようにした。パターンマッチで値が取り出せる為、下のように多値返却として利用することもできる。 return_tuple: () { return (1, 2) }; export main: () { (a, b) : return_tuple(); syscall(a, b); }下のようなコ…

タプル関係の実装をした

ローカルタプル rowlのタプルは非ボックス化型とした。 こんな感じで書くと、レジスタもしくはスタック上にタプルが構築される。 x : (1, (2, 3));ボックス化したいときはC++のnewのように明示的に書くことにする(syntaxなど考え中)。 パターンマッチング タ…

ブログタイトル変えた

何をやってるかわかりやすくした。

レジスタ割り当ての最適化

rowl1で plus: (x,y) { return x+y; };をコンパイルすると、中間コードが _plus.ii2TiL: pushl %ebp movl %esp, %ebp movl 12(%ebp), %p9 movl 8(%ebp), %p8 movl %p8, %p10 addl %p9, %p10 movl %p10, %eax leave retになる。%p8,%p9,%p10がレジスタ未割り…

2番地コードに変更

x86のアセンブリは基本的に2番地コードなのに、何故か3番地コードにしてた。 今は最適化とかやらないので、実装の容易さを優先して2番地コードに変更した。

レジスタ割り当て実装

3番地コードに対してレジスタ割り当てを実装した。 干渉グラフに基づくグラフカラーリングによる実装にした。カラーリングの最適化は殆どやっていない。干渉レジスタの多いところから優先的に割り当てるという程度。これで実行可能なコードを生成できるとこ…

READMEとかChangeLogとか書いた

それだけ。何気に今までREADMEを書いたことがなかった。ChangeLogもちゃんと書いたことなかった。 今はかなり雑だけど、徐々に体裁を整えていこう。

中間コード

とりあえず、rlc1では三番地コードを中間コードにすることにした。教科書通り。 バックエンドは簡易レジスタ割り当てのみ実装。スケジューリングはしない。

戻り値の型推論

rowlはC言語風の構文にしたいと思っている。例えば if (...) { ... };の様にelse節を持たないif文を定義することもできるようにしたい。また値もreturnを使って返すようにしたい。 この場合、例えば f: (a,b,c) { if (a > 0) { return b; }; return c; };み…

GCC extensionの取り除き方

cpp -pedantic -U__GNUC__ でプリプロセスする。

カーネル再構築

どうやらcoLinuxのプロジェクトページで配布されているDebianのディスクイメージがSUSE Linux上でコンパイルされたものである模様。これだとビルドシステム等にアーキテクチャを勘違いされる場合がある為、カーネルを再構築した。 Thinkpad x100e+coLinuxだ…

cat /proc/versionの結果がおかしい?

Debian lennyをDebian sidにdist-upgradeした。全く問題なく終了したけど、/proc/versionをチェックしたら Linux version 2.6.22.18-co-0.7.5 (hn@hn-dt) (gcc version 4.2.1 (SUSE Linux)) #1 PREEMPT Mon Sep 14 22:21:15 UTC 2009 なぜかSUSE

コンパイラの基盤技術と実践―コンパイラ・インフラストラクチャCOINSを用いて

半年ほど放置していたけどやっと読んだ。 コンパイラ技術の本というよりはCOINSの説明をする本。なんというか並列化・並列最適化の部分の説明を充実させてほしかった。マシン記述tmdのあたりとか参考になったけど、ミドルエンドの部分に自分で書いた並列化ア…

Thinkpad x100e 使用感

新品と取り替えてもらってセットアップも完了した。 CPUが激しく遅い点を除けば、よい感じだと思う。レイアウトの変わったキーボードも悪くない。OSはWindows7 Home Premium。この上で Google Chrome coLinuxサービス (OSはDebian) zsh + screen + vim putty…