Является ли LLVM типичной виртуальной машиной?

Мне интересно, является ли LLVM типичной виртуальной машиной, такой как Java или .Net, или это просто среда выполнения, такая же, как обычная среда выполнения C ++?

4

Решение

Это не из тех вещей.

LLVM раньше означало «виртуальная машина низкого уровня», но это никогда не означало полноценную виртуальную машину в смысле Java или .NET, и с тех пор «LLVM» перестало быть аббревиатурой.

Центральная часть LLVM — LLVM IR.

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

IR LLVM отличается от традиционных внутренних представлений; вместо того, чтобы основываться на абстрактных синтаксических деревьях, LLVM IR является своего рода ассемблером или байтовым кодом, похожим на Java и .NET. Вот тут и появилась «виртуальная машина». Однако LLVM IR не обеспечивает семантику высокого уровня, такую ​​как проверка границ массивов, как это делают .NET и JVM. Кроме того, LLVM IR может быть скомпилирован с помощью JIT, но обычно он статически компилируется в нативный код, как это сделал бы любой бэкэнд любого традиционного компилятора с IR.


LLVM стал называться зонтичным проектом для многих компонентов, связанных с базовой инфраструктурой компилятора. Изначально LLVM был IR и инструментами для работы с ним (оптимизация, codegen), но расширился, чтобы охватить гораздо больше, включая некоторые внешние интерфейсы, предназначенные для LLVM IR, инфраструктуру машинного кода для анализа и генерации сборки, обработку универсальных объектных файлов, отладчик , линкер …

Если вам интересно, каждый год проводится конференция LLVM, на которой рассказывается о том, что происходит в LLVM и проектах с использованием LLVM, и они записывают и публикуют презентации: http://llvm.org/devmtg/. Этот год проводится только на следующей неделе.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector