Go to file
stepanov 089841db7a ecomp.r141248 cmake- liblccrt_s/liblcbe.
 :
   liblccopt: ecomp.r141248

 cmake-   -DLCCRT_ARCHS=,    
-   liblccrt_s   .  
     .  
: x86_64, e2k64.   -,   
 -. ,
  $ cmake -DLCCRT_ARCHS=e2k64 -DCC_e2k64=<cross-e2k-compiler>
     LCCRT_ARCHS   
 :
  cmake/targets/<arch>/CMakeLists.txt

.  lcbe      -
   .
2023-05-25 00:51:05 +03:00
cmake/targets ecomp.r141248 cmake- liblccrt_s/liblcbe. 2023-05-25 00:51:05 +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 ecomp.r141248 cmake- liblccrt_s/liblcbe. 2023-05-25 00:51:05 +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
NOTICE
README.md Обновление README.md, установка интерфейсного файла lccrt.h при 'make install'. 2023-01-27 04:20:38 +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)