Компоненты инструментальной цепочки

Описывает роль отдельной низкоуровневой цепочки инструментов Whale и границ компонентов экосистемы Wave.

Wave Foundation

WhaleИран

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

Whale — это не название всей среды разработки Wave. Обязанности по каждому проекту распределяются следующим образом:

проект ответственность
wavec Wave Проверяет исходный код и создает исполняемый файл.
Vex Управляет пакетом Wave, manifest, графом зависимостей, lockfile и сборками пакетов.
Whale Предоставляет независимые компоненты assembler, object, linker и IR.
Wave std Среда выполнения и система API предоставляются как исходные модули Wave.

компонент

Whale workspace состоит из четырёх основных библиотечных зон:

  • assembler: Токенизация, AMD64 Синтаксический анализ/кодирование, section, symbol и relocation
  • object: модель объектного файла и ELF64 writer
  • linker: Слой связи.
  • ir: Whale IR тип, builder, вывод, проверка и опция frontend socket

Исполняемый файл whale предоставляет этой области команды asm, object, link и ir.

граница инструмента

Программа Wave строится как wavec. При работе непосредственно со сборками, объектными файлами и IR используйте команду whale.

Установка Whale не меняет метод сборки wavec. Vex использует wavec для сборки пакета Wave, а Whale запускает его непосредственно в задаче, которая обрабатывает артефакты низкого уровня.

Проверка результатов

При связывании артефакта Whale с процессом сборки убедитесь, что object format и целевой объект architecture совпадают. symbol и relocation можно проверить с помощью независимых инструментов, таких как readelf и objdump. Сборки, использующие IR socket, должны использовать socket schema от того же производителя, что и Whale.