LINUX.ORG.RU

Документация LLVM

 ,


0

3

Приветствую.

Хочу поиграться с компиляцией в llvm и столкнулся с проблемой. Я просто не могу найти документацию на пользовательский С++-интерфейс. В туториале этот интерфейс активно используется, но среди доков я нашел лишь спеки ассемблера и доксигеновскую доку на все исходники LLVM. По идее, это документация на интерфейсный C++API, но разобраться в этом будет очень сложно. Что я провтыкал или делаю не так? Есть нормальный мануал или хотя бы нормально сформированная спека на C++API?

★★★★★

потому что «пользовательский С++-интерфейс» - это CLang. llvm - это low-level machine.

dib2 ★★★★ ()
Ответ на: комментарий от dib2

Разве clang — это не компилятор С++? Мне нужен С++-интерфейс на генерацию в эту low-level machine.

staseg ★★★★★ ()
Ответ на: комментарий от staseg

Ясно, я думал тебе clang. Раньше был нормальный туториал (в pdf, емнип), и даже какой-то онлайн-тул для него. Надо искать.

dib2 ★★★★ ()
Ответ на: комментарий от dib2

Просто я не понимаю, почему этого нет среди документации на сайте llvm, есть подозрение, что тутор устарел и сейчас нужно делать как-то иначе.

staseg ★★★★★ ()
Ответ на: комментарий от staseg

Просто я не понимаю, почему этого нет среди документации на сайте llvm, есть подозрение, что тутор устарел и сейчас нужно делать как-то иначе.

LLVM развивается и с каждым релизом совместимость со старым кодом ломается, по мелочи. Так что входной порог достаточно мощный, и туториал не помог бы. Можно делать так:

  • Поискать устаревшие туториалы для составления общей картины и выяснения некоторых тонкостей, это можно найти в блоге LLVM или на ibm developer works.
  • Посмотреть исходники компиляторов на основе LLVM, от самых простых до clang. Самые простые должны быть среди исходников LLVM где-то в папке samples или examples, есть также много брошенных проектов или зеркал на гитхабе, ну и развитые проекты в составе самого LLVM.
quiet_readonly ★★★★ ()
Ответ на: комментарий от quiet_readonly

Спасибо. Т.е. смотреть samples (например), а описание конкретных интересующих функций — в доксигене?

staseg ★★★★★ ()
Ответ на: комментарий от staseg

Т.е. смотреть samples (например), а описание конкретных интересующих функций — в доксигене?

Да, и скорее всего иногда придётся просто экспериментировать, чтобы узнать недостаточно хорошо документированную вещь.

quiet_readonly ★★★★ ()

так, а что конкретно тебе надо? я например видел отличный туториал по запиливанию нового проца в llvm, видел пару похуже про компиляторы...

Stil ★★★★★ ()
Ответ на: комментарий от Stil

Конкретно хочу взять программу на языке А, скомпилировать ее в LLVM и выполнить. В целом «программа» — это условно, т.к., если разберусь, в LLVM планирую хранить много динамически скомпилированных ништяков. Сейчас пристально изучаю стандартный тутор (калейдоскоп), если можешь показать что-то еще толковое, буду благодарен.

staseg ★★★★★ ()
Последнее исправление: staseg (всего исправлений: 1)

Именно doxygen тебе и нужен. Все пользуются этой документацией и не жалуются.

anonymous ()
Ответ на: комментарий от dib2

потому что «пользовательский С++-интерфейс» - это CLang.

Тебе уже говорили, что ты дебил?

llvm - это low-level machine.

llvm - это библиотека. С C++-интерфейсом, а так же с довольно полным чистым C-интерфейсом (кстати, ТС, можешь пока им пользоваться, если C++ сложен).

anonymous ()

Кстати, лучший способ понять, как что-то в llvm сделать, это cpp backend. Берешь любой модуль, прогоняешь через cpp backend и получаешь код, который в llvm этот модуль создаст.

anonymous ()
Ответ на: комментарий от anonymous

В доксигене нет отправной точки (как в мануале), поэтому и спрашивал. Но я уже пытаюсь:)

staseg ★★★★★ ()
Ответ на: комментарий от Absurd

Оффтоп, но не могу не прокомментировать. Зачем писать такие ужасные readme с описанием каких-то вижуалстудийных проектов вместо описания своего проекта? Эта штука делает то-то, се-то, так-то сяк-то. Это отличное подспорье для тех, кто будет вникать в код или просто захочет воспользоваться разработкой. Все равно, что на глагне GCC расписывали бы премудрости их Makefile.

А в исходниках таки попытаюсь порыться, спасибо.

staseg ★★★★★ ()
Последнее исправление: staseg (всего исправлений: 1)
Ответ на: комментарий от staseg

Зачем писать такие ужасные readme с описанием каких-то вижуалстудийных проектов вместо описания своего проекта?

Я писал для себя чтобы разобраться в llvm, ридми автогенерен студией.

PS: Куски машинного кода генерятся функцией emitSimpleVertice из MmixEmit.cpp. Это центральное место в программе.

Absurd ★★★ ()
Последнее исправление: Absurd (всего исправлений: 1)

По идее, это документация на интерфейсный C++API

Да, это документация. Если нужно понять общие идеи, смотришь в http://llvm.org/docs/ разделы Programming Documentation (напр., http://llvm.org/docs/ProgrammersManual.html) и Subsystem Documentation (напр., http://llvm.org/docs/WritingAnLLVMPass.html).

Ну и конечно, не стесняемся задавать конкретные вопросы на llvmdev@cs.uiuc.edu

annulen ★★★★★ ()
Ответ на: комментарий от staseg

Конкретно хочу взять программу на языке А

https://github.com/archfrog/llvm-doc/blob/master/MappingHighLevelConstructsTo...

скомпилировать ее в LLVM

Открываешь код llc и разбираешься, там совсем немного.

и выполнить

ну тут вродде проблем быть не должно :) Если хочешь JIT, тогда в калейдоскопе есть пример.

annulen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.