SleepVM に関数呼び出しを追加してみた

るびま には宿題として関数呼び出しを実装してみろ、というのがあったのでやってみました。

サンプルのプログラムとしてユークリッドの互除法をやってみました。

  #
  goto :main
:gcd # ユークリッドの互除法
  getarg 1
  push 0
  eq
  ifeq :gcd_0
  getarg 0
  ret
:gcd_0
  getarg 1
  getarg 0
  getarg 1
  mod
  call :gcd 2
  ret
:main
  push 1071
  push 1029
  call :gcd 2
  print