前回、GOTO文の分ができたので、条件分岐のIF文の実装について
IF B=1 THEN A=2
というTinyBasicのソースをコード生成の仕方を説明する。
まず、
比較演算子(=)について、左辺と右辺のコードを生成する。
%1 = load i32* %_V1, align 4 store i32 %11, i32* %acc %2 = load i32* %acc, align 4 store i32 1 , i32* %acc, align 4 %3 = load i32* %acc, align 4
として、変数Bの中身をレジスタ的な使い捨て変数の%2に取り出し、即値の1を%3に入れる。
そして、icmp命令で比較を行う。
%4 = icmp eq i32 %2, %3
比較した結果はBool値で%4に入る。
続きを読む


