Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Разработка типа компилятора

добрий день всем.
вопрос мой такой- нужно создать программу, которая создает программу.
т.е. программа должна создавать ехе-шку , которая потом выполняется.
подскажите если кто знает..примеры ссылки для начала.
в общем нужно направление мысли задать!

спасибо
Олег

mailto:ol***@c*****.ua

Номер выпуска : 4572
Возраст листа : 625 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380382
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   ol Tue, 7 Jun 2005 15:47:18 +0300 (#380382)

 

Ответы:

Здравствуйте, ol.

Вы писали 7 июня 2005 г., 18:47:18:

Учите Ассемблер... ))

Ответить   Wed, 8 Jun 2005 09:40:14 +0600 (#380677)

 

Приветствую.

Есть некоторые ссылки по вопросу:
Рекомендую почитать статьи по созданию компиляторов:

http://algolist.manual.ru/syntax/index.php

а так же ознакомится с форматом PE и с stub программами:

http://www.codenet.ru/progr/formt/elf_pe.php
http://wasm.ru/article.php?article=1005005

С уважением, Lakmus
ICQ: 241479153
http://lakmus.nudl.net

Номер выпуска : 4580
Возраст листа : 626 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380688
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 8 Jun 2005 06:24:41 +0400 (#380688)

 

Здравствуйте !


А что за exe-шник ?
Самое простое - написать что надо, скомпилировать в exe.
Потом полученный exe-шник включить как ресурс другого приложения.
Эта самая программа просто будет брать из ресурсов необходимый
exe-шник, записывать его на диск и запускать. И все.
Но это, конечно же не "типа компилятора".

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4583
Возраст листа : 626 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380985
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 8 Jun 2005 16:25:37 +0400 (#380985)

 

Привет ol,

Вы мне письмо написали 7 июня 2005 г. (вторник), а я Вам отвечу вот что:

Направление 1.
Твоя программа формирует код на каком-либо языке, а потом вызывает
компилятор того языка.

Направление 2.
Пишишь интерпретатор, а потом формируешь файл, в которой втискиваешь
интерпретатор и код программы, которую надо выполнить (типа SFX-архива)

Направление 3.
Изучить структуру EXE или COM и написать компилятор :)

Афоризм напоследок: Жизнь нужно прожить так, чтобы Боги в восторге предложили
еще одну.
Winamp глаголит: DR. ALBAN IT'S MY LIFE
8 июня 2005 г. 19:18:55

Просто студент
Eugene mailto:rav***@o*****.ru

Номер выпуска : 4590
Возраст листа : 626 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/381107
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 8 Jun 2005 19:25:00 +0400 (#381107)

 

i686-suse-linux)

Hello, Eugene!

On Wed, 8 Jun 2005 19:25:00 +0400 you wrote:

Напраление 4.
Перейти на GNU GPL, взять куски (можно целиком) gcc (или g++ или gnu ada
compiler или...) и делать с ним все что пожелаешь.

Ответить   "B." Wed, 8 Jun 2005 22:30:40 +0400 (#381235)

 

Приветствую вас, Eugene the Monster!

08.06.2005 20:25 вы писали:

По моему скромному мнению, это далеко не самое важная и сложная вещь в
разработке компилятора ;) Изучить хотя бы вкратце теорию лексического,
синтаксического и семантического анализа, потом любой генератор парсеров
(Lex + Yacc, CocoR, ANTLR) - и после некоторых трудов у нас есть
фронтенд компилятора. Потом беремся за теорию кодогенерации (и возможно,
оптимизации) и изучение ассемблера платформы, под которую собираемся
писать компилятор - после чего пишем бэкэнд. У нас есть компилятор! :)

"Книга Дракона" (Ахо, Сети, Ульман) по этому направлению рулит.

Ответить   Thu, 09 Jun 2005 07:16:39 +0500 (#381370)

 

Всем
за ссылки спасибо. но это не задача компиляции в чистом виде.
скорее - результирующий exe-шник должен нести в себе
различный обем данных. код обрабатывающий эти данные,
я могу сделать универсальным (надеюсь!).
меняются данные и их объем. и необходимо всеэто заложить в исполнимый
модуль, без файлов данных-вот в чем проблема.
Спасибо
ол

Ответить   ol Thu, 9 Jun 2005 10:26:57 +0300 (#382034)

 

Здравствуйте !


Ну тогда все совсем просто. Делаешь "заготовку" - как раз тот exe-шник
с универсальным алгоритмом обработки данных. В ресурсы ему втыкаешь
несколько байт данных (делаешь, например, свой тип ресурса, ID тебе
известен). В алгоритмах обработки данных грузишь данные из ресурсов и
делаешь с ними что то.

Когда надо создать новый экземпляр exe-шника с данными - эту самую
заготовку обрабатываешь своим "компилятором" - просто изменяешь
ресурс (ID и тип тебе известен) с помощью API функций:
BeginUpdateResource,
UpdateResource,
EndUpdateResource.
И получаешь новый exe-файл с новыми данными.

Эту самую заготовку можно тоже как ресурс засунуть в твой "компилятор".
И при генерации нового exe-шника выгружать ее на диск и изменять при помощи
вышеописанных функций.

З.Ы. Наверно, хочешь сделать что то типа архиватора, создающего
самораспаковывающиеся архивы (или кодироващика какого нибудь) ?

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4621
Возраст листа : 628 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/382510
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Fri, 10 Jun 2005 18:44:56 +0400 (#382510)

 

Привет всем
Спасибо.
да пожалуй это решение оптимальное.
да, моя задача похожа на самораспаковку.
только пользователь должен собирать в файл разные данные а потом файл
выполняться.





Ответить   ol Tue, 14 Jun 2005 08:47:50 +0300 (#384454)

 

Хаю ду ю ду ol?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

http://podgoretsky.com/ddp.html

Лекции по построению компилятора на Pascal 1.6 MB

Сам не качал, поэтому не знаю как там все описано

Ответить   Thu, 9 Jun 2005 02:08:33 +0500 (#381291)