LLVM

例外

gistのはてなダイアリー埋め込みテストも兼ねて。LLVMでの例外の扱いは基本的にgccと同じようです。libgccを使って投げた例外を受けることができます。 gccの例外をゼロから実装するにはぱーそなりてぃふぁんくしょんというとても面倒な関数を書かないといけ…

LLVM勉強会

将来はプログラマー以外の仕事を見つけて田舎に引き篭もるか海外逃亡するのが正解ですよね大体趣味プログラマーとしての時間を取れることを考えるならずっと栃木にいたほうが生活費の面でも良かったしとまあそんなことを考えていると、今現在東京在住である…

デバッグ情報

なんかデバッグ情報が少しまともになってる。-disable-optを付けること。最適化したら実態の無いラベルを参照したりする;; トランポリンの扱いも少しまともになってる。相変わらずフレームポインタ使ってはくれないけど。 そのうち使い方をまとめたい……。

2.2が出てる

けれどWindows用バイナリが無いので試さない。

忘れる前に書いておきます

LLVM上でlongjmpは危険です。

FizzBuzz

追いついた♪ I=1 'for I=1 to 100 *F A=1 if I mod 3 = 0 then ?"Fizz";:A=0 if I mod 5 = 0 then ?"Buzz";:A=0 if A then ?I; ? I=I+1:if I<=100 goto *F 'next ...>basicll -r fizzbuzz.bas 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16…

LLVM用BASICコンパイラを書いていたり

http://panathenaia.halfmoon.jp/basicll/ Quineで3位*1を取るためだけのBASIC処理系です。まだLISTしか出力命令が無いです。LLVMで非効率となるgcc拡張構文のひとつに&&labelがあります。LLVMではローカルラベルのアドレスを取れないため、序数に対応付けて…

2.1

出ました。 例外使えない。デバッグ情報おかしい。 しかしMinGW用バイナリが公開されているので、ビルドの必要が無くなったのが大きいです。 .aは付いてきて無いため、やっぱりLLVMはテキストで扱えということか。

関数内関数

例外はうまく動かない(llvm-g++でも無効にされている)みたいですし、拡張精度浮動小数点型はサポートしてないですし、GCはやる気ないし、ということで関数内関数です。 これがしっかりインプリメントされていれば、まだ気力が維持できるというものです。 a.c…

デバッグ情報

http://llvm.org/docs/SourceLevelDebugging.htmlを読んで、大いに感動したものです。こんなに簡単にデバッグ情報が吐けるとは……。 いざ。 a.bas ?1+1 END a.ll declare void @llvm.dbg.func.start({ }*) declare void @llvm.dbg.stoppoint(i32, i32, { }*) …

まずは

Hello Worldなんだろうなあ、やっぱり。最初にやるのは1+1主義者としては釈然としないが……実際に何かを試そうとしたとき最初に見かけるサンプルはHelo Worldが圧倒的に多いので、1+1のソースを作成する敷居を越えるためにHello Worldを利用しなければならな…

とりあえずmake

いい加減gccにはぶち切れかけてきたので、LLVMをビルドしてみた。 結果、ビルドの難易度だけなら、gccが如何に恵まれているかよくわかった……。VC++のプロジェクトファイルは付いてきたのですが、makefileが無いのでExpressかあ…….NET 2.0かあ……それも気が進…