[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 05/09 10:10 / Filesize : 2 KB / Number-of Response : 13
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 19:33:59 ]
言語Lのコンパイラを言語Lで実装するにはブートストラッピングをしますが、
それをできるだけ原始的なレベルからやってみようと思います。
自分が実装するので、突っ込みお願いします。

コンパイラの勉強が主目的で、面白い言語を作ることは目的ではありません。

具体的には>>2

2 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 19:37:11 ]
使用ツール: エディタ・アセンブラ・リンカのみ

手順:
1. アセンブラでLのものすごく小さなサブセット言語L1のコンパイラを作る
2. L1でL1のコンパイラを作る
3. L1で少しだけ多機能なL2言語のコンパイラを作る (これを繰り返す)

(オプショナルな目標)
4. どっかの段階でlex/yaccに相当するものをLで作る

3 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 19:42:14 ]
×: 3. L1で少しだけ多機能なL2言語のコンパイラを作る (これを繰り返す)
○: 3. Lnで少しだけ多機能なLn+1言語のコンパイラを作る (これを繰り返す)

4 名前:1 mailto:sage [2009/12/28(月) 00:00:09 ]
誰も見てないかもですが・・・

一番最初のコンパイラの方針を考えました。
アセンブラで作るのでめちゃめちゃ簡単な言語(ほぼアセンブリ言語)にします。

- 標準入力からコード入力 → アセンブリ言語にコンパイル → 標準出力に出力
- リンカは手動で実行することにする

- 制御構造はifとgotoのみ
- 整数型のみ
- ハッシュテーブルがまだ無いので、識別子はx0,x1,…:レジスタ変数,y0,y1,・・・自動変数.の形式のみ。
- 関数は実装する
- 再帰下降型でパース

5 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 00:12:29 ]
具体的な対象CPUやOSが書いてないよね

6 名前:1 mailto:sage [2009/12/28(月) 00:26:48 ]
>>5
CPU:x86系
OS:Linux

でやります。
今自分が使ってるのは
OS : Linux version 2.6.18-6-686 (Debian)
as/ld: 2.17
です。

7 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 00:32:19 ]
それあとほぼあらゆる問題が「GCCのソース見ろ」で終わりそうですね

8 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 00:32:58 ]
期待する

9 名前:1 mailto:sage [2009/12/28(月) 00:59:27 ]
>>7
読むだけより作った方が勉強になることもあるかと思いますので。


githubに空のリポジトリ作りました。
ttp://github.com/nineties/growl
開発コードはgrowl(growing language)です。

明日からちょびちょび頑張って作っていきますので応援よろしくお願いします。


10 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 09:09:20 ]
GCC のソースを見るなんて筋が悪すぎる



11 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 10:14:15 ]
そう言えば、GCCは自由を守るために、わざとおかしな造りにしてるって聞いたことがあった気がする

12 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 10:21:12 ]
それでもっと自由な LLVM に置き換えられる訳か…






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<2KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef