コンパイラのバックエンドでは,(1)低水準中間表現からターゲットマシンの命令列への変換,(2)その命令列に対するレジスタ割付け,(3)命令スケジューリングなどの最適化,などが行われるが,それらのアルゴリズムを出来るだけマシンに依存しない形で表現し,マシン依存部分は,マシン特性の記述から機械的に作成されるようにするのがリターゲッタブルコード生成の一般的な方法である.本解説では,(1)について,中間表現と命令列とのパターンマッチングの方法に使われるLR構文解析やダイナミック・プログラミングのいくつかの方法を説明し,(3)について,命令スケジューリングとソフトウェア・パイプライニングの一般的な方法と問題点などを説明する.最後に,実例として,COINSとGCCでそれぞれ使われている方法を説明する.