Некоторый указатель на понимание исходного кода GCC
Я учусь на оптимизации GCC для многоядерных процессоров. Я пытался пройтись по исходному коду, это трудно понять, так как мне нужно добавить некоторый код в бэкэнд. Может кто-нибудь предложить какой-нибудь хороший ресурс, который объясняет поток кода на разных этапах. Также предложите некоторую среду разработки для отладки GCC в основном для пошагового выполнения кода. Это возможно на окнах?
2 ответа
В качестве отправной точки см. Ссылки и избранные материалы на сайте GCC. Я думаю, что особый интерес для вас представляют:
- Внутренние компоненты компилятора GNU C
- Компиляция языков функционального программирования с использованием GCC - Tail Calls by Andreas Bauer
- Портирование GCC для Dunces от Hans-Peter Nilsson
Если вы хотите разрабатывать на Windows, вам, вероятно, нужно начать с MinGW (Minimalist GNU для Windows) источников Compiler Suite (включает отладчик GNU GDB), который является портом GCC для Windows.
Для комфортной среды разработки я не могу помочь, потому что я не занимаюсь разработкой на C++. Но я полагаю, что вам нужна хорошая IDE для C/C++: взгляните на это сравнение, есть много бесплатных IDE с открытым исходным кодом для Windows.
Обновление: я думаю, что ICI также может быть интересным для вас:
Интерактивный интерфейс компиляции (или сокращенно ICI) - это система плагинов с высокоуровневым независимым от компилятора и низкоуровневым зависимым от компилятора API для преобразования текущих компиляторов в совместные открытые модульные интерактивные наборы инструментов. Инфраструктура ICI действует как интерфейс промежуточного программного обеспечения между компилятором и пользовательскими плагинами. Он открывает и повторно использует инфраструктуру компилятора производственного качества, позволяющую проводить анализ и инструментарий программ, оптимизировать программы, просто создавать прототипы новых идей разработки и исследований, избегая при этом создания новых инструментов компиляции с нуля. Например, он используется в MILEPOST GCC для автоматизации компиляции и проектирования архитектуры, а также оптимизации программ на основе статистического анализа и машинного обучения. Это должно обеспечить универсальные самонастраивающиеся компиляторы, адаптируемые к разнородным, реконфигурируемым многоядерным архитектурам, от суперкомпьютеров до встраиваемых систем.
.. как остальные проекты под зонтиком Коллективный тюнинг.
Примечание. Писать "компиляторы - одна из самых сложных программ", как пишет BlueRaja в комментариях, является преувеличением: существуют очень простые компиляторы и очень сложные компиляторы. Но в теории компилятора (как только вы ее изучите) нет ничего эзотерического. GCC - это сложная программа, которая понимается как большая, плохо документированная программа1. Так что rizwanhudda не отчаивайтесь: начните изучать доступную документацию, а затем попросите разработчиков GCC (по IRC-каналу GCC, как предложено nvl или списком рассылки разработчиков GCC) объяснить, что плохо (или вовсе не) задокументировано.
- На самом деле понимание программы является активной областью исследований.
Я бы предложил вам использовать канал GCC irc, он предназначен для обсуждения развития GCC.