ページ 11

自作仮想環境を作っています

Posted: 2014年10月05日(日) 19:34
by taka
最近自作のインタプリタを使った仮想環境を作っているのですが、
どうもうまくいかないところがあるので質問しました。

仕様:
ベースアドレス:0x1000
CPUの処理構造体(REGS、TP10E_CALLBACK)512個
512コアを順番に切り替えて一命令ずつ実行

問題点:
・実行が割り込み後の0x1067で止まる
・2コア目がなぜか0x1060で止まる

正常に動けば:
・タイトルが"window"というウィンドウが画面内に二つ出てくる
・そのうちひとつはもうひとつより少し(16ドット)右下

よろしくお願いします。

Re: 自作仮想環境を作っています

Posted: 2014年10月05日(日) 20:10
by みけCAT
とりあえずメモ。
Debug\TCPU-VM.exeを直接実行すると、画像のエラーが出ました。
TCPU-VMフォルダをカレントディレクトリにしたコマンドプロンプトから起動すると、起動出来ました。
tcpu_vm_error.png
カレントディレクトリを間違えると死ぬ
tcpu_vm_error.png (24.34 KiB) 閲覧数: 3617 回

Re: 自作仮想環境を作っています

Posted: 2014年10月05日(日) 20:20
by taka
みけCATさん
Debug\TCPU-VM.exeを直接実行すると、画像のエラーが出ました。
TCPU-VMフォルダをカレントディレクトリにしたコマンドプロンプトから起動すると、起動出来ました。
修正しました。
init_fontでファイルポインタのNULL判定忘れてました。

Re: 自作仮想環境を作っています

Posted: 2014年10月05日(日) 20:48
by softya(ソフト屋)
仕様詳細不明・コメント無しのこのコードを追っかける気力がないので、提案だけ。
1.命令のトレースログを出すとかデバッグを工夫すべきだと思います。
2.テスト時はコア数を減らした方が良いと思います。
3。必要なら仮想CPUコア・デバッガを作るべきでしょう。

Re: 自作仮想環境を作っています

Posted: 2014年10月05日(日) 20:59
by みけCAT
とりあえずビルドを行いました。
添付のprjディレクトリの中身をTCPU-VMフォルダに入れ、
SDLへのパスを適切に設定し、
tcpu-vm.cppの

コード:

int main(int argc, char *argv[])
という行の前に

コード:

extern "C"
という行を追加することで、ビルドできるはずです。
実行結果は元から入っているexeと同様になりました。

Re: 自作仮想環境を作っています

Posted: 2014年10月05日(日) 21:22
by taka
結局自己解決しました。
tcpu-vm.cppの

コード:

for(task = 0; task < last_task; task++) {

コード:

for(task = last_task; task >= 0; task--) {
に変えたら動作しました。
みけCATさん,softyaさん、ありがとうございました。