Go to file
stepanov 5a50c5257c lccrt.h irr-.
 :
       liblccrt:  ecomp.r29.144265
 liblccopt: ecomp.r29.143691 - ecomp.r29.144265
2024-10-29 16:49:49 +03:00
cmake/targets ecomp.r141248 cmake- liblccrt_s/liblcbe. 2023-05-25 00:51:05 +03:00
docs ecomp.r29.144265 2024-04-24 17:12:30 +03:00
include ecomp.r29.144244 2024-04-23 16:43:41 +03:00
lib lccrt.h irr-. 2024-10-29 16:49:49 +03:00
tools ecomp.r29.144244 2024-04-23 16:43:41 +03:00
.gitignore ecomp.r141248 cmake- liblccrt_s/liblcbe. 2023-05-25 00:51:05 +03:00
CMakeLists.txt ecomp.r141248 cmake- liblccrt_s/liblcbe. 2023-05-25 00:51:05 +03:00
LICENSE Добавление в архив исходного кода проекта и выбор для проекта лицензии 'Apache License 2.0'. 2023-01-26 02:34:00 +03:00
NOTICE Добавление в архив исходного кода проекта и выбор для проекта лицензии 'Apache License 2.0'. 2023-01-26 02:34:00 +03:00
README.md Обновление README.md, установка интерфейсного файла lccrt.h при 'make install'. 2023-01-27 04:20:38 +03:00
VERSION ecomp.r29.143691 2024-02-28 14:27:26 +03:00

Проект lccrt.

Основная задача проекта - предоставить компактную библиотеку для создания/хранения модуля в терминах IR и делегации процесса компиляции внешнему бэкенду.

Промежуточное представление lccrt-IR.

Промежуточное представление lccrt-IR ориентировано на модули полученные из Си-подобного языка. Изначально представление спроектировано как представление выполняющее транзитную функцию между представлениями llvm-IR и EIR (из компилятора lcc для e2k). Наличие дополнительного слоя в виде lccrt-IR позволяет сделать патч в llvm-project для e2k-платформы opensource-проектом и предоставить открытое API для (закрытого) e2k-бэкенда. Внешние бэкенды подключаются как динамические плагины при инициализации библиотеки liblccrt.

Проект lccrt реализует самодостаточную библиотеку, формально не зависящую на уровне исходных кодов от других проектов. С этой точки зрения проект lccrt теоретически может рассматриваться как инструмент для компиляции llvm-IR с помощью внешних бэкендов (предполагается вариант с libgccjit в качестве бэкенда), либо может выступать в качестве внешнего API для оптимизирующего e2k-бэкенда в составе opensource-фронтендов отличных от llvm (если таковые возникнут на практике).

В качестве тестового бэкенда может выступать lcbe-бэкенд (lccrt/tools/lcbe), который преобразует lccrt-IR в компилируемый и исполняемый Си-код (разработка lcbe не завершена). В таком случае Си-код используется в качестве аналога target-ассемблера. Приниципиальной задачей, которая ставится перед lcbe-бэкендом, является задача получения минимальной замкнутой сборки при отсутствии бинарной версии e2k-бэкенда.

Сборка.

  • mkdir lccrt/build && cd lccrt/build
  • cmake ../ && make && make install

Применение.

  • В трансляторе llvm-IR -> EIR (llvm-часть транслятора: llvm-project-e2k)