Какова причина создания LLVM?

# Copy the certificate into the directory Java_home\Jre\Lib\Security
# Change your directory to Java_home\Jre\Lib\Security>
# Import the certificate to a trust store.

keytool -import -alias ca -file somecert.cer -keystore cacerts -storepass changeit [Return]

Trust this certificate: [Yes]

changeit является паролем

базы доверенных сертификатов по умолчанию
18
задан Reinstate Monica 8 December 2013 в 19:39
поделиться

2 ответа

Есть несколько отличий между LLVM и "обычным компилятором", которые, как я предполагаю, означают "gcc":

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

Что касается Javascript и других динамических языков, мы видим много интересного в LLVM от сообщества динамических языков, при этом реализации Python и Ruby испытывают его. Однако они не пытаются быть статическими компиляторами. Они сосредоточены на использовании JIT. В частности, они оптимизируют долго работающие исполняемые файлы с помощью «интерпретатора смешанного режима», где они сначала интерпретируют программы, а затем компилируют их с использованием LLVM во время выполнения. Я не видел движка javascript, использующего LLVM, но, вероятно, он есть. Он просто не будет создавать статические исполняемые файлы, за исключением необычных обстоятельств или для урезанных версий Javascript.

Что касается причины создания LLVM, то он начался как часть Vikram Adve работа исследовательской группы по пожизненной компиляции (что означает JIT и оптимизацию времени компоновки). После получения докторской степени Крис Латтнер перешел в Apple, которая значительно продвигает проект (вероятно, потому, что он лицензирован BSD, что вызывало у них проблемы в прошлом с gcc, который является GPL).

s работа над пожизненной компиляцией (что означает JIT и оптимизацию времени компоновки). После получения докторской степени Крис Латтнер перешел в Apple, которая значительно продвигает проект (вероятно, потому, что он лицензирован BSD, что вызывало у них проблемы в прошлом с gcc, который является GPL).

s работа над пожизненной компиляцией (что означает JIT и оптимизацию времени компоновки). После получения докторской степени Крис Латтнер перешел в Apple, которая значительно продвигает проект (вероятно, потому, что он лицензирован BSD, что вызывало у них проблемы в прошлом с gcc, который является GPL).

26
ответ дан 30 November 2019 в 07:44
поделиться

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

5
ответ дан 30 November 2019 в 07:44
поделиться
Другие вопросы по тегам:

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