最近またエミュレータを作っているのですが、思うように速度が出なくて困っています。
エミュレータのほうは遅くなる要素がほとんど無いのですが、インタプリタのせいかあまりfpsが出ません。
インタプリタ本体は配列アクセスからswitch文に変えたのですがまだ遅いです。
それとcpu->r_pc(実行ポインタ)をフルで使おうとするとなぜか破壊されます。
どうにかなりませんか?
==やりたいこと==
1.エミュレータのほうで画像ずらし120fps
2.r_pc破壊の阻止
3.GPUのほうで透視投影とフィルポリゴン描画して10万ポリゴン/秒
アセンブラとリファレンスもつけておきます。
インタプリタを高速化したい
インタプリタを高速化したい
- 添付ファイル
-
- CASM-GP3200.zip
- アセンブラ(構文特殊です)
・EQU使用不可
・ラベル名には最初に.必須
・レジスタ名には最初に%必須
・整数には最初に$必須(でも1024*4だったら$1024*4になります)
・小数には最初に#必須
・空改行不可
・結構構文変わる(MOV %r0, %r1 なら mov(%r0,%r1) に)
・命令名小文字オンリー - (1.13 MiB) ダウンロード数: 155 回
-
- TLSI GP3200.pdf
- リファレンス(v2~用)
- (148.33 KiB) ダウンロード数: 165 回
-
- GPstation.zip
- エミュレータ本体(v2使用)
- (2.85 MiB) ダウンロード数: 148 回
Re: インタプリタを高速化したい
Windows環境が手元にないので試せないのですが、まずどこがボトルネックになっているのかきちんとプロファイリングしてください。
もしVMの命令フェッチの分岐がボトルネックになっている場合にはこの記事が参考になると思います。
しかし、VisualStudioではGCCのようなgotoの拡張が使えないのでアセンブラで書くしかないかもしれません。
http://magazine.rubyist.net/?0008-YarvManiacs
もしVMの命令フェッチの分岐がボトルネックになっている場合にはこの記事が参考になると思います。
しかし、VisualStudioではGCCのようなgotoの拡張が使えないのでアセンブラで書くしかないかもしれません。
http://magazine.rubyist.net/?0008-YarvManiacs
フルで使うという意味が分かりません。taka さんが書きました: それとcpu->r_pc(実行ポインタ)をフルで使おうとするとなぜか破壊されます。
Re: インタプリタを高速化したい
よく分からないのですが、単純にcpu->r_pcにどこかで不正な値が入っているということでは?