投稿日
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ノードや、いくつかの式、そして基本的なブロック。
それらを組み合わせる方法について見てみよう。
最近のコメント
たかたむ
はじめまして。初リアルフォース(R3ですが)で,同…
nokiyameego
ZFS poolのデバイスラベル破損で悩んていたと…
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…