Um compilador moderno é tipicamente estruturado em três estágios: o front-end, o middle-end e o back-end. O front-end analisa o código-fonte, verifica sua correção e constrói uma representação intermediária (RI). O middle-end realiza otimizações nessa RI. O back-end, então, traduz a RI otimizada em código de máquina alvo para uma arquitetura de CPU específica.

















