バイナリ変換

バイナリ変換（）は、コンピュータの領域において、変換元の命令列を変換先の命令セットに翻訳し、機械語コードを変換することで命令セットのエミュレーションを行うことである。
静的バイナリ変換.
実行ファイル全体を対象のアーキテクチャ用に変換することを「静的」なバイナリ変換と呼ぶ。変換プログラムが全てのコードを静的に検出することが難しいため、静的なバイナリ変換を正しく行うことは困難である。たとえば実行ファイルの一部は、実行時にしかジャンプ先を特定できないによってのみ到達できる。「動的」なバイナリ変換では、通常基本ブロック単位の短いコード列に着目し、変換した後出力結果をキャッシュしておく。コード変換は、コードが検出されて変換可能になると実施され、分岐命令の分岐先は変換後のコードを示すようにする。
動的バイナリ変換.
動的なバイナリ変換は単純なエミュレーションとは異なりコード変換の時間がオーバーヘッドになるが、性能上の大きなボトルネックとなるエミュレータの読み出し-デコード-実行というループが存在しない。変換のオーバーヘッドは変換したコードが複数回実行されれば相殺される。
高度な動的変換プログラムは を採用しており、どの部分が実行時間の大部分を占めているか計測可能なようコードを変換し、そうした部分は積極的に最適化される。この技術は ジャストインタイムコンパイラを彷彿とさせるものだが、実際こうしたコンパイラ（例 : サン・マイクロシステムズのHotSpot技術）は仮想マシンの命令セット(バイトコード)から実際のマシンの命令セットへの動的なバイナリ変換プログラムと捉えることができる。