Разработчики Sparse (https://sparse.wiki.kernel.org/), семантического парсера для языка Си, объявили (http://permalink.gmane.org/gmane.comp.parsers.sparse/2600) о создании LLVM-бэкенда sparse-llvm (https://github.com/penberg/sparse-llvm). Конечной целью проекта является создание рабочего компилятора Си, способного собрать ядро Linux. Код проекта распространяется под лицензией MIT.
LLVM-бэкенд уже способен генерировать код для простых примеров на языке Си для различных платформ, но проект ещё находится на ранней стадии развития и не способен осуществить сборку реальных проектов. Созданный на базе Sparse LLVM-бэкенд, пока ограничен поддержкой таких возможностей языка Си, как вызов функций, разбор выражений Switch и if-else, выполнение арифметических, бинарных и операций с плавающей запятой. Тем не менее автор проекта считает (http://lwn.net/Articles/456761/), что sparse-llvm сможет достигнуть стадии пересборки ядра Linux раньше, чем Clang, так как Sparse, на базе которого развиваетс...URL: http://lwn.net/Articles/456709/rss
Новость: http://www.opennet.me/opennews/art.shtml?num=31636
>LLVM-бэкенда позволит обеспечить генерацию универсального платформонезависимого псевдокодаllvm генерит bitcode и он платформенно зависим.
http://llvm.org/docs/FAQ.html#platformindependent
Сам читал перед тем как ссылку ставить?LLVM изначально генерит платформонезависимый биткод. Сами языки C и C++ не рассчитаны на компиляцию в платформонезависимый код из-за выбора архитектуры выполнения на уровне препроцессинга исходника. Но сие не значит что путём определённых манипуляций с кодом мы не можем выкинуть или заменить платформозависимые части.
> Сам читал перед тем как ссылку ставить?
> LLVM изначально генерит платформонезависимый биткод. Сами языки C и C++ не рассчитаны
> на компиляцию в платформонезависимый код из-за выбора архитектуры выполнения на уровне
> препроцессинга исходника. Но сие не значит что путём определённых манипуляций с
> кодом мы не можем выкинуть или заменить платформозависимые части.gcc же делает платформо-независимый gimple. Короче ты не сможешь взять файл с биткодом и запустить его на другой архитектуре. Так что дроч на llvm вместо gcc непонятен
> gcc же делает платформо-независимый gimple. Короче ты не сможешь взять файл с
> биткодом и запустить его на другой архитектуре. Так что дроч на
> llvm вместо gcc непонятенА зачем брать файл с биткодом, когда можно взять исходник?
>А зачем брать файл с биткодом, когда можно взять исходник?Почему это? LLVM финансируется прежде всего Apple, которая очень не любит показывать исходники.
> llvm генерит bitcode и он платформенно зависим.
> http://llvm.org/docs/FAQ.html#platformindependentПравильнее было бы сказать не платформозависим, а платформонезависим с определенными исключениями. По ссылке раздел FAQ только про GCC-фронтэнд, а в новости речь про Sparse.
> llvm генерит bitcode и он платформенно зависим.
> платформенно зависимЭто как так? Моя твоя не понимать
> Разработчики Sparse (https://sparse.wiki.kernel.org/), семантического парсера для
> языка Си, объявили (http://permalink.gmane.org/gmane.comp.parsers.sparse/2600) о
> создании LLVM-бэкенда sparse-llvm (https://github.com/penberg/sparse-llvm). Конечной
> целью проекта является создание рабочего компилятора Си, способного собрать ядро Linux.
> Код проекта распространяется под лицензией MIT.на базе GCC значит такое не возможно.. интересный факт - запишем в книжечкую
Да, "родной" кодгенератор у Спарс кривой. У меня валился в сегфолт на простейших выражениях. С другой стороны, что ожидать от "глупого" бэк-энда, как его окрестил сам Торвальдс...
> Тем не менее автор проекта считает, что sparse-llvm сможет достигнуть стадии пересборки ядра Linux раньше, чем Clang, так как Sparse, на базе которого развивается sparse-llvm, изначально полностью поддерживает парсинг кода всего ядра.а разве Clang не собирает ядро? По моему они уже года два, как собрали.
С Clang собирается только минимум, позволяющий загрузиться. C Clang не работает куча подсистем (SELinux, Posix ACL, IPSec, eCrypt, Xen, IPv6, Netfilter, поддержка модулей ядра и т.п.).
PS. http://www.opennet.me/opennews/art.shtml?num=28418
>а разве Clang не собирает ядро? По моему они уже года два, как собрали.угу. собрали и уже 2 года не обновляли.
следующую сборку ждут ещё через 2 года.
> а разве Clang не собирает ядро?Нет. Рекламная брехня на эту тему была, но основания для нее достаточно жидкие (собирается лишь куцый уродец с кучей проблем).
>По моему они уже года два, как собрали.
Два года назад собрали этого уродца, и с тех пор никаких подвижек нет.