На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Компилятор паскаля собственными руками.
    всем привет.
    мне захотелось узнать и посмотреть что это такое - компилятор собственными руками для паскаля. причем делать его интересно именно на паскале, то есть например в среде Делфи или на FPC. у кого какие мысли будут на этот счет ?
    что если посмотреть как это делает на самом FPC ? этого будет достаточно что бы иметь представление ?
      hearIx, неплохой пример написания компилятора для pascal-подобных языков, например, можно взять на www.delphisources.ru ... ;)
        А во что вы собрались компилировать? В exe? А каков ваш уровень знания машинных команд?
          уровень знания машинных команд низкий. я же говорю, не хочу использовать ассемблер, хочу использовать компилятор паскаль, что бы сделать другой компилятор паскаль :D да для .exe
            Вы не поняли. Я не говорю о разработке компилятора на ассемблере - пишите на Delphi, ради бога. Я говорю о целевой платформе. Чтобы создать exe, вам нужно записать в него машинные команды, полученные в результате компиляции исходного кода программы. Как вы это сделаете, не зная досконально структуру exe и ассемблера x86? Никак.

            Однако, вы можете компилировать не в exe, а в код некой виртуальной машины... которую сами же и напишете.
              Цитата hearIx @
              уровень знания машинных команд низкий. я же говорю, не хочу использовать ассемблер, хочу использовать компилятор паскаль, что бы сделать другой компилятор паскаль да для .exe

              приведенный пример так и работает ... ;)
                ...если создавать exe-файл будет dcc32, то нафига сдался-то ваш компилятор? Который ничего не делает...
                  Цитата CodeMonkey @
                  ...если создавать exe-файл будет dcc32, то нафига сдался-то ваш компилятор? Который ничего не делает...

                  CodeMonkey, как я понял hearIx-у требуется написать программу-компиллятор на pascal-подобном языке, которая сможет создавать ехе-файлы пободные тем, что создаются компиллятором в delphi ... возможно я не прав (но при нынешней постановки проблемы, решение задачи - танец с бубном) ... ;)

                  з.ы.: hearIx, как совет для успешной работы посмотри книгу "Альфред Ахо, Рави Сети, Джеффри Ульман "Компиляторы: Принципы, Технологии, Инструменты" для понимания общих принципов построения компилляторов ... после можно посмотреть пример, который я указал ...
                    hearIx, почитай книгу Compiler Construction (англ.) Никлауса Вирта.
                      Во, хотел скачать архив по ссылке andrew.virus, а там - индюк :))) Засада.

                      Добавлено
                      В общем, хотел сказать, что:

                      Цитата andrew.virus @
                      приведенный пример так и работает ...


                      В приведённом примере генерируется машинный код программой на паскале. Что означает, чтобы сделать что-то подобное - нужно иметь знания в этом самом машинном коде. Поскольку автор вопроса в этой теме по нулям, то этот пример для него недостижим.

                      Добавлено
                      Иными словами, создать компилятор, создающий exe, для автора вопроса невозможно.

                      Можно компилить в bat-ник :)))
                        Не стоит смешивать компилятор со сборщиком (linker). Создание целевого кода для некоторой платформы, таких как PE/ELF/PEF, - совершенно не необходимое условие для запуска программ. Взять, к примеру, p-code или ставший ныне популярный CIL (благодаря .NET).
                        Например, в среде BlackBox Component Builder (Component Pascal) компилятор создаёт промежуточный код (code file, symbol file), который исполняется Runtime языка. Среда (framework) позволяет запускать программы без создания PE(.exe). При этом этап создания исполняемого кода становится излишним.
                          Romtek, автор вопроса указал, что хочет компилить в exe. Я и говорю, что не получится, если плаваете в архитектуре x86. И предложил вместо этого компилировать в код виртуальной машины - ровно то, что ты предлагаешь. А уж сидит ли виртуальная машина отдельным файлом или пристыкована к программе - это дело десятое.

                          P.S. Про .NET немного не в тему - он не исполняется виртуальной машиной, а компилируется в машинные инструкции текущей платформы.
                            Цитата hearIx @
                            что если посмотреть как это делает на самом FPC ?
                            FPC - достаточно плохой претендент для обучения основ построения компилятора.
                            Кроме того, учиться строить компилятор по готовому коду - это всё равно, что пытаться построить свой дом, изучая по чертежам построенный дом. Уж лучше предложенные книги почитай.

                            Прочтя литуратуру, на странице http://exmortis.narod.ru сможешь найти примеры компиляторов.
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0347 ]   [ 16 queries used ]   [ Generated: 10.05.24, 08:52 GMT ]