Skip to content

thata/minrubyc-x86_64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minrubyc for x86_64

Rubyで書かれたminrubyコンパイラ。AArch64向けに書いたminrubyコンパイラ( https://github.com/thata/minrubyc )をx86_64へ移植したもの。

minrubyとは?

「RubyでつくるRuby」で作成するRubyのサブセット言語。

https://www.lambdanote.com/products/ruby-ruby

オリジナルのminrubyとの違い

  • 整数しか扱えない
  • 配列はまだ未実装
  • ハッシュもまだ未実装
  • 関数の引数は6つまで
  • セルフホストは目指さない
  • その他いろいろ

Usage

事前に minruby gem をインストールしておく

gem install minruby

minrubyコンパイラで sample/fib.rb をコンパイルしてx86_64アセンブリファイルを出力、

ruby minrubyc.rb sample/fib.rb > tmp.s

出力したx86_64アセンブリをDocker環境上でビルド&実行する。fib(10)の結果である55が返ればOK

$ docker run --platform linux/amd64 -it -v `pwd`:/root -w /root ruby:latest bash
(Docker環境に入って)
# gcc -z noexecstack tmp.s libminruby.c -o fib
# ./fib
55

sample/fib.rb

def fib(n)
  if n < 2
    n
  else
    fib(n - 1) + fib(n - 2)
  end
end
p fib(10)

Run test

image

About

minruby compiler for x86_64

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published