Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.157.186] |
|
Сообщ.
#1
,
|
|
|
всем привет.
мне захотелось узнать и посмотреть что это такое - компилятор собственными руками для паскаля. причем делать его интересно именно на паскале, то есть например в среде Делфи или на FPC. у кого какие мысли будут на этот счет ? что если посмотреть как это делает на самом FPC ? этого будет достаточно что бы иметь представление ? |
Сообщ.
#2
,
|
|
|
hearIx, неплохой пример написания компилятора для pascal-подобных языков, например, можно взять на www.delphisources.ru ...
|
Сообщ.
#3
,
|
|
|
А во что вы собрались компилировать? В exe? А каков ваш уровень знания машинных команд?
|
Сообщ.
#4
,
|
|
|
уровень знания машинных команд низкий. я же говорю, не хочу использовать ассемблер, хочу использовать компилятор паскаль, что бы сделать другой компилятор паскаль да для .exe
|
Сообщ.
#5
,
|
|
|
Вы не поняли. Я не говорю о разработке компилятора на ассемблере - пишите на Delphi, ради бога. Я говорю о целевой платформе. Чтобы создать exe, вам нужно записать в него машинные команды, полученные в результате компиляции исходного кода программы. Как вы это сделаете, не зная досконально структуру exe и ассемблера x86? Никак.
Однако, вы можете компилировать не в exe, а в код некой виртуальной машины... которую сами же и напишете. |
Сообщ.
#6
,
|
|
|
Цитата hearIx @ уровень знания машинных команд низкий. я же говорю, не хочу использовать ассемблер, хочу использовать компилятор паскаль, что бы сделать другой компилятор паскаль да для .exe приведенный пример так и работает ... |
Сообщ.
#7
,
|
|
|
...если создавать exe-файл будет dcc32, то нафига сдался-то ваш компилятор? Который ничего не делает...
|
Сообщ.
#8
,
|
|
|
Цитата CodeMonkey @ ...если создавать exe-файл будет dcc32, то нафига сдался-то ваш компилятор? Который ничего не делает... CodeMonkey, как я понял hearIx-у требуется написать программу-компиллятор на pascal-подобном языке, которая сможет создавать ехе-файлы пободные тем, что создаются компиллятором в delphi ... возможно я не прав (но при нынешней постановки проблемы, решение задачи - танец с бубном) ... з.ы.: hearIx, как совет для успешной работы посмотри книгу "Альфред Ахо, Рави Сети, Джеффри Ульман "Компиляторы: Принципы, Технологии, Инструменты" для понимания общих принципов построения компилляторов ... после можно посмотреть пример, который я указал ... |
Сообщ.
#9
,
|
|
|
hearIx, почитай книгу Compiler Construction (англ.) Никлауса Вирта.
|
Сообщ.
#10
,
|
|
|
Во, хотел скачать архив по ссылке andrew.virus, а там - индюк )) Засада.
Добавлено В общем, хотел сказать, что: Цитата andrew.virus @ приведенный пример так и работает ... В приведённом примере генерируется машинный код программой на паскале. Что означает, чтобы сделать что-то подобное - нужно иметь знания в этом самом машинном коде. Поскольку автор вопроса в этой теме по нулям, то этот пример для него недостижим. Добавлено Иными словами, создать компилятор, создающий exe, для автора вопроса невозможно. Можно компилить в bat-ник )) |
Сообщ.
#11
,
|
|
|
Не стоит смешивать компилятор со сборщиком (linker). Создание целевого кода для некоторой платформы, таких как PE/ELF/PEF, - совершенно не необходимое условие для запуска программ. Взять, к примеру, p-code или ставший ныне популярный CIL (благодаря .NET).
Например, в среде BlackBox Component Builder (Component Pascal) компилятор создаёт промежуточный код (code file, symbol file), который исполняется Runtime языка. Среда (framework) позволяет запускать программы без создания PE(.exe). При этом этап создания исполняемого кода становится излишним. |
Сообщ.
#12
,
|
|
|
Romtek, автор вопроса указал, что хочет компилить в exe. Я и говорю, что не получится, если плаваете в архитектуре x86. И предложил вместо этого компилировать в код виртуальной машины - ровно то, что ты предлагаешь. А уж сидит ли виртуальная машина отдельным файлом или пристыкована к программе - это дело десятое.
P.S. Про .NET немного не в тему - он не исполняется виртуальной машиной, а компилируется в машинные инструкции текущей платформы. |
Сообщ.
#13
,
|
|
|
Цитата hearIx @ FPC - достаточно плохой претендент для обучения основ построения компилятора.что если посмотреть как это делает на самом FPC ? Кроме того, учиться строить компилятор по готовому коду - это всё равно, что пытаться построить свой дом, изучая по чертежам построенный дом. Уж лучше предложенные книги почитай. Прочтя литуратуру, на странице http://exmortis.narod.ru сможешь найти примеры компиляторов. |