ブートストラッピングでコンパイラを作ろう

このエントリーをはてなブックマークに追加
311:2010/01/14(木) 14:03:28
>>30
なるほど、コンパイル時に並び替えしてくれるんですね。知りませんでした。
てことはjmpもいらないのか〜。
32デフォルトの名無しさん:2010/01/30(土) 03:48:29
ず〜っと規制で書き込めませんでしたorz
現状、rowl1の実装を進めています。
アセンブリからdlopen()をコールする為のコードを書いている所です。
33デフォルトの名無しさん:2010/02/12(金) 06:48:47
そろそろ完成したかな?
34デフォルトの名無しさん:2010/02/12(金) 18:32:30
リポジトリの更新も止まってるし
てこずってるよう棚
35デフォルトの名無しさん:2010/02/14(日) 00:57:43
レポジトリ見るとallocとかが実装され始めてるようだね。
1/22から更新がないようだがガンガレ
361:2010/02/15(月) 21:08:17
久しく間があいてしまってすいません。
しばらく趣味に裂く時間がありませんで停滞しておりました。
そろそろペースを戻していきたいと思います。

dlopen()の実装は流石に挫折しましたのでglibcを直接呼ぶ方向にしたいと思います。
がんばります。
37デフォルトの名無しさん:2010/02/21(日) 12:58:18
これは良いものが出来そうですね。
Linuxが普及する原動力になると思います。
期待しています。
38デフォルトの名無しさん:2010/02/21(日) 18:37:39
↑なにいってんだこいつ
39デフォルトの名無しさん:2010/02/21(日) 18:43:07
↓なにいってんだこいつ
40デフォルトの名無しさん:2010/02/21(日) 21:42:19
これは良いものが出来そうですね。
Linuxが普及する原動力になると思います。
期待しています。
41デフォルトの名無しさん:2010/02/21(日) 22:19:56
↑なにいってんだこいつ
42デフォルトの名無しさん:2010/02/22(月) 23:18:01
とりあえず>>1すげぇな・・・・
とてもじゃないが俺には出来ん・・・
でも勉強に見させてもらうよ
431:2010/02/27(土) 00:29:19
>>42
どうもありがとうございます。頑張りますので応援してください。

現在rowl2コンパイラを実装していますが、
Hindley-Milnerの型システム
GC
メタプログラミング機能
などを一気に実装しようとして大分苦しくなってきました。
なので方針を変更して、rowl2では型システムのみ追加することにして高級な機能は先送りに
しようと思います。
44デフォルトの名無しさん:2010/03/11(木) 04:29:18
>>43
了解。
応援させていただきます。
45デフォルトの名無しさん:2010/03/15(月) 23:52:43
経過報告です。型システムを黙々と実装中です。
で、単純なHindley-Milnerだと使いにくい言語になると思うんで、何らかの拡張を考えてます。

一つは名前付きのタプルフィールドです。
p : (x : 0.0, y : 0.0);
などと書けて、p.x、p.yとアクセスできるようにしたいと思います。
これは多分kindを使って、健全性・完全性を保ってできると思います。

それから型による多重定義です。
例えば 1 + 1、 1.0 + 1.0、などと書けるようにしたいと思います。
これは安直にやると完全性を壊してしまいそうな気がするので、勉強中です。
もし、よい論文など知っている方がいましたら教えていただけると嬉しいです。
46デフォルトの名無しさん:2010/03/18(木) 18:05:04
きちんと構文解析してexpressionの型を決めていけばできると思うけど、
もっと簡単にやる方法あるのかな。

応援してる。
471:2010/03/23(火) 16:13:31
型推論の方針は定まりました。健全性と完全性はある程度犠牲にして、
多重定義・多相的な定数リテラルをサポートできるようにしたいと思います。


それから↓に触発されてrowlでのOS作りに挑戦することにしました。

【超高速】C/C++に代わる低級言語を開発したい
ttp://pc12.2ch.net/test/read.cgi/tech/1268843875/

理想とかあまり考えないで、まったり作ります。

まだ何も出来ていないですけど、
rowl/os/rowlos.img
がそれです。QEMUで実行できます。
48デフォルトの名無しさん:2010/03/24(水) 00:29:32
間違ってもその痛いスレを参考にしちゃだめだよ
どっちかっつーとひげぽんさん目指した方がいい(割とマジで言うけどあの人の技術面でなく取り組み方の方ね)
491:2010/03/24(水) 01:13:03
新しいネタを頂いただけで、言語設計は自分の好きなようにやってこうと思います。
こっちはアセンブリのみで実装という縛りがあるんで、逆にあまり言語仕様で悩まなくていいですね。
ひげぽんさんはホント尊敬してます。特にやる気をあれだけ維持出来るのがすごいです。
50デフォルトの名無しさん:2010/03/24(水) 04:40:08
ひげぽんなんていろいろ手を出してどれも中途半端
他の人のコードを何年も放置した後とりいれて顰蹙かったり
真似したら駄目
511:2010/03/24(水) 23:14:37
人がどういうやり方してるかあまり気にしても仕方ないので、ひとりでやってる限りは適当にやります。
忠告ありがとうございます。

経過報告です。
型推論の実装は目処が立ったので、バックエンドの実装に入りました。
rowl1では
型付きCore言語→三番地コード→アセンブリ
というパスでやることにします。三番地コードを突っ込んだのは、値管理をスタックに頼らないで、レジスタ割り当てをちゃんとしようと思った為です。
521:2010/03/26(金) 03:59:53
生存解析を三番地コードに実装しました。(liveness.rl)
531:2010/03/26(金) 07:41:23
レジスタ割り当てを実装しました。グラフカラーリングで作りました。
これで、型付きCore→アセンブリが繋がったので、あとは命令や機能をいろいろ追加していきます。

予定:
- 数値演算
- 条件分岐
- レキシカルクロージャ
- ループ
その後は、多重定義あたりやってみます。
541:2010/03/28(日) 01:45:02
経過報告です。
スタックローカルのタプルとかパターンマッチとか実装しました。
ここ数日、快調なペースです。
551:2010/04/09(金) 01:54:27
rowl1の実装と並行してですが、rowl2の実装を開始しました。
ブートストラップ3週目です。
56デフォルトの名無しさん:2010/04/16(金) 11:57:09
あれ、いつのまにか growl から rowl になったんですね。
571:2010/04/19(月) 11:12:40
すいません、growlという名のアプリが既に存在しましたので。
gitのURL変更はアナウンス忘れですorz
58デフォルトの名無しさん:2010/07/06(火) 17:17:56
a
591:2010/10/21(木) 15:13:20
ご無沙汰しております。

ブログ立ててそっちで書いているうちにここの存在をすっかり忘れてしまっておりました。
自分でスレを立てておいて半年も放置してしまって大変申し訳ありません・・・。
いろいろと方針変更がありましたが、開発は続けておりましてGC搭載のVMが動くところまで来ました。
http://github.com/nineties

作ると言ったOSやってなかったり、関数型言語じゃなくなってたりなんかいろいろグダグダですいません。
60デフォルトの名無しさん:2010/10/21(木) 22:10:22
>>59
がんばれー
かげながら応援してるよー
611:2010/10/22(金) 01:16:09
>>60
ありがとうございます。頑張ります。
62デフォルトの名無しさん:2010/12/27(月) 08:01:29
がんばれ!!!
僕も応援してるよ!!!
63デフォルトの名無しさん:2010/12/27(月) 09:04:03
>>61
github経由でblogも見た、
感動した
641:2010/12/29(水) 23:27:31
ありがとうございます!

実装を開始して今日で1年経ちました。
これからもがんばりますのでよろしくお願いします。
来年はドキュメントを書いて人に使ってもらえるようにすることが目標です。
65デフォルトの名無しさん:2010/12/30(木) 15:26:27
頑張れ!!
Twitterもたまに見てますぞ!!
66デフォルトの名無しさん:2010/12/30(木) 17:49:09
これ>>1は勉強とかのつもりかもしれないけど、やってることって70年代〜80年代のbitやcomputer todayの連載記事(とか別冊本)みたいで
ものすごく読んでいて楽しい、最後まで行ったら全部まとめて一冊にして欲しいとか思う
67デフォルトの名無しさん:2010/12/30(木) 20:49:47
周りも勉強になるから本当に良スレ
2ちゃんはこうあれば良いと思う
68デフォルトの名無しさん:2010/12/30(木) 22:45:54
一人で誉め殺し乙
そこまでいくとわざとらしい
69デフォルトの名無しさん:2010/12/31(金) 21:48:45
>>68
目が曇っちゃうとどうしようもないね
70デフォルトの名無しさん:2011/01/23(日) 10:30:56
いまきた産業だけど
Javaのシンタックスシュガーを増やすとかそのくらいにしとけばいいのに
711:2011/01/24(月) 13:04:52
おそくなりましたが、あけましておめでとうございます。
現状報告ですが、REPLの実装をしています。
バッファリングしないIOが必要だったりと面倒でちょっと時間がかかりそうな感じです。

>>70
言語作りではなくコンパイラの勉強が目的なので、出来るだけ既存物に頼らないで作ってく予定です。
72デフォルトの名無しさん:2011/01/30(日) 23:27:29
Pythonとかがスマートポインタやウィークポインタから
ガベージコレクションに乗り換えたけど処理効率より
スコープを隠ぺいすることでコーディングの負担を減らしたいのかな
73デフォルトの名無しさん:2011/04/01(金) 21:31:23.18
1すごい
74デフォルトの名無しさん:2011/05/25(水) 17:00:29.86
rowlでOS作ってみるお
75天使 ◆uL5esZLBSE :2011/07/03(日) 01:09:59.14
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど

ゴミじゃねーか
76デフォルトの名無しさん:2011/07/03(日) 09:20:29.84
天使ちゃんマジ天使
77デフォルトの名無しさん:2011/10/13(木) 07:20:49.66
78デフォルトの名無しさん:2011/10/13(木) 12:07:47.17
>>75
;はデリミタじゃないぞ、行コメントだ
79デフォルトの名無しさん:2011/11/22(火) 01:40:44.22
行コメントだね
80片山博文MZ ◆0lBZNi.Q7evd
一般的には、;はセミコロンっていうんだけどね。