LLVM, что это такое и как я могу использовать его для кросс-платформенной компиляции - PullRequest
6 голосов
/ 12 мая 2009

Я читал кое-что о llvm, который можно использовать для облегчения кросс-платформенной компиляции в c ++, я пытался читать документы, но я не понимал, как я могу использовать его в реальных проблемах развития, может кто-нибудь объяснить, пожалуйста, простыми словами, как я могу его использовать?

Ответы [ 5 ]

6 голосов
/ 21 мая 2009

Ключевой концепцией LLVM является низкоуровневое «промежуточное» представление (IR) вашей программы. Этот IR находится примерно на уровне ассемблерного кода, но он содержит больше информации для облегчения оптимизации.

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

Во многих случаях во время работы программы у вас есть больше информации, которую вы делаете в головном офисе, поэтому программа может быть значительно оптимизирована.

Для начала вы можете скомпилировать программу на C ++ в одно промежуточное представление, а затем скомпилировать ее для нескольких платформ из этого IR.

Вы также можете попробовать демонстрационную версию Kaleidoscope, которая проведет вас через создание нового языка без необходимости фактически писать компилятор, просто напишите IR.

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

2 голосов
/ 12 мая 2009

Почему бы вам не зайти на сайт LLVM и проверить всю документацию там. Они подробно объясняют, что такое LLVM и как его использовать. Например, у них есть страница Getting Started .

1 голос
/ 15 августа 2011

В книге есть хорошая глава, в которой все подробно объясняется: www.aosabook.org / ru / llvm.html

1 голос
/ 05 марта 2011

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

1 голос
/ 12 мая 2009

LLVM - это, как следует из названия, виртуальная машина низкого уровня, имеющая генератор кода. Если вы хотите скомпилировать его, вы можете использовать либо gcc front end, либо clang , который является компилятором c / c ++ для LLVM, который все еще находится в процессе разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...