
LLVM шиворот-навыворот
Все знают о том, что LLVM нужна тем, кто пишет свой компилятор, но не все догадываются, что ее можно эффективно использовать в других областях, таких как динамическая профилировка или моделирование микроархитектуры процессора.
Расскажем об устройстве LLVM (это, в первую очередь, набор строительных блоков и переиспользуемых библиотек) и покажем, как использовать в своих целях. Быстро пройдемся по простым случаям (например, дизассемблирование бинарника), покажем вариант посложнее (построение CFG). Расскажем про анализаторы кода, почему LLVM — естественная база для построения такого инструмента, что уже есть в библиотеке и чего не хватает. Расскажем о нюансах переиспользования и модификации для своих нужд на основе опыта разработки инструмента динамической профилировки приложений на C/C++ и даже на Java.