Основные понятия

Трансляция языков — это процесс преобразования программы, написанной на одном языке программирования (исходный язык), в эквивалентную программу на другом языке (объектный язык). Это позволяет выполнять программы на аппаратных платформах, где изначально использованный язык не поддерживается напрямую.

image.png

Виды трансляторов

  1. Ассемблер

    Преобразует программы с языка ассемблера (символического представления машинного языка) в машинный код. Каждая команда ассемблера обычно соответствует одной команде машинного языка.

  2. Компилятор

    Преобразует программы с языка высокого уровня в машинный код или ассемблер. Например, компиляторы для языков C++, Rust и Go.

    image.png

    Если в язык ассемблер

    image.png

  3. Интерпретатор

    Выполняет программы непосредственно, без создания промежуточного машинного кода. Например, интерпретаторы Python и Ruby.

    image.png

  4. Препроцессор

    Преобразует программы на расширенной версии языка программирования в стандартный вариант этого же языка. Пример: препроцессор C.

  5. Загрузчик (линковщик)

    Подготавливает скомпилированные программы для выполнения, соединяя их с необходимыми библиотеками и модулями.

Этапы трансляции

  1. Анализ исходного кода:

  2. Генерация промежуточного кода:

    Создание машинно-независимого кода, удобного для оптимизации и дальнейшей трансляции.

  3. Оптимизация:

    Улучшение кода для повышения производительности, включая:

  4. Генерация объектного кода:

    Преобразование промежуточного кода в машинный или ассемблерный код для целевой платформы.

  5. Машинно-зависимая оптимизация:

    Улучшение объектного кода с учетом особенностей целевой архитектуры (например, использование специфических регистров или инструкций процессора).

Пример процесса трансляции

  1. Программа на языке C++ компилируется в текст на C.
  2. Текст на C компилируется в программу на языке ассемблера.
  3. Линковщик создает выполняемый машинный код.
  4. Загрузчик размещает код в памяти для выполнения.