Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Уточнения (UPD) 15.09.04 11:04 Число просмотров: 1574
Автор: leo <Леонид Юрьев> Статус: Elderman Отредактировано 15.09.04 11:20 Количество правок: 1
|
> > 1) Почему "compiler collection"? Значит ли это, что > gcc > > можно "научить" другому языку? > Значит. У GCC типа-модульная структура, в которую входит > так называемый компилятор переднего плана (frontend > compiler), который преобразует код на некотором языке во > "внутреннее представление" (по-моему, там C, но точно > утверждать не буду), после чего за дело берется "компилятор Да, именно так. FrontEnd-ов довольно много, см. http://gcc.gnu.org/frontends.html
Сделать свой front-end IMHO проще чем "оседлать" новый процессор.
UPD: Забыл уточнить, frontend общается с backend не через "C", а генерит структуры tree-nod-ов и псевдо-код на RTL (register transfer language).
> > 2) Это большой геморр обучить gcc компилить в > какую-нибудь > > экзотику? Вообще во что-нить "марсианское", к примеру > это > > совершенно новый процессор? ;-) > Не слишком, насколько я понимаю. Проще, чем добавить новый > язык. Но работы, конечно, достаточно. То есть по порядку IMHO не так просто. Машинно-независимый оптимизатор конечно есть в gcc, но большую роль играет кодо-генератор, который и придется делать. Добится состояния "лишь бы работало" гораздо проще чем сделать качественный и не-медленный генератор кода.
> > 3) Это большой геморр приучить gcc к "другому" формату > > исполняемых файлов - не PE32, к примеру, а чего-нибудь > > абсолютно новому? > Проще, чем предыдущий пункт, определенно. Фактически, речь > не о компиляторе, а о линкере, поскольку именно он > формирует готовые бинарники. Кстати, для нового языка > линкер тоже, естественно, придется перелопатить. IMHO это самое простое, в 99.9% достаточно просто создать описание формата.
см. "GNU binutils".
|
|
|