投稿日
2013/9/1 日曜日
LLVMによるプログラミング言語の実装チュートリアル日本語訳
第5章 万華鏡: 言語の拡張: 制御フロー
第3.4節 forループのためのLLVM IR
ここからがおもしろいところである。
forループのために生成させたいLLVM IRついて説明する。
第3節のシンプルな例によって、以下のようなLLVM IRが出力されるようにしたい。(分かりやすくするために最適化無しで生成されたダンプである事に注意。)
declare double @putchard(double) define double @printstar(double %n) { entry: ; 初期値 = 1.0 (phi命令の中にインラインで書いてある) br label %loop loop: ; preds = %loop, %entry %i = phi double [ 1.000000e+00, %entry ], [ %nextvar, %loop ] ; 本文 %calltmp = call double @putchard(double 4.200000e+01) ; インクリメント %nextvar = fadd double %i, 1.000000e+00 ; テストの終了 %cmptmp = fcmp ult double %i, %n %booltmp = uitofp i1 %cmptmp to double %loopcond = fcmp one double %booltmp, 0.000000e+00 br i1 %loopcond, label %loop, label %afterloop afterloop: ; preds = %loop ; ループは常に0を返す。 ret double 0.000000e+00 }
このforループは、我々がこれまで見てきた全ての構成物が含まれている。
phiノードや、いくつかの式、そして基本的なブロック。
それらを組み合わせる方法について見てみよう。
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…