forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   Как написать свой компилятор!!! (http://forum.boolean.name/showthread.php?t=9229)

maxturbo 24.09.2009 09:55

Как написать свой компилятор!!!
 
Форумчани, всем привет :) Вот возник такой вопрос...
Допустим я хочу создать свою программу которая будет генерировать код и выводить это все в 3D окне...Чтото типа Blitz3D, как мне это сделать? я даже не знаю с чего начать, подскажите плиз... :)

cahekp 24.09.2009 11:08

Ответ: Как написать свой компилятор!!!
 
to maxturbo:
Для начала, скачай откуда-нибудь книгу по теории конечных автоматов. Вещь, конечно, не из самых простых, но, если освоишь, то сможешь без проблем (хотя как сказать :)) написать свой компилятор или, для начала, хотя бы интерпретатор.
А вообще: писать свой компилятор/интерпретатор - это очень интересная и, однако, трудная вещь! Знаю не по наслышке: сам год назад в универе интерпретатор писал. Сдал на 4-ку! ;)

cahekp 24.09.2009 11:13

Ответ: Как написать свой компилятор!!!
 
Еще могу посоветовать почитать тебе вот такую книжку:
"Компиляторы: принципы, технологии, инструменты", Альфред Ахо, Рави Сети, Джеффри Ульман.
Собственно, я по ней писал свой интерпретатор. Книжка довольно проста в освоении, а это самое главное. :)

impersonalis 24.09.2009 11:42

Ответ: Как написать свой компилятор!!!
 
http://forum.boolean.name/showthread.php?t=3571
Не читал, товарищ, FAQ-а?
По гляделу линком на-ка!

maxturbo 24.09.2009 12:09

Ответ: Как написать свой компилятор!!!
 
Ну я вообще на Delphi хочу его написать, это реально?

Knightmare 24.09.2009 12:14

Ответ: Как написать свой компилятор!!!
 
Можно и на бейсике. Ко всему прочему если уж писать реальный компилятор (не транслятор в асм или типа того) то вали на интел и ищи там описание архитектуры х86 (вроде бы 5 таких доков по 500 страниц), и кури до просветления (в частности приложения 2А и 2В, там непосредственно даны коды асм команд и форма их записи на машинном языке).

ffinder 24.09.2009 12:32

Ответ: Как написать свой компилятор!!!
 
вот еще "с чего начать" обсуждение
http://forum.boolean.name/showthread.php?t=7772
PS: интерпретатор и компилятор отличаются только последней стадией - кодогенерацией.

ViNT 24.09.2009 13:45

Ответ: Как написать свой компилятор!!!
 
Цитата:

Сообщение от ffinder (Сообщение 119605)
PS: интерпретатор и компилятор отличаются только последней стадией - кодогенерацией.

Разве? По-моему, интерпретатор может вообще кода не генерировать.

Tadeus 24.09.2009 13:59

Ответ: Как написать свой компилятор!!!
 
Эх, я свой на блице писал, дошёл до работы с текстом (вывод, очистка экрана и т.п.) и ожидания клавиши :-)

ffinder 24.09.2009 14:12

Ответ: Как написать свой компилятор!!!
 
Цитата:

Сообщение от ViNT (Сообщение 119618)
Разве? По-моему, интерпретатор может вообще кода не генерировать.

цитирую себя же:
3. кодогенерация
вход: АСТ
выход: либо машинный код, либо байт-код для виртуальной машины, либо список непосредственных вызовов = интерпретация.

NitE 24.09.2009 16:10

Ответ: Как написать свой компилятор!!!
 
без обид и приколов - в твоём случае абсолютно нереально (пока) написать компилятор, даже левый, который будет всё перегонять на другой язык.
главный показатель - возникновение такого вопроса.

maxturbo 24.09.2009 16:42

Ответ: Как написать свой компилятор!!!
 
Еще такой вопрос читал вот эту статью http://www.gamedev.ru/code/articles/?id=4229 и возник вопрос, а на чем он там писал? вот у меня допустим есть MicrosoftVisual Studio 2008 могу ли я на этой программе изучить этот пример? Да и еще для меня много чего непонятного есть, к примеру что такое lex и flex? пытался найти описание но все на буржуйском языке...Помогите разобраться во всем этом :) Я так понимаю компилятор это такая программка каторая будет гинерировать твой код, тоесть пишем программу которая будет считывать все дальнейшие функции твоего кода? если да, то потом как допустим этот компилятор применить к моему коду? тоесть надо будет както совмещать код программы с компилятором? если глупо описал то что я понял, то прошу не смеяться так как я с этим сталкиваюсь в первый раз :)

ffinder 24.09.2009 20:28

Ответ: Как написать свой компилятор!!!
 
каждая программа перерабатывает данные.
например: условия задачи -> программа -> решение.
компилятор это программа, которая делает вот такое:
текст программы -> компилятор -> машинный код, исполняемый процессором.

Вообще почитай о языке Forth. Это самый простой язык в мире. Есть статьи Андрея Черезова где он доходчиво всё объясняет.

WaReZ_MEN 27.09.2009 13:46

Ответ: Как написать свой компилятор!!!
 
maxturbo, скрипты есть и на дельфи наиболее простые у FastReorta называется FastScript.

maxturbo 27.09.2009 17:45

Ответ: Как написать свой компилятор!!!
 
Цитата:

Сообщение от WaReZ_MEN (Сообщение 119885)
maxturbo, скрипты есть и на дельфи наиболее простые у FastReorta называется FastScript.

Вот скачал FastScript 1.95 для Delphi 7 Вот теперь влпрос где взять кряк на него?

WaReZ_MEN 27.09.2009 20:23

Ответ: Как написать свой компилятор!!!
 
maxturbo, купи лицензию :) можешь конечно поискать просто fastreport там обычно в комплекте идет... вроде на torrents.ru было

maxturbo 28.09.2009 01:07

Ответ: Как написать свой компилятор!!!
 
И еще такой вопрос, чем вообще отличается Интерператор от компилятора и транслятора? я читал просто ни как понять не могу :) И что используется в Blitz3D интерператор, компилятор или транслятор? я говорю про файл blitzcc.exe...

WaReZ_MEN 28.09.2009 10:27

Ответ: Как написать свой компилятор!!!
 
http://ru.wikipedia.org/wiki/Транслятор
http://ru.wikipedia.org/wiki/Компилятор
http://ru.wikipedia.org/wiki/Интерпретатор
Первым двум предложениям все понятно....

maxturbo 28.09.2009 11:45

Ответ: Как написать свой компилятор!!!
 
Ну а blitzcc.exe к чему относится? всетаки наверное к компилятору?

cahekp 28.09.2009 12:07

Ответ: Как написать свой компилятор!!!
 
Да уж наверное! ;)
EXE'шник же на выходе выходит ("выходе выходит"... Хм, классно звучит!)? Выходит. Значит, это компилятор. Все просто. :)

jimon 28.09.2009 12:28

Ответ: Как написать свой компилятор!!!
 
cahekp
а то что в этом exe'шнике может быть интерпритатор встраиваемого в него кода, не ? ;) не всё так просто
сам exeшник что получается в blitz3d это runtime.dll + код, он присойденяется там в виде виндовского ресурса, только вот не понятно байткод ли это или нативный код

SBJoker 28.09.2009 12:57

Ответ: Как написать свой компилятор!!!
 
ну уже доказано что тот ресурс с кодом можно дизассемблировать и получить вполне адекватные операции, соответствующие исходному коду. Вот только смещения в памяти там неправильные... видимо они относительно какой то границы.

impersonalis 28.09.2009 13:30

Ответ: Как написать свой компилятор!!!
 
Обсуждение данное темы отдельной достойно.
Уж сколько было сломано копий.
см.также http://forum.boolean.name/showthread.php?t=4213

maxturbo 28.09.2009 16:45

Ответ: Как написать свой компилятор!!!
 
Скорей всего как я понимаю, при компиляции bb файлов, код просто мантируется или как там сказать в runtime.dll и получается exe файл?

WaReZ_MEN 28.09.2009 21:09

Ответ: Как написать свой компилятор!!!
 
Вообщем тема уже ушла в другое русло так что закрываем. Погляди как вирусы делают...


Часовой пояс GMT +4, время: 00:40.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot