The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Новая версия набора компиляторов LLVM 3.1

23.05.2012 11:16

После 6 месяцев разработки доступен релиз проекта LLVM 3.1 (Low Level Virtual Machine) - GCC совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный платформонезависимый псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

Основные новшества LLVM 3.1:

  • Представлен инструмент для автоматизированного выявления ошибок с распределением памяти AddressSanitizer, позволяющий определить факты обращения к освобождённым областям памяти, выхода за пределы границ выделенного буфера и некоторые другие типы ошибок при работе с памятью;
  • Значительное улучшение поддержки стандарта C++'11 в LLVM-фронтэнде Clang. В том числе добавлена поддержка лямбда-выражений, списков инициализации, атомарных операций, ключевого слова "constexpr", пользовательских литералов и т.п. Поддержка языков C, C++, Objective-C++ и Objective-C в настоящее время полностью стабилизирована для целевых плафторм x86 (32- и 64-bit) и ARM. В новой версии также добавлена расширенная поддержка литералов для Objective C и интегрирована библиотека tooling для упрощения разработки собственных инструментариев на базе Clang;
  • В генератор кода добавлена поддержка "связок инструкций" (instruction bundles), позволяющих смоделировать поддержку VLIW-групп через упаковку произвольного числа параллельных инструкций. В итоге, значительно улучшена поддержка генерации кода для целевых архитектур процессоров VLIW (например, применяется в некоторых GPU), в которых одна инструкция содержит несколько параллельно выполняющихся операций. Кроме того, в генератор кода добавлена поддержка алгоритма "Basic Block Placement", поддерживающий вероятностные методы размещения блоков кода;
  • Добавлена реализация интегрированного макро-ассемблера для архитектуры ARM, который ускорил время компиляции и дал возможность реализовать некоторые дополнительные возможности для целевых систем ARM, такие как Thumb1, Thumb2 и ARM режимы, а также поддержку специфичных расширений для VFP2, VFP3 и NEON;
  • Значительное улучшение работы MIPS-бэкенда, теперь полноценно поддерживающего архитектуру MIPS64;
  • Добавлен новый порт с поддержкой процессоров Qualcomm Hexagon VLIW;
  • В DragonEgg, плагине к набору компиляторов GCC, заменяющем оригинальные оптимизаторы и генераторы кода GCC на аналоги, созданные в рамках проекта LLVM, в дополнение к полной поддержке работы в виде плагина к GCC 4.5 и 4.6 без применения дополнительных патчей, добавлена базовая поддержка GCC 4.7. Также добавлена возможность сборки для архитектуры ARM;
  • Улучшена работа библиотек libc++ и compiler_rt, которые распространяются под двойной лицензией MIT и UIUC. Библиотека libc++ представляет собой реализацию стандартной библиотеки классов C++, распространяемую под BSD-подобной лицензией и нацеленную на высокоэффективную генерацию кода и на максимальное обеспечение совместимости с существующими и будущими стандартами. Библиотека обеспечивает минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти. В настоящее время libc++ уже интегрирована в базовую систему FreeBSD и планируется к использованию по умолчанию в FreeBSD 10. Отмечается также портирование libc++ для Solaris и возможность полноценного использования на данной платформе в сочетании с libcxxrt и clang;
  • Значительное увеличение производительности проекта VMKit, виртуальной машины Java VM, использующей LLVM для статической и JIT-компиляции;
  • В число официально поддерживаемых проектов включён экспериментальный оптимизатор Polly, в настоящий момент поддерживающий несколько техник оптимизации циклов и позволяющий организовать автоматическое распараллеливание кода с задействованием OpenMP. Для использования polly в clang следует указать "-O3 -mllvm -polly";
  • Для целевых платформ X86-32 и X86-64 значительно расширена поддержка набора инструкций AVX 2 (Advanced Vector Extensions), устранены проблемы с ранее реализованной поддержкой AVX1, добавлена поддержка расширений FMA4 и XOP;
  • Добавлены официально поддерживаемые биндинги для языка Python, которые пока поддерживают только интерфейс для работы с объектными файлами и дизасемблер;
  • Добавлена утилита llvm-stress для проведения стресс-тестирования различных компонентов LLVM путем генерации случайных ll-файлов.

Из параллельно развивающихся проектов, основанных на LLVM, можно отметить:

  • KLEE - символьный анализатор и генератор тестовых наборов;
  • Runtime-библиотека compiler-rt;
  • llvm-mc - автогенератор ассемблера, дизассемблера и других, связанных с машинным кодом компонентов, на основе описаний параметров LLVM-совместимых платформ.
  • VMKit - виртуальная машина для Java и .NET;
  • Реализация функционального языка программирования Pure;
  • LDC - компилятор для языка D;
  • Roadsend PHP - оптимизатор, статический и JIT компилятор для языка PHP;
  • Виртуальные машины для Ruby: Rubinius и MacRuby;
  • Unladen Swallow - реализация языка Python;
  • LLVM-Lua
  • FlashCCompiler - средство для компиляции кода на языке Си в вид пригодный для выполнения в виртуальной машине Adobe Flash;
  • LLDB - новая модульная инфраструктура отладки, использующая такие подсистемы LLVM как API для дизассемблирования, Clang AST (Abstract Syntax Tree), парсер выражений, генератор кода и JIT-компилятор. LLDB поддерживает отладку многопоточных программ на языках C, Objective-C и C++; отличается возможностью подключения плагинов и скриптов на языке Python; демонстрирует экстремально высокое быстродействие при отладке программ большого размера;
  • emscripten - компилятор биткода LLVM в JavaScript, позволяющий преобразовать для запуска в браузере приложения, изначально написанные на языке Си. Например, удалось запустить Python, Lua, Quake, Freetype;
  • sparse-llvm - бэкенд, нацеленный на создание Си-компилятора, способного собирать ядро Linux.
  • Portable OpenCL - открытая и независимая реализация стандарта OpenCL;
  • CUDA Compiler - позволяет сгенерировать GPU-инструкции из кода, написанного на языках Си, Си++ и Fortran;
  • Julia - открытый динамический язык программирования, использующий наработки проекта LLVM.


  1. Главная ссылка к новости (http://lists.cs.uiuc.edu/piper...)
  2. OpenNews: NVIDIA передала CUDA Compiler в руки сообщества LLVM
  3. OpenNews: Представлен проект по созданию среды кросс-компиляции и запуска приложений на базе LLVM/Clang
  4. OpenNews: Релиз набора компиляторов LLVM 3.0
  5. OpenNews: На базе Sparse создан LLVM-бэкенд, нацеленный на пересборку ядра Linux
  6. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: llvm, clang, gcc
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (61) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.7, pavlinux (ok), 12:59, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Polly вкусная няшка.
     
     
  • 2.60, кевин (?), 03:39, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    хм понять бы как её в генте завести..
     

  • 1.8, Андрей (??), 13:30, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Если бы LLDB был не только под Apple.
     
     
  • 2.21, an. (?), 16:57, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Если бы LLDB был не только под Apple.

    Что Вы имеете в виду? Насколько написано в документации, он должен работать под Linux. Я собирал и запускал его (правда, сильно поизучать его не удалось из-за нехватки времени...)

     
     
  • 3.24, Андрей (??), 17:25, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Вот другие обещают, но не делают, а LLDB, значит, может больше, чем на главной странице:
    "LLDB is known to work on the following platforms, but ports to new platforms are welcome:
        Mac OS X desktop user space debugging for i386 and x86-64
        iOS simulator debugging on i386
        iOS device debugging on ARM"
     
     
  • 4.31, an. (?), 18:27, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Да, на главной действительно нету. Но есть вот это: http://lldb.llvm.org/build.html ("Building LLDB on Linux")
     

  • 1.9, Аноним (-), 13:42, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    "Параллельно развивающийся" проект Unladen Swallow умер 2 года назад "за ненадобностью". Где он развивается?
     
     
  • 2.26, Аноним (-), 17:59, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Где он развивается?

    В параллельной вселенной, разумеется. Никогда не слышали про кота Шредингера и ансамбли миров чтоли? :)

     

  • 1.11, x0r (??), 14:28, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    clang static checker классная штука, жаль только для C, а не C++
    Я им нашел ошибки в нескольких opensource проектах
     
  • 1.12, Trewsa (?), 15:42, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Объясните, что такое LLVM? Это наподобие Java? Скомпилировал в байт-код и могу использовать на разных платформах с LLVM. Или  это наподобия виртуальной явы машины, а clang типа jcc. Вот для примера у меня есть какой либо код написанный с использованием C++(никакого гуи только консоль).  Каким образом компилировать? llvm или clang?
     
     
  • 2.14, Толстый (ok), 16:02, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Первое предложение c llvm.org:

    "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them."

    LLVM это набор библиотек для создания компиляторов, основная библиотека предоставляет универсальный бэкенд. Clang - С/C++ компилятор использующий LLVM.

     
     
  • 3.16, Trewsa (?), 16:08, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Первое предложение c llvm.org:
    > "The LLVM Project is a collection of modular and reusable compiler and
    > toolchain technologies. Despite its name, LLVM has little to do with
    > traditional virtual machines, though it does provide helpful libraries that can
    > be used to build them."
    > LLVM это набор библиотек для создания компиляторов, основная библиотека предоставляет
    > универсальный бэкенд. Clang - С/C++ компилятор использующий LLVM.

    Т.е. LLVM это просто библиотеки? И clang не обязательно использовать LLVM?

     
     
  • 4.18, Толстый (ok), 16:21, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой же компилятор как и GCC, только с более быстрой компиляцией и лучшими средствами диагностики.
     
     
  • 5.22, Trewsa (?), 17:18, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой
    > же компилятор как и GCC, только с более быстрой компиляцией и
    > лучшими средствами диагностики.

    Т.о. кроссплатформеность LLVM это кроссплатформенность Clang. И чтобы какое либо приложение было много платформенным необходимо компилировать clang-ом в разных ОС? Или достаточно из одной ОС компилировать с разными флагами под системы? Я все правильно понял?

     
     
  • 6.29, dq0s4y71 (??), 18:17, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И чтобы какое либо приложение было много платформенным необходимо компилировать clang-ом в разных ОС?

    Чтобы какое либо приложение было кроссплатформенным, его нужно таким НАПИСАТЬ. А компилировать его можно тем, что вы выбрали для каждой отдельной платформы

     
     
  • 7.34, Аник (?), 19:52, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так и в чем суть LLVM? Virtual machine не?
     
  • 6.61, кевин (?), 03:44, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой
    >> же компилятор как и GCC, только с более быстрой компиляцией и
    >> лучшими средствами диагностики.
    > Т.о. кроссплатформеность LLVM это кроссплатформенность Clang. И чтобы какое либо приложение
    > было много платформенным необходимо компилировать clang-ом в разных ОС? Или достаточно
    > из одной ОС компилировать с разными флагами под системы? Я все
    > правильно понял?

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

     
  • 5.28, Аноним (-), 18:10, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • –6 +/
    А также - С кривым оптимизатором, выдающим код хуже укуренной обезьяны под град... текст свёрнут, показать
     
     
  • 6.32, an. (?), 18:32, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть подозрение, что Вы не полностью правы насчет его стабильности и того, кому он интересен. Например:
    * FreeBSD 10 отказывается от GCC в пользу CLANG: http://www.linux.org.ru/news/bsd/7747515
    * Debian экспериментирует с этим вопросом: http://www.opennet.ru/opennews/art.shtml?num=33281

    Хотя я не отрицаю, стабильность пока оставляет желать лучшего - internal error'ы мне попадались самому, к сожалению.

     
     
  • 7.39, an. (?), 22:02, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > internal error'ы мне попадались самому, к сожалению.

    Справедливости ради хочу отметить, что речь шла про версию 3.0. Что касается 3.1 - она только что полностью собрала наш проект, на котором падала ее предшественица.

     
  • 7.43, Аноним (-), 03:00, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > * FreeBSD 10 отказывается от GCC в пользу CLANG:

    А эти господа велосипедисты-концептуалы на проблемы своих пользователей по жизни чихать хотели. В ответ все больше контор чихает уже на них. В том числе и потому что выбор между некрофильской версией gcc и глючным шлангом - по вкусу далеко не всем.

    > * Debian экспериментирует с этим вопросом:

    Они и с hurd экспериментируют. Давайте вы свалите на debian/GNU hurd?

    > internal error'ы мне попадались самому, к сожалению.

    Ну так эппл чужие проблемы чинить не будет.

     
     
  • 8.64, кевин (?), 03:59, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    внимание вопрос товарищи знатоки где в новости о выходе нового кланга и ллвм сод... текст свёрнут, показать
     
     
  • 9.66, N901 (?), 06:55, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    кевин, жжешь ... текст свёрнут, показать
     
  • 6.36, Толстый (ok), 20:45, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Мы вроде как находимся на форуме посвященному OpenSource - добро пожаловать! Какой открытый проект не глючный скажи мне пожалуйста? Особенно на ранней стадии своего развития. GCC  до 4 версии насколько я знаю был тоже далеко не сахар. Я clang'ом не пользовался, а только LDC - впечатления очень положительные. Если есть проблемы, то в лучших традициях опенсорса тебе сюда http://llvm.org/bugs/
     
     
  • 7.38, Crazy Alex (ok), 21:34, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Кхм. LDC вместо DMD? Но зачем...
     
     
  • 8.42, Толстый (ok), 01:11, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну dmd мой основной компилятор, но и ldc пользоваться иногда приходится На лину... текст свёрнут, показать
     
     
  • 9.47, Аноним (-), 03:21, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Мсье знает толк ... текст свёрнут, показать
     
  • 7.44, Аноним (-), 03:16, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Глупо ломиться в запертую дверь если она стоит в чистом поле Можно просто взять... текст свёрнут, показать
     
     
  • 8.50, kshetragia (ok), 05:54, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Че сказать-то хотел Залогинься уже, User Ты можешь изменить ник, но стиль впо... текст свёрнут, показать
     
  • 8.52, _yurkis_ (ok), 10:09, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Первый абзац вроде ничего Но потом эталонный неадекват ... текст свёрнут, показать
     
  • 8.65, Аноним (-), 04:37, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    не говори мне, чем пользоваться и не скажу куда тебе следует пойти не нравится ... текст свёрнут, показать
     
  • 6.62, кевин (?), 03:47, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > - Вагоном странных багов, когда все падает к черту с internal error.
    > Так что вместо написания программы вы идете воркэраундить чужой баг компилера...
    > - Странные баги в кодогенерации. Хотите ощутить что ваша программа живет своей
    > жизнью и насколько кайфово ловить неочевидные левые глюки в которых вы
    > не виноваты? Добро пожаловать в программерский ад.
    > - Поддержкой полутора архитектур и систем. Реально почти все разработчики вкалывают в
    > эппле, их интересует 1-2 архитектуры и по сути 1 единственная система
    > в паре вариантов. На все остальное эпплу по очевидным причинам положить.
    > Поэтому доводить до ума вы их будете как-то сами. Почему вы?
    > Потому что яблоку не надо а других как-то и нет.

    весь мой генту перекомпилировался клангом(за исключением 5 приложений где было лень копать) и работает замечательно

    ну и проблемы там токо на си коде, всё на плюсах без проблем( опенмп отключил да -_-)

     
  • 2.33, Имя (?), 19:30, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > ... Это наподобие Java? Скомпилировал в байт-код и могу использовать на разных платформах с LLVM. Или  это наподобия виртуальной явы машины, а clang типа jcc.

    Эксперименты с переносимым байт кодом LLVM идут в NativeClient-е, без особого успеха.

    А так - либа, которая генерит машинный код, местами кое-как.

     
  • 2.49, kshetragia (ok), 05:51, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
       Это скорее и то и другое. CLANG - это фронтенд компилятор. Который разбирает синтаксис C/C++ и генеряет из него байткод наподобие RISK архитектуры. LLVM - виртуальная машина, которая может этот байткод исполнять, генерять нативный код на выбранной системе, упрощает создание различного рода инструментов анализа кода.. Такое разделение так же позволяет вносить более суровые оптимизации в LLVM не трогая собсно синтаксический анализатор.
       C Java в этом отношении очень много общего. Хотя и там эта идея была не нова. В Java позаимствовали наработки Вирта(если не ошибаюсь Модула3/Оберон) и промежуточное представление если не полностью, то во многом унаследовано от P-кода равно как и во многих других языках.
     
     
  • 3.51, kshetragia (ok), 06:15, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    "Идея p-кода принадлежит Арсу Эмману (Urs Ammann), студенту Никлауса Вирта. В своем документе «On Code Generation in a Pascal», опубликованном в 1977 году, Эмман описал метод трансляции исходного кода программы в промежуточный код и то, как эта идея может быть использована для создания переносимых программ. Год спустя Кэн Боулс (Ken Bowles), профессор Калифорнийского университета в Сан Диего, разработал операционную систему UCSD p-System, в основе которой лежала виртуальная машина, исполняющая p-код, который, в свою очередь, создавался специальным компилятором с языка Pascal.

    Идеей p-кода также заинтересовался и сам Никлаус Вирт. В 1985 году он начал работу над операционной системой Oberon, которая базировалась на интерпретаторе p-кода и высокоуровневом языке Oberon. Позднее на ее основе была создана ОС BlueBottle, развитие которой продолжается по сей день."

     
     
  • 4.54, тоже Аноним (ok), 12:58, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Значит, хотя бы это уже не смогли запатентовать корпорации. И то славно...
     
     
  • 5.58, arisu (ok), 00:59, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Значит, хотя бы это уже не смогли запатентовать корпорации. И то славно…

    как будто наличие prior work мешает выдаче патента. патентные бюро патенты не проверяют, фактически. и если сформулировать заявку достаточно туманно или «другими словами» — можно стричь купоны. потому что судебные разбирательства — штука дорогая, бизнес в это время стоит колом и вообще неудобно.

     

  • 1.13, Анонимко (?), 15:47, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >clang static checker классная штука, жаль только для C, а не C++

    Ты про статический анализатор? Если да, то он есть и под C++

     
  • 1.15, Толстый (ok), 16:05, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками программирования компилирующими в нативный код, не углубляясь в детали кодогенерации. До этого это было невозможно, не связываясь с ужасом под названием GCC.
     
     
  • 2.20, iZEN (ok), 16:34, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками
    > программирования компилирующими в нативный код, не углубляясь в детали кодогенерации.
    > До этого это было невозможно, не связываясь с ужасом под названием
    > GCC.

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


     
     
  • 3.23, Толстый (ok), 17:18, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками
    >> программирования компилирующими в нативный код, не углубляясь в детали кодогенерации.
    >> До этого это было невозможно, не связываясь с ужасом под названием
    >> GCC.
    > LLVM как раз-таки позволяет углубляться в детали кодогенерации в отличие от "ужаса
    > под названием GCC".

    Нет. LLVM IR довольно-таки high-level штука. Совсем необязательно знать даже ассемблер чтобы написать кодогенератор для своего языка с помощью llvm.

     
     
  • 4.30, dq0s4y71 (??), 18:20, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Совсем необязательно знать даже ассемблер чтобы написать кодогенератор для своего языка с помощью llvm.

    И работать он будет как кодогенератор, сделанный человеком, который даже не знает ассемблер.

     
     
  • 5.37, Толстый (ok), 21:09, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Совсем необязательно знать даже ассемблер чтобы написать кодогенератор для своего языка с помощью llvm.
    > И работать он будет как кодогенератор, сделанный человеком, который даже не знает
    > ассемблер.

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

     
     
  • 6.45, Аноним (-), 03:18, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > что все плохо, но конкретных примеров никто так и не привел.

    А тебе что, слабо погуглить по наиболее типовым ошибкам и найти тонну мата самому? Ничо, ща бсдельники на него переползут - вот тут то и обчитаешься :)


     
     
  • 7.63, кевин (?), 03:53, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> что все плохо, но конкретных примеров никто так и не привел.
    > А тебе что, слабо погуглить по наиболее типовым ошибкам и найти тонну
    > мата самому? Ничо, ща бсдельники на него переползут - вот тут
    > то и обчитаешься :)

    наиболее типовая ошибка в том что многие пробуя кланг пропускают предупреждения стреляют себе в колено а потом плачуться на форумах..

     
  • 2.68, ffirefox (?), 18:08, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > До этого это было невозможно, не связываясь с ужасом под названием
    > GCC.

    До этого делали генератор С кода, который компилили через любой С-компилятор. Удобство: можно использовать _любой_ С-компилятор и получить качественный код на выходе. Недостаток: дольше компилится (т.е. например, для JIT не совсем удобно).

     

  • 1.19, iZEN (ok), 16:31, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    LLVM/Clang 3.1 доступен в составе базовой системы FreeBSD 9-STABLE.
     
     
  • 2.25, Аноним (-), 17:27, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Фряха поддерживает арм? Если да, то странно смотреть на их спешки, сланг много каки генерит для арма. К примеру вместо инструкции bl(переход с возвратом) втыкает 2 инструкции
    mov lr, pc (сохраняет адрес возврата)
    b (и переходит)

    bl делает тоже самое за одну инструкцию. Потом много чего компилится криво, например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

     
     
  • 3.27, Аноним (-), 18:02, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

    Можно реализовать большой проект быстро, дешево и качественно. Но в любой момент времени вы можете выбрать только любые 2 из этих 3 свойств.

     
  • 3.35, iZEN (ok), 20:14, 23/05/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Фряха поддерживает арм?

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

    > Потом много чего компилится криво, например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

    А может дело в консерватории (в режиме кодирования), который не поддерживается faad?

    (Собрал faad2-2.7 из порта с помощью системного LLVM/Clang 3.0 и 3.1 — артефактов в воспроизведении M4A-файлов, созданных с помощью faac, не заметил).


     
     
  • 4.41, Vova (??), 00:17, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На арме собрал?
     
  • 4.46, Аноним (-), 03:19, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > (Собрал faad2-2.7 из порта с помощью системного LLVM/Clang 3.0 и 3.1 —

    И что за ARMовская машинка была? А то как бы названия команд типа b и bl должны бы навести на смутные подозрения что это слегонца не х86 был :)

     
     
  • 5.56, iZEN (ok), 14:21, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> (Собрал faad2-2.7 из порта с помощью системного LLVM/Clang 3.0 и 3.1 —
    > И что за ARMовская машинка была? А то как бы названия команд
    > типа b и bl должны бы навести на смутные подозрения что
    > это слегонца не х86 был :)

    faac/faad2 собирал под [amd64]. Вопрос был о качестве компиляции декодера.


     
     
  • 6.59, arisu (ok), 01:24, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > faac/faad2 собирал под [amd64]. Вопрос был о качестве компиляции декодера.

    вопрос, наш недалёкий друг, был о качестве кодогенератора под ARM. но ты у нас не читатель, ты писатель прозаек.

     

  • 1.40, MegaEvgeniy (ok), 23:03, 23/05/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Походу это интересно *bsd юзерам по большей степени.

    Использую джава, ибо это супер мега крутая весчь по до всё и вся, для с++ юзаю g++.

     
     
  • 2.48, arisu (ok), 04:01, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Использую джава

    ну и шёл бы себе мимо.

     
     
  • 3.53, MegaEvgeniy (ok), 11:38, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Использую джава
    > ну и шёл бы себе мимо.

    Очень продуктивный коммент =)


     
     
  • 4.57, arisu (ok), 00:52, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Использую джава
    >> ну и шёл бы себе мимо.
    > Очень продуктивный коммент =)

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

     
     
  • 5.69, Аноним (-), 21:29, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А вот Вы как любите свою жабу? Давайте рассказывайте, не стесняйтесь.
     
  • 3.55, Аноним (-), 13:10, 24/05/2012 [^] [^^] [^^^] [ответить]  
  • +/
    и действительно
     
  • 2.67, N901 (?), 07:03, 25/05/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Джава в теме LLVM - означает пользуешься VMKit??
    а ну поделись успехами!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    MIRhosting
    Fornex
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру