内容へ移動
machia's diary
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
2026:06:27
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
6/27日記 ===== その他 ===== * 別の医者いってきた。 * ちょうど休み取れたので調整が楽だった。 * 次は7月末。実はコミケ用の連続休暇取っているので日付調整が楽だった。 * 事前にある程度決めておけてよかった。 ===== プログラム ===== * ふとVMをまた作りたくなってきた。 * まずはシンプルにスタックベースのVMを作るのが勉強にはちょうどいいかなあ。 * 元々ゲーム用だったり音楽記述用のシンプルな言語・VMがほしいというのが理由としてはある。 * 勿論仕様だけ決めてAIに実装してもらうのもいいかもだけど。 ---- * 目標:小さいVMを作る(C++/C#) * 目的:\\ ゲーム・音楽アプリに組み込むため\\ 専用言語を作るため\\ スクリプトで専用言語のコンパイラを作るため ---- * まず資料。 * https://www.jmeiners.com/lc3-vm/ * https://craftinginterpreters.com/ * https://www.sigbus.info/compilerbook# * あとはソースコードや解説。 * https://github.com/scc-tw/VMPilot * https://github.com/mnjrupp/simple-vm-cpp * https://github.com/darkeclipz/cpp-virtual-machine * https://shibh308.hatenablog.com/entry/2019/12/04/001528 * https://interpreterbook.com/ ---- * 以下色々と考えてたこと。 * オペコードから直接IOに飛ぶのはよろしくないんだろうかと思ったけど、それは別に定義したFunctionでやれ!ってことなんだろうな・・・(CPU独自で動いてる理由がなくなるし * 自分の専用言語やデータ形式というのはいつになってもロマンあふれるものです。UnityのScriptableObjectでアセンブリっぽい言語を作ったのはそういう理由もあったけどアレは反省点も多かった * よく考えてみたら、Unity上で作った言語は描画命令や簡単な命令をアセンブリ言語に割当てたという形ではあったので、一応VMぽいのを作った扱いではあった。 * しかし、その結果命令が肥大化して内部を何度も弄ることになってメンテが困難になったんだよね。 * つまりIOアクセスを直接定義しちゃだめな理由を自分で踏んでたってことだね。やめておこうねw * VMの言語仕様はシンプルにして、IOは別に定義する、という方法にしてVM本体は小規模にしておきたい。 * で、別途言語仕様を策定してコンパイラはMiniScriptで書く、という形ならアリではと思った。 * MiniScriptやPython、Luaのリストを使えば構文木を作るのも難しくないので、十分問題なくできるじゃん!と考えた。 * 未だに東方VM(俗称)に憧れを抱いている自分がいた。 * Re:code作ったときはC++でMMLコンパイラ・・・というよりMiniScript形式へのトランスパイラ作ったんだけど、これもスクリプトで実装したほうが簡単だったのでは?なんて思うときはある。リアルタイム処理する関係上速度面を求めた部分はあるけど、スクリプトでできれば柔軟性は上がる。 * 何より選択肢が生まれるのはだいぶメリットになるし。
2026/06/27.txt
· 最終更新: 2026/06/27 20:53 by
machiaworx
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ