некоторый указатель на понимание исходного кода GCC
-
22-09-2019 - |
Вопрос
Я студент, работающий над оптимизацией GCC для многоядерного процессора.Я попытался просмотреть исходный код, но проследить за ним сложно, так как мне нужно добавить немного кода в серверную часть.Кто-нибудь может предложить какой-нибудь хороший ресурс, который объясняет прохождение кода через различные этапы.Также предложите какую-нибудь среду разработки для отладки GCC, главным образом для пошагового выполнения кода.Возможно ли это в Windows?
Решение
В качестве отправной точки см. Ссылки и Избранные чтения на сайте GCC.Особый интерес для вас, я думаю, представляют:
- Внутренние компоненты компилятора GNU C
- Компиляция функциональных языков программирования с использованием вызовов GCC -- Tail автор : Андреас Бауэр
- Портирование GCC для тупиц автор: Ханс-Петер Нильссон
Если вы хотите разрабатывать в Windows, вам, вероятно, нужно начать с MinGW (Минималистичный GNU для Windows) Исходный код пакета компиляторов (он включает отладчик GNU GDB), который является портом GCC для Windows.
Для создания комфортной среды разработки я мало чем могу помочь, потому что я не занимаюсь разработкой на C ++.Но я полагаю, что хорошая IDE для C / C ++ - это то, что вам нужно:взгляните на это сравнение, существует множество бесплатных IDE с открытым исходным кодом для Windows.
Обновить: Я думаю , что ICI также может представлять для вас интерес:
Тот Самый Интерактивный Интерфейс Компиляции (или сокращенно "ICI") - это плагин система с высокоуровневым независимым от компилятора и низкоуровневым зависящим от компилятора API для преобразования текущих компиляторов в совместные открытые модульные интерактивные наборы инструментов. Платформа ICI действует как "промежуточное программное обеспечение" интерфейс между компилятором и определяемыми пользователем плагинами.Он открывает и повторно использует производственную инфраструктуру компилятора для обеспечения анализа программ и инструментария, точной оптимизации программ, простого прототипирования новых разработок и исследовательских идей, избегая при этом создание новых инструментов компиляции с нуля .Например, он используется в MILEPOST GCC для автоматизации компиляции и проектирования архитектуры и программирования оптимизации на основе статистического анализа и машинного обучения.Это должно обеспечивать универсальную самонастройку компиляторы, адаптируемые к разнородным, реконфигурируемым многоядерным архитектурам, начиная от суперкомпьютеров и заканчивая встроенными системами.
..как и остальные проекты в рамках Коллективная НАСТРОЙКА зонтик.
Примечание: Писать "компиляторы - одна из самых сложных существующих программ", как написала BlueRaja в комментариях, является преувеличением:существуют очень простые компиляторы и очень сложные.Но в теории компиляторов (после того, как вы ее изучили) нет ничего эзотерического.GCC - это сложная программа, которую можно понимать как угодно БОЛЬШОЙ, плохо документированная программа существует1.Так что ризванхудда, не отчаивайся:начните изучать доступную документацию, а затем обратитесь к разработчикам GCC (на irc-канале GCC, как предложено nvl или Список рассылки разработчиков GCC) объяснить то, что плохо (или вообще не задокументировано).
- На самом деле понимание программы является активной областью исследований.
Другие советы
Я бы предложил вам использовать IRC-канал GCC, ИМХО, он предназначен для обсуждения развития GCC.