примеры кода для изучения программирования на LLVM - PullRequest
15 голосов
/ 08 января 2012

Я изучаю программирование бэкэндов LLVM.

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

Не могли бы вы порекомендовать ресурсы для обучения? (Я знаю руководство программиста LLVM и книгу Дракона;)).

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

Эти коды не должны быть ограничены частью анализа. В целом речь идет о бэкэнд-программировании на LLVM, в то время как анализ и программные преобразования наиболее интересны.

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Все преобразования LLVM организованы как отдельные проходы внутри lib / Transforms dir. Вы можете прочитать его исходники и выполнить любой произвольный проход в своем коде, используя инструмент opt.

Также есть хороший учебнико том, как написать свой пропуск и использовать его в качестве загружаемого модуля без перекомпиляции всего LLVM.

Так что уже есть довольно широкая игровая площадка.

1 голос
/ 19 августа 2014

Я искал что-то похожее, код, который использует библиотеки llvm, и после долгого сеанса в Google я просто нашел его на веб-сайте llvm в разделе "llvm projects": http://llvm.org/ProjectsWithLLVM/

Просто скачайте то, что вы считаете актуальным для вас, и играйте вместе.

1 голос
/ 20 января 2012

Как кто-то, кто сделал то, что вы хотите сделать 3 года назад: кодовая база LLVM имеет лучшие примеры.Может быть, хорошее место для начала - анализ доминаторов, как это хорошо описано в книгах компиляторов.

Проверьте, как это делается в LLVM: http://llvm.org/doxygen/Dominators_8h_source.html

Другим местом, где можно посмотреть, может быть планирование команд,

...