伝説の68kエミュレータsyn68kはScheme風マクロ言語で生成される
(prev: http://d.hatena.ne.jp/mjt/20100912/p2 )
- https://github.com/ctm/syn68k/tree/master/syngen
- https://github.com/ctm/syn68k/blob/master/runtime/68k.scm - 実際の記述
当時としては異様に高速で微妙な精度を誇ったMacOSエミュレータのExecutorは、ちょっと前(2008)にソースコードがGitHubで公開された。
Executorの絶妙なポイントは:
現在ゲームの移植等に使われているlibSDL ( http://www.libsdl.org/ ) はもともとExecutorのために書かれた[要出典]- Executorよりも早くにLokiのゲームが有るらしい。といっても最初のWin32 ExecutorからSDLを使用していて、今でもSDLのCREDITSにはトップに位置している - https://github.com/okuoku/SDL/blob/f38807a19aa4ca67084ab96d245be627ee36aec4/CREDITS#L5
- MacOSやMacintoshのROMを一切必要とせずに、MacOSのアプリケーションを動作させることができた
- PC向けに公開された動的リコンパイラとしては比較的早い(around 1990??)
- 生成にScheme風のマクロ言語を使用している
ただSyn68kはgas等と異なり"本物"のSchemeは使用していない。単純にマシン記述言語の構文としてSchemeを借りているだけで、↑のツリーのreduce.cに無い関数は使用できない。
この手のScheme(やLisp)を借りたシステムは他にも色々有りそうだけど、なかなか良い例が思い当たらない。例えばEMACSのMocklispはそのような例だろうけど、見たことがない。