2011-01-01から1年間の記事一覧

LLVMの最適化パス

LLVMの最適化パスはlib/Transforms以下にあるようです。 lib/Transforms/InstCombine以下は全てピープホール最適化(覗き穴最適化)に関するパスが集まっていて、 -A + B --> B - A -A + -B --> -(A + B) のような局所的な最適化が行われています。 パッと見…

オリジナル言語のLLVMフロントエンドをKonohaScriptで実装する その4

前回までで作成したASTから、LLVMの中間表現(IR)を作成していきます。 http://llvm.org/docs/tutorial/こちらのページの5章までの内容になります。 具体的にはASTのクラス毎に定義されているcodegen関数を定義していきます。 四則演算、比較などのオペレー…

オリジナル言語のLLVMフロントエンドをKonohaScriptで実装する その3

LLVMのチュートリアルページ(http://llvm.org/docs/tutorial/LangImpl1.html)の2章まで追っていきます。ここまではチュートリアルで記述されているものとほぼ一緒です。LLVM IRを作成し、KonohaScriptの関数として実行する際には若干手を加えている部分があ…

オリジナル言語のLLVMフロントエンドをKonohaScriptで実装する その2

前回の補足です。KonohaScriptのインストールはKonohaScript インストール手順(1)ソースからのビルド - Konoha日誌 で確認する事が出来ます。LLVMパッケージの利用には、LLVM(http://llvm.org/)のインストールも必要です。 KonohaScriptのLLVMパッケージ…

オリジナル言語(Kaleidoscope)のLLVMフロントエンドをKonohaScriptで実装する

題名の通り、ごく単純な数値演算を行えるプログラミング言語(Kaleidoscope)のフロントエンドをKonohaScriptで実装しようと考えています。 現在KonohaScriptにはLLVMパッケージが用意されており、KonohaScript上からLLVMのAPI(一部)を利用することが出来ます…

このブログについて

プログラミングに関するメモをまとめていきたいとおもいます。