ループ展開とその他の最適化に加えて,コード模写による飛越しの削除によって,飛越し数が減らされます。コード模写は,基本ブロック (エントリ・ポイントが先頭にしかなく,出口が末尾にしかない一連の命令の流れ) 数を減らし,命令スケジューリングの機会を増やします。
コード模写は,通常は,複数の短い終了列を持つルーチンなどのように,制御の流れの終わりに飛越しがあるような場合に行われます。終了列のコードが,飛越しが起こる個々の場所に模写されます。
次の例は,最適化されていないルーチンと,コード模写を使用する,これと等価な最適化を示しています。R0 (ia32 システムでは EAX) はレジスタ 0 です。
最適化されていない命令 最適化された (模写された) 命令 . . . . . . branch to exit1 move 1 into R0 . return . . . . branch to exit1 . . move 1 into R0 . return . . exit1: move 1 into R0 . return . move 1 into R0 return
同じように,コード模写は,ループの終わりに少量の共有コードを含み,ループ内に CASE 形式の飛越しを含んでいるループ中でも行われます。ループの末尾にある検証を行って飛越しするコードを個々の CASE の終わりに模写することで,個々の CASE コード中で効率的な命令パイプラインを行うことができます。