Каковы самые большие преимущества LLVM? [закрытый]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
45
задан Bill Lynch 3 January 2015 в 04:50
поделиться

3 ответа

У меня была начальная игра вокруг с LLVM и работающий до , это учебное руководство оставило меня очень очень взволнованным по поводу, это потенциально; идее, что я могу использовать его для встраивания JIT в приложение с относительной простотой, топили меня.

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

21
ответ дан 26 November 2019 в 21:13
поделиться

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

Мы (Nate Begeman, самостоятельно, и немногие другие) записали бэкенд PPC без реального опыта в дизайне компилятора, но это выглядело достаточно простым, что неспециалисты могли приблизиться к нему. Мы были довольно знакомы с блоком PPC, но было все еще довольно невероятно, что нам удалось получить LLVM-gcc вывод кода PPC через несколько недель нашего свободного времени. Определенно один из самых удовлетворяющих, Привет В мире, я когда-либо компилировал.

39
ответ дан Louis Gerbarg 26 November 2019 в 21:13
поделиться

Я играл с LLVM на и прочь в течение многих месяцев теперь. Я записал два статьи OCaml Journal, касающиеся использования LLVM от язык программирования OCaml . Это особенно интересно, потому что язык OCaml идеален для записи компиляторов и имеет богатство мощных и старых инструментов и библиотек для парсинга и так далее.

В целом, мой опыт был чрезвычайно положителен. LLVM делает то, что он говорит относительно олова и очень прост в использовании. Производительность сгенерированного кода превосходна. Одна из программ, которые я записал, была простым небольшим компилятором Brainf*ck, который генерирует некоторые самые быстрые исполняемые файлы любого компилятора, который я протестировал (включая GCC).

у меня есть только два схватывания с LLVM. Во-первых, это использует аварийное прекращение работы () каждый раз, когда что-либо идет не так, как надо вместо того, чтобы повысить исключение. Это было преднамеренным проектным решением его авторами, которые стремятся удалить все использование исключений из LLVM, но он лишает возможности получать следы от OCaml при попытке отладить компилятор, который использует LLVM: Ваша программа просто умирает с текстовым объяснением от LLVM, но никакая подсказка как, туда, где ошибка произошла в Вашем источнике. Во-вторых, скомпилированная библиотека LLVM является чудовищно крупной (20 МБ). Я предполагаю, что это происходит из-за чрезмерного увеличения размера, понесенного C++, но это делает компиляцию крайне медленной.

РЕДАКТИРОВАНИЕ: Моя работа над LLVM достигла высшей точки в создании собравшей "мусор" виртуальной машины высокоэффективного высокого уровня. Бесплатная загрузка здесь и выезд соответствие сравнительные тесты (ничего себе!). @Alex: я получу это компилятор BF для Вас где-нибудь как можно скорее.

25
ответ дан Jon Harrop 26 November 2019 в 21:13
поделиться