[#] [Перевод] LLVM для исследователей
habrabot(difrex,1) — All
2015-09-01 15:00:04


![][1]В этой статье рассказывается о проведении исследований на базе инфраструктуры компилятора [LLVM][2]. Нашего рассказа должно хватить для того, чтобы исследователи, которым компиляторы прежде были по большей части безразличны, пришли в восторг от LLVM и сделали с его помощью что-нибудь интересное.

# Что такое LLVM?

LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++. LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой [новый формат доставки для App Store][3] и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение. LLVM имеет несколько ключевых отличий от других компиляторов:

* Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.

[Читать дальше →][4]

[1]: https://habrastorage.org/files/7bc/94c/88f/7bc94c88f01440318d557f0d3c418375.jpg
[2]: http://llvm.org/
[3]: https://developer.apple.com/library/prerelease/watchos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35-SW2
[4]: http://habrahabr.ru/post/265871/#habracut