Ключевой концепцией LLVM является низкоуровневое «промежуточное» представление (IR) вашей программы.
Этот IR находится примерно на уровне ассемблерного кода, но он содержит больше информации для облегчения оптимизации.
Сила LLVM заключается в его способности откладывать компиляцию этого промежуточного представления на конкретную целевую машину до того момента, когда код должен быть запущен. Подход компиляции точно в срок (JIT) может использоваться для приложения, чтобы произвести код, который ему нужен, непосредственно перед тем, как он ему понадобится.
Во многих случаях во время работы программы у вас есть больше информации, которую вы делаете в головном офисе, поэтому программа может быть значительно оптимизирована.
Для начала вы можете скомпилировать программу на C ++ в одно промежуточное представление, а затем скомпилировать ее для нескольких платформ из этого IR.
Вы также можете попробовать демонстрационную версию Kaleidoscope, которая проведет вас через создание нового языка без необходимости фактически писать компилятор, просто напишите IR.
В приложениях, критичных к производительности, приложение может по существу написать свой собственный код, который ему нужно запустить, непосредственно перед тем, как ему нужно будет его запустить.