Un compilador moderno suele estructurarse en tres etapas: front-end, middle-end y back-end. El front-end analiza el código fuente, verifica su corrección y crea una representación intermedia (RI). El middle-end optimiza esta RI. A continuación, el back-end traduce la RI optimizada a código máquina objetivo para una arquitectura de CPU específica.
