ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

何でもかんでもやってみようコミュの自作言語およびその実行環境の作成

  • mixiチェック
  • このエントリーをはてなブックマークに追加
表題の件について開発してみようと思っています。
目的としては、自作のゲームやソフトで使えるのシナリオやマクロの実行エンジンを作る際の叩き台です。

このトピックを使って、開発状況などの管理や情報の共有が出来ればと思います。

コメント(6)

目的が目的なので、x86系のマシン語やアセンブラに変換するのではなく擬似的なマシン語を中間言語として使用したいと思います。自作のアプリにその実行環境を組み込むことでマクロの実行やゲームのシナリオファイルを読み込めるようにするのが目的です。

まずはデバッグが出来ないと話にならないので、実行環境側から作ろうと思います。

これについては最終的にはC/C++での実装となるでしょうが、まずはExcelのVBAマクロを使って開発をしてみようかと思います。

理由としては、
・比較的手軽に開発を始められること
・セルをうまく使えば内部スタックなどの状態を表示する
 ことができるのでデバッガとして後々まで使えること
です。
仮想マシンのスペックとして、
レジスタ:PC、SP、BP、CR、A〜E(汎用レジスタ)
命令は
MOV  転送命令
CALL サブルーチンコール
RET  サブルーチンからの復帰
JP   ジャンプ
ADD  加算
SUB  減算
INC  インクリメント
DEC  デクリメント
POP  スタック取り出し
PUSH スタック積み上げ
MUL  乗算
DIV  除算
SHL  左シフト
SHR  右シフト
AND  論理演算(and)
OR  論理演算(or)
XOR  論理演算(xor)
NOP  No Operation
あたりをとりあえずサポートさせます。
ちょっとZ80を意識しています。

マクロ・シナリオ用途ということで実際のマシンを意識する必要は無いので、メッセージ表示(ダイアログなど)あたりも実装するかもしれません。。
メインループから作成中。
とりあえず命令を読み込んで、読み込んだ命令をダイアログで表示するだけ(笑)
全然進んでいません。
のんびりと進めて行きたいと思います。

以下に置いてみました。
作業を進める都度以下のフォルダに置いたファイルを更新していきます。
http://briefcase.yahoo.co.jp/bc/yoshi_nom_bogard/lst?.dir=/340f&.order=&.view=l&.src=bc&.done=http%3a//briefcase.yahoo.co.jp/

Yahooブリーフケース、ファイルの公開には便利ですが、共有はできないのかな。。
さて、だいぶ間を空けてしまいました。

更新内容としては、転送命令とPush/Popのみの実装です。。

例によって以下においてあります。
http://briefcase.yahoo.co.jp/bc/yoshi_nom_bogard/lst?&.dir=/340f&.src=bc&.view=l
こそこそ直してます。
とりあえず、デバッグ用にダイアログの表示命令(MSG <文字列>)だけ追加しました。
もう少しまともになったら、再アップします。
あ、さぼってるうちに色々やってるな。。。
とりあえずちょっとずつ玄箱いじってサーバー化しとります。
時間ないんで構築の進み遅いけどCVS入れたらソース置き場には出来るかと。
来年引越しするので再構築しなければならんかもしれないのでちょっと思案中。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

何でもかんでもやってみよう 更新情報

何でもかんでもやってみようのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。