shi_null

飛行機で隣に座った外人のオッサンがうるさくて寝れなかったのでなんか進んだ。

http://shinh.skr.jp/tmp/shi_null.tar.bz2

  • Boost.Spirit && Xbyak
  • LinuxMacOSXJIT して動作は確認 (./shi sample/fizz.shi)
  • Linux では ELF バイナリを直接吐く (./shic sample/fizz.shi && ./sample/fizz)
  • # と // と /* */ がコメント
  • 型は int だけ
  • C の関数は型無視して呼ぶ
  • 制御構文は while と if と else だけ
  • 演算子は四則演算と比較だけ
  • スタックの位置が明らかにおかしい
  • 実行体から fopen が呼べない (たぶん __libc_start_main 呼んでないからかな)
  • 最適化全くしない

elf_os.tab とかあるように FreeBSD とかは動くようにしようかと思ったんだけど、 Linux ほどヌルくは無いみたいだ。

TODO:

  • PE バイナリを吐く
  • Mach-O バイナリを吐く
  • (日和って)アセンブリ吐けるようにするかなぁ
  • 浮動小数 (全部 SSE でやればいいのかな)
  • 関数
  • cparser
  • && とか || とか論理演算とか
  • コマンドラインオプションとか整備して他のファイルリンクとかできるように
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h