Un compilateur moderne est généralement structuré en trois étapes : le front-end, le middle-end et le back-end. Le front-end analyse le code source, vérifie son exactitude et construit une représentation intermédiaire (RI). Le middle-end optimise cette RI. Le back-end traduit ensuite la RI optimisée en code machine cible pour une architecture CPU spécifique.
