minrubyコンパイラ / 入力した整数を画面へプリントする
「RubyでつくるRuby」の minruby のパーサを利用してApple M1 のアセンブリコードを出力するコンパイラを作成してみる。
まずは、入力した整数を画面へプリントするだけのコンパイラ。
code:minrubyc.rb
require "minruby"
tree = minruby_parse(ARGF.read)
puts "\t.text"
puts "\t.align 2"
puts "\t.globl _main"
puts "_main:"
else
end
# 入力した整数をプリントする
puts "\tbl _p"
puts "\tret"
整数を画面へ出力するためのライブラリ関数も必要なので用意する。
code:libminruby.c
long p(long x) {
printf("%ld\n", x);
return x;
}
コンパイルしてみる。4649 が画面に出力されればOK
https://gyazo.com/4a2cb6746f42a1360291cf24334206d2