以下色々と考えてたこと。
オペコードから直接IOに飛ぶのはよろしくないんだろうかと思ったけど、それは別に定義したFunctionでやれ!ってことなんだろうな・・・(CPU独自で動いてる理由がなくなるし
自分の専用言語やデータ形式というのはいつになってもロマンあふれるものです。UnityのScriptableObjectでアセンブリっぽい言語を作ったのはそういう理由もあったけどアレは反省点も多かった
よく考えてみたら、Unity上で作った言語は描画命令や簡単な命令をアセンブリ言語に割当てたという形ではあったので、一応VMぽいのを作った扱いではあった。
しかし、その結果命令が肥大化して内部を何度も弄ることになってメンテが困難になったんだよね。
つまりIOアクセスを直接定義しちゃだめな理由を自分で踏んでたってことだね。やめておこうねw
VMの言語仕様はシンプルにして、IOは別に定義する、という方法にしてVM本体は小規模にしておきたい。
で、別途言語仕様を策定してコンパイラはMiniScriptで書く、という形ならアリではと思った。
MiniScriptやPython、Luaのリストを使えば構文木を作るのも難しくないので、十分問題なくできるじゃん!と考えた。
未だに東方VM(俗称)に憧れを抱いている自分がいた。
Re:code作ったときはC++でMMLコンパイラ・・・というよりMiniScript形式へのトランスパイラ作ったんだけど、これもスクリプトで実装したほうが簡単だったのでは?なんて思うときはある。リアルタイム処理する関係上速度面を求めた部分はあるけど、スクリプトでできれば柔軟性は上がる。
何より選択肢が生まれるのはだいぶメリットになるし。