2008-08-10から1日間の記事一覧

電卓コンパイラできた

echo '8+7*3+4-8/2-9' | ./calc > t.ll rm -f t.bc llvm-as t.ll lli t.bc20意味はないが! ちなみにcaperのセマンティックアクションを こんな感じにした。 struct SemanticAction { typedef llvm::Value* value_t; llvm::BasicBlock* bb; int regi; Semant…

printf

動いた 上で書いたコードはあってた 実引数の方の型が間違ってた getelementptrのFAQ読んだらなんとなくわかった (正確に理解はしてないけど) dereferenceが一個足りなかったのかな あとは計算内容を動的にすれば 電卓の完成だ……

printf

んーーprintfの呼び出し方がわかんねー アセンブラだとそんなに難しくなかったんだけど、 C++コードで動的に作ろうとするとassert失敗しちゃう std::vector<const llvm::Type*> ft_printf_args; ft_printf_args.push_back( llvm::PointerType::getUnqual(llvm::IntegerType::get</const>…

[LLVM] テンプレートエンジン欲しい

とりあえず電卓コンパイラ作ろうと思って しこしこコーディングしてみたが、 アセンブリの構造をllvmのライブラリで作るのは 予想以上に大変だな。 テンプレートエンジン欲しい ライブラリははじめからアセンブラで書いて あとでリンクしろ、って話か……