Профиль навыка

Code Generation

Кодогенерация: emission machine code, register allocation, instruction selection

Компиляторы и языки Инструменты компиляторов

Ролей

3

где встречается этот навык

Грейдов

5

сформированная дорожка роста

Обязательных требований

11

ещё 4 — необязательные

Домен

Компиляторы и языки

Группа

Инструменты компиляторов

Последнее обновление

17.03.2026

Как использовать

Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.

Чего ждут на каждом уровне

Таблица показывает, как меняется глубина владения навыком от Junior до Principal.

Роль Обязательность Описание
Compiler Engineer Обязателен Понимает что такое кодогенерация и разницу между native code, bytecode и интерпретацией. Знает базовые концепции register allocation и instruction selection. Умеет читать x86/ARM assembly.
Language Tooling Engineer Генерирует простой код из IR с помощью шаблонных эмиттеров. Понимает соответствие AST-узлов конструкциям целевого языка. Пишет базовые тесты для проверки корректности сгенерированного кода.
Systems Programmer (C/C++) Читает сгенерированный ассемблерный или машинный код на выходе компиляторных бэкендов. Понимает базовые концепции выбора инструкций и распределения регистров. Отслеживает пути генерации кода для отладки простых проблем.
Роль Обязательность Описание
Compiler Engineer Обязателен Реализует кодогенерацию для стекового или register-based bytecode. Использует LLVM или QBE для native кодогенерации. Генерирует оптимизированный код для паттернов вызовов функций.
Language Tooling Engineer Реализует генераторы кода для нескольких выходных форматов (исходный код, байткод). Строит peephole-оптимизации и обрабатывает платформо-специфичную эмиссию кода. Пишет property-based тесты для валидации сгенерированного вывода.
Systems Programmer (C/C++) Реализует проходы выбора и планирования инструкций для целевых архитектур. Работает с аллокаторами регистров и обеспечивает соответствие соглашениям о вызовах. Пишет обширные тесты, гарантирующие корректность генерируемых бинарников на разных платформах.
Роль Обязательность Описание
Compiler Engineer Обязателен Проектирует instruction selection и register allocation для нового target. Реализует calling convention для custom ABI. Оптимизирует codegen для специфических CPU архитектур (x86/ARM/RISC-V).
Language Tooling Engineer Обязателен Проектирует пайплайны генерации кода с подключаемыми бэкендами для нескольких целевых платформ. Архитектурирует стратегии JIT-компиляции и инкрементальной генерации кода. Менторит команду по проектированию компиляторных бэкендов и компромиссам оптимизации.
Systems Programmer (C/C++) Обязателен Проектирует бэкенды генерации кода для кастомного оборудования и специализированных ISA. Архитектурирует стратегии автовекторизации и SIMD-эмиссии кода. Менторит инженеров по низкоуровневой оптимизации и совместному проектированию hardware-software.
Роль Обязательность Описание
Compiler Engineer Обязателен Архитектурирует backend компилятора и codegen pipeline. Принимает решения об instruction scheduling и peephole optimization. Управляет командой backend инженеров.
Language Tooling Engineer Обязателен Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team.
Systems Programmer (C/C++) Обязателен Определяет архитектуру компилятора. Формирует стандарты разработки. Координирует compiler team.
Роль Обязательность Описание
Compiler Engineer Обязателен Определяет стратегию кодогенерации для новых ISA (RISC-V, WebAssembly). Исследует superoptimization и stochastic codegen техники. Участвует в стандартизации ABI для платформы.
Language Tooling Engineer Обязателен Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision.
Systems Programmer (C/C++) Обязателен Определяет стратегию развития компилятора/языка. Проектирует core language features. Формирует technology vision.

Сообщество

👁 Следить ✏️ Предложить изменение Войдите, чтобы предлагать изменения
📋 Предложения
Пока нет предложений для Code Generation
Загрузка комментариев...