Что такое LLVM?



Я все время слышу о LLVM. Это в Perl, затем в Haskell, а затем кто-то использует его на каком-то другом языке? Что это?

564   6  

6 ответов:

LLVM-это библиотека, которая используется для построения, оптимизации и создания промежуточного и/или двоичного машинного кода.

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

LLVM также может выступать в качестве JIT-компилятора - он поддерживает генерацию сборок x86/x86_64 и PPC/PPC64 с быстрой оптимизацией кода, направленной на компиляцию скорость.

Если вам интересно, вы можете играть с машинным кодом LLVM, который генерируется из кода C или C++ в их демо-страницы.

низкоуровневая виртуальная машина (LLVM)-это инфраструктура компилятора, написанная на C++, которая предназначена для оптимизации времени компиляции, времени соединения, времени выполнения и "простоя" программ, написанных на произвольных языках программирования. Первоначально реализованный для C / C++, независимый от языка дизайн (и успех) LLVM с тех пор породил широкий спектр интерфейсов, включая Objective C, Fortran, Ada, Haskell, байт-код Java, Python, Ruby, ActionScript, GLSL и другие.

прочитайте это для более подробного объяснения
также проверить Без Груза Глотать

по данным 'начало работы с библиотеками ядра LLVM' книга (c):

на самом деле, имя LLVM может относиться к любому из следующих:

  • проект LLVM / инфраструктура: это зонтик для нескольких проекты, которые вместе образуют полный компилятор: интерфейсы, бэкенды, оптимизаторы, ассемблеры, компоновщики, libc++, компилятор-rt и a Джит двигатель. Слово "LLVM" имеет такое значение, ибо например, в следующее предложение:"LLVM состоит из нескольких проектов".

  • компилятор на основе LLVM: это компилятор, построенный частично или полностью с инфраструктурой LLVM. Например, компилятор может используйте LLVM для интерфейса и бэкэнда, но используйте систему GCC и GNU библиотеки для выполнения последней ссылки. LLVM имеет это значение в например, следующее предложение: "я использовал LLVM для компиляции программ на C в MIPS платформа."

  • библиотеки LLVM: это часть кода инфраструктуры LLVM. Например, LLVM имеет это значение в предложение: "мой проект использует LLVM для генерации кода через его Just-in-Time compilation framework".

  • ядро LLVM: оптимизация это происходит на уровне промежуточного языка и бэкэнда алгоритмы формируют ядро LLVM, где начался проект. LLVM имеет это значение в следующем предложении: "LLVM и Clang-это два разных проекты."

  • ИК LLVM: это промежуточный компилятор LLVM представление. LLVM имеет это значение при использовании в таких предложениях, как "Я построил интерфейс, который переводит мой собственный язык на LLVM".

LLVM-это в основном библиотека, используемая для создания компиляторов и/или языкового программного обеспечения. Основная суть заключается в том , что хотя у вас есть gcc, который, вероятно, является наиболее распространенным набором компиляторов, он не построен для повторного использования ie. трудно взять компоненты из gcc и использовать их для создания собственного приложения . LLVM хорошо решает эту проблему, создавая набор "модульных и многоразовых компиляторов и технологий инструментальной цепочки", которые каждый может использовать для создания компиляторов и ориентированных на язык программное обеспечение.

хорошее резюме LLVM таково:

enter image description here

на интерфейсе у вас есть Perl и многие другие языки высокого уровня. В бэкэнде у вас есть код natives, который запускается непосредственно на машине.

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

инфраструктура компилятора LLVM особенно полезна для выполнения оптимизаций и преобразований кода. Он также состоит из ряда инструментов, обслуживающих различные обычаи. llvm-prof-это инструмент профилирования, который позволяет выполнять профилирование выполнения для определения горячих точек программы. Opt-это инструмент оптимизации, который предлагает различные проходы оптимизации (например, устранение мертвого кода).

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

для получения дополнительной информации о написании собственного пропуска, проверьте это http://llvm.org/docs/WritingAnLLVMPass.html

Comments

    Ничего не найдено.