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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taka
記事: 34
登録日時: 10年前
住所: 三重県

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

#1

投稿記事 by taka » 9年前

最近自作のインタプリタを使った仮想環境を作っているのですが、
どうもうまくいかないところがあるので質問しました。

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

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

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

よろしくお願いします。
添付ファイル
TCPU-VM.zip
(1.26 MiB) ダウンロード数: 101 回

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 9年前

とりあえずメモ。
Debug\TCPU-VM.exeを直接実行すると、画像のエラーが出ました。
TCPU-VMフォルダをカレントディレクトリにしたコマンドプロンプトから起動すると、起動出来ました。
tcpu_vm_error.png
カレントディレクトリを間違えると死ぬ
tcpu_vm_error.png (24.34 KiB) 閲覧数: 3012 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

taka
記事: 34
登録日時: 10年前
住所: 三重県

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

#3

投稿記事 by taka » 9年前

みけCATさん
Debug\TCPU-VM.exeを直接実行すると、画像のエラーが出ました。
TCPU-VMフォルダをカレントディレクトリにしたコマンドプロンプトから起動すると、起動出来ました。
修正しました。
init_fontでファイルポインタのNULL判定忘れてました。
添付ファイル
TCPU-VM.zip
(1.54 MiB) ダウンロード数: 100 回

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 9年前

仕様詳細不明・コメント無しのこのコードを追っかける気力がないので、提案だけ。
1.命令のトレースログを出すとかデバッグを工夫すべきだと思います。
2.テスト時はコア数を減らした方が良いと思います。
3。必要なら仮想CPUコア・デバッガを作るべきでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#5

投稿記事 by みけCAT » 9年前

とりあえずビルドを行いました。
添付のprjディレクトリの中身をTCPU-VMフォルダに入れ、
SDLへのパスを適切に設定し、
tcpu-vm.cppの

コード:

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

コード:

extern "C"
という行を追加することで、ビルドできるはずです。
実行結果は元から入っているexeと同様になりました。
添付ファイル
prj.zip
ビルド用ハック
(1.19 KiB) ダウンロード数: 87 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

taka
記事: 34
登録日時: 10年前
住所: 三重県

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

#6

投稿記事 by taka » 9年前

結局自己解決しました。
tcpu-vm.cppの

コード:

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

コード:

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

閉鎖

“C言語何でも質問掲示板” へ戻る