фронтендом компилятора, который разбирает его на токены и строит абстрактное синтаксическое дерево (AST). Затем происходит оптимизация кода, где компилятор применяет различные оптимизации для улучшения производительности программы. Наконец, генерируется ассемблерный код, который затем передается ассемблеру для создания исполняемого файла.
GCC поддерживает множество различных архитектур процессоров и операционных систем, что делает его одним из самых универсальных компиляторов или не так?
Ну примерно, только там несколько побольше промежуточных представлений, чем одно ast) Ну плюс оптимизации также как и в llvm делятся на машинно зависимые и не зависимые, а также емнип по дефолту не оптимизируется наложение виртуальных регистров на реальные, а также не стоит забывать и про lto, где у тебя уже линкер гимпловый код возвращает компилятору. Ну ещё можно погулять, что gcc это не компилятор, а также, что он уже начинает морально устаревать в силу не самого лучшего качества кода и сложностей в его поддержке. Welcome to llvm.
Обсуждают сегодня