Go to file
stepanov 530ae2fbb6 ecomp.r140802
 :
   liblccopt: ecomp.r140802

.  ecomp.r140802  liblccopt ()  
   binutils.
2023-04-05 22:32:57 +03:00
include Добавление cmake-сборки. Обновление README.md и удаление устаревшей irr-компоненты. 2023-01-27 01:26:18 +03:00
lib ecomp.r140802 2023-04-05 22:32:57 +03:00
tools Добавление в архив исходного кода проекта и выбор для проекта лицензии 'Apache License 2.0'. 2023-01-26 02:34:00 +03:00
CMakeLists.txt Обновление README.md, установка интерфейсного файла lccrt.h при 'make install'. 2023-01-27 04:20:38 +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

README.md

Проект 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)