キタコレ!
アウトポートモジュールに CAL_SETR, CAL_RSTR を行えるような関数が無かったので追記しました。
ちゃんとクロック通りの実速出してます。
武田さんの「エミュレータの実装について」の解説にある
- 一定時間だけ仮想マシンを駆動する処理 を参考に実装しました。
TAKEDA, toshiya's HOME PAGE - エミュレータの実装について
ttp://homepage3.nifty.com/takeda-toshiya/memo.txt
実作業そんなにしてないわりにすんなりビルドが通ったのにも驚いたのですが
直ぐちゃんと動くとも思ってなかったので2度ビックリしてます。
ステップ実行のテストがまだですが一応それも想定した実装なので
そんなにはまらないとは思うのですが…。
CPU 命令はそれぞれ関数として実装してますが関数ポインタは使ってません。
現状 switch 〜 case 文で遷移実行の状態ですが速度面で問題がないので
このままでも良いかなーと思ってます(汗)。
ソースはじめて 1000 行越えしてしまいました。
見てると CPU コアなんてどれも大抵縦に伸びてしまう傾向があるっぽいですが。