09/01/18 05:00:17 w486m2wn0
簡単に言えばPS2のCPU用に書かれたプログラムをIntel CPU用のプログラムに変換する事。
細かい挙動はソースコード参照だが、EEとIOPのリコンパイラは
後で同じアドレスに飛んだ時に再度変換を行わなくて済むように、
一度変換されたブロックはバッファに溜められる。
例えばEEのリコンパイラバッファは16MBあって、満タンになるか
TLB flushが起こるとクリアされる。
EEとIOPに関しては、開始時に一度リコンパイルしてしまうと、あとはほとんど
リコンパイルをしなくて済むゲームがほとんどの模様。
VUのリコンパイラは少々挙動が違う。VUのプログラムは動的に生成される
(アドレスが一定しない)のであらかじめ変換しておく事が不可能。
なので過去に実行したプログラム(メモリブロック)と
リコンパイル済みコードの対を記憶しておいて、
実行時に逐次比較を行い、履歴に同じプログラムが存在すれば
それを呼び出して実行する。無ければリコンパイルする。
このあたりのアルゴリズムは改善の余地があるようだ。