開発効率を上げる作業 - Scheme VM を書く

display 手続きを実装する

実装した。

開発サイクルの効率化

VM用にコンパイル->VMコンパイルしなおしのサイクルが面倒なので (read) を活用しよう。

流れ
  1. 実際の Scheme のコード test.scm を編集
  2. コンパイル済 test.scmc へ (auto-compileで)
  3. VM は compiled_test.scm を read して実行
必要な作業
  • テストの分離
  • VM 内の instruction を定数に変換する部分。
  • Makefileコンパイル
  • instruction.scm => (gen-insn.scm) => Instruction.h
  • Instruction を VM(C++) と VM(SCHEME) で完全に同一なものにする
  • (CONSTANT 1 (ARGUMENT (CONSTANT 2 (CONS (HALT))))) => CONSTANT などの命令を数値定数に変換
  • $(COMPILER) $< | ./const-compile.scm ./instruction.scm > $@ こんな感じで。
  • eqv? を VM に実装

% ./work.scmc
Hello, World

work.scmc が人の読めない感じになってきた。

#!/usr/local/bin/mosh
(16 (17) (11 "Hello, World\n" (2 (30 1 (0 1)))))

これでやっと準備が整ったぞ。