Компиляторы в качестве примера [закрываются]

8
задан Jon Seigel 12 April 2010 в 17:52
поделиться

7 ответов

http://en.wikipedia.org/wiki/List_of_compilers выбрали те, у которых тип лицензии «открытый исходный код»

{{1} }
4
ответ дан 5 December 2019 в 20:14
поделиться

gas может преобразовать язык ассемблера в объектный код, который ld может затем связать с соответствующими средами выполнения для создания программы.

0
ответ дан 5 December 2019 в 20:14
поделиться

Если ваша цель - узнать, как работают компиляторы и / или как кодировать, тогда вам действительно следует прочитать книгу по этой теме . Однако при поиске примеров исходного кода попробуйте примеры компиляторов Паскаля, такие как этот .

Паскаль имеет довольно простую грамматику и реализован во многих книгах.

0
ответ дан 5 December 2019 в 20:14
поделиться

Я бы посоветовал взять в руки учебник для составителей. Они объясняют все необходимые компоненты компилятора и обычно разрабатывают компилятор от начала до конца.

У меня есть копия Современная реализация компилятора на Java из моего курса компиляторов, и я очень доволен этим.

2
ответ дан 5 December 2019 в 20:14
поделиться

Вы пытаетесь понять, как создать компилятор, или вы пытаетесь узнать, как исполняемый файл Win32 выглядит внутренне?

Если первое, то прочтите книга о том, как создать компилятор, будет намного эффективнее, чем попытки реконструировать исходный код. Компиляторы не похожи ни на что из того, что вы когда-либо видели, и это действительно помогает, если автор познакомит вас с принципами, общими приемами и инструментами. Также стоит отметить, что компиляторы создаются поэтапно, и только ближе к концу реализации вам нужно иметь какие-либо знания о ЦП и операционной системе, на которые вы нацеливаетесь. Если вы новичок в создании компиляторов, вам есть о чем узнать, прежде чем вы дойдете до этого этапа.

Однако, если вы хотите понять формат исполняемых файлов Win32, вам необходимо понимать ассемблерный код x86 (или x64) и формат файла Portable Execution (PE) (который используется Windows для исполняемых файлов). Для введения в ассемблерный код x86 я бы порекомендовал отличную бесплатную электронную книгу доктора Пола Картера "PC Assembly Language" http://www.drpaulcarter.com/pcasm/ , а для PE я бы начал здесь ] http://msdn.microsoft.com/en-us/magazine/cc301805.aspx и http://msdn.microsoft.com/en-us/magazine/cc301808.aspx

2
ответ дан 5 December 2019 в 20:14
поделиться

Самый простой язык программирования - это ассемблер, точнее, x86-ассемблер. Самый известный ассемблер, NASM, с открытым исходным кодом; вы можете ознакомиться с его исходным кодом по адресу:

http://repo.or.cz/w/nasm.git

В NASM есть макросы, которые действительно "компилируются" в ассемблерные выражения. Хотя это не полноценный язык, он сфокусирован на основах.

0
ответ дан 5 December 2019 в 20:14
поделиться

Я бы посоветовал поискать исходный код компилятора Pascal, C или SmallC для MS-DOS (16-бит). В частности, если они ограничиваются 16-битным плоским реальным режимом (<= 64 КБ режима памяти), они должны быть довольно простыми.

Поддержка сегментированного реального режима добавляет большую сложность, которой лучше всего избегать, и не имеет отношения к 32-битной программе с плоским защищенным режимом (32-битное программирование, отличное от ОС).

Для процессора, отличного от x86, пример программы для серии статей Джека Креншоу « Let's Build a Compiler », который представляет собой компилятор синтаксиса, подобный Паскалю, предназначенный для 16/32-разрядного процессора Motorola MC68000. Также существует версия Марселя Хендрикса, написанная на Forth на win32 версии серии .

Существует также TCC - Tiny C Compiler, который поддерживает вывод PE-i386 (то есть Win32).

Хотя, если вы не удосужились прочитать всю ссылку SO, которую Фирас Ассаад дал в комментариях, которая содержит все эти ссылки, кроме одной, я думаю, вы найдете исходный код компилятора ужасно длинным.

0
ответ дан 5 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: