Каковы различия между LLVM и байт-кодом Java?

66
задан 8 revs, 3 users 100%user34537 8 June 2011 в 02:31
поделиться

3 ответа

Принятие Вас означает JVM, а не Java:

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

JVM является намного высокоуровневой стековой виртуальной машиной. JVM обеспечивает сборку "мусора", имеет понятие объектов и виртуальных вызовов метода и т.д. Таким образом JVM обеспечивает намного высокоуровневую инфраструктуру для совместимости языка (во многом как CLR Microsoft).

(Возможно создать эти абстракции по LLVM, как возможно создать их сверху C.)

83
ответ дан nimrodm 24 November 2019 в 15:03
поделиться

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

-3
ответ дан 24 November 2019 в 15:03
поделиться

It's too bad this question got off on the wrong foot. I came to it looking for a more detailed comparison.

The biggest difference between JVM bytecode and and LLVM bitcode is that JVM instructions are stack-oriented, whereas LLVM bitcode is not. This means that rather than loading values into registers, JVM bytecode loads values onto a stack and computes values from there. I believe that an advantage of this is that the compiler doesn't have to allocate registers, but I'm not sure.

LLVM bitcode is closer to machine-level code, but isn't bound by a particular architecture. For instance, I think that LLVM bitcode can make use of an arbitrary number of logical registers. Maybe someone more familiar with LLVM can speak up here?

26
ответ дан 24 November 2019 в 15:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: