2011-01-01から1年間の記事一覧
LLVMの最適化パスはlib/Transforms以下にあるようです。 lib/Transforms/InstCombine以下は全てピープホール最適化(覗き穴最適化)に関するパスが集まっていて、 -A + B --> B - A -A + -B --> -(A + B) のような局所的な最適化が行われています。 パッと見…
前回までで作成したASTから、LLVMの中間表現(IR)を作成していきます。 http://llvm.org/docs/tutorial/こちらのページの5章までの内容になります。 具体的にはASTのクラス毎に定義されているcodegen関数を定義していきます。 四則演算、比較などのオペレー…
LLVMのチュートリアルページ(http://llvm.org/docs/tutorial/LangImpl1.html)の2章まで追っていきます。ここまではチュートリアルで記述されているものとほぼ一緒です。LLVM IRを作成し、KonohaScriptの関数として実行する際には若干手を加えている部分があ…
前回の補足です。KonohaScriptのインストールはKonohaScript インストール手順(1)ソースからのビルド - Konoha日誌 で確認する事が出来ます。LLVMパッケージの利用には、LLVM(http://llvm.org/)のインストールも必要です。 KonohaScriptのLLVMパッケージ…
題名の通り、ごく単純な数値演算を行えるプログラミング言語(Kaleidoscope)のフロントエンドをKonohaScriptで実装しようと考えています。 現在KonohaScriptにはLLVMパッケージが用意されており、KonohaScript上からLLVMのAPI(一部)を利用することが出来ます…
プログラミングに関するメモをまとめていきたいとおもいます。