前回の続き
INPUT文の実装について。
10 INPUT A
みたいなINPUT (変数)という構文を実装する。
入力を促すためのプロンプト表示として”?”を出力する。
これは前回のPRINTと同様にコード出力すればよい。
そのあとは、C言語のgets関数をcall命令で呼び出して、文字列を入力し、atoi関数で整数に変換する。
セキュアなコードではないのだけど、手抜きをして作ったのでこんなもので。
そして、そのatoiの戻り値をstore命令で変数%aのメモリに格納する。
まとめると、このようになる。
%1 = call i32(i8*,...)* @printf(i8* getelementptr inbounds([3 x i8]* @.2, i32 0, i32 0)) nounwind
%2 = call i8* @gets(i8* getelementptr inbounds ([1024 x i8]* @buf, i32 0, i32 0)) nounwind
%3 = call i32 @atoi(i8* getelementptr inbounds ([1024 x i8]* @buf, i32 0, i32 0)) nounwind
store i32 %3, i32* %a ,align 4
続きを読む →