Важная информация

User Tag List

Страница 2 из 22 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 213

Тема: Компилятор языка Паскаль - планы на будущее

  1. #11
    Master
    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Vadim, я когда начал писать компилятор тоже с теорией компиляции не был знаком. Была мысль прикрутить к FPC нужный кодогенератор, но FPC со стороны исходников мне не очень понравился. Я решил пойти по пути написания компилятора с нуля.

    Доработать Turbo Pascal под CP/M? А толку? Даже если разобраться в декомпилированных исходниках и умудриться доработать, то это так и останется компилятор, "прибитый гвоздями" к конкретному процессору и ОС.

  2. #12
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    130
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    У псевдокода тоже есть свои недостатки. Попробуй добавить в кодогенератор второй, третий процессор - сразу станет ясно что не так в архитектуре компилятора.
    псевдокод в данном случае - это не замена ассемблерных команд один-в-один, а каждая команда псевдокода может содержать несколько ассемблерных команд. Т.е. по сути каждая команда псевдокода описывает элементарное действие (запомнить, сложить, делить и т.д.), которое может состоять из нескольких ассемблерных команд.
    Вот например, нужно компильнуть: a:=4+(2+3).
    При просмотре исходника преобразуем в команды:
    Код:
    _LoadConst 4 -
    _Push - -
    _LoadConst 2 -
    _Push - -
    _LoadConst 3 -
    _PopAdd - -
    _PopAdd - -
    _StoreByte 0 _A
    Каждая команда содержит мнемонику, а также один числовой и один строковый параметры (прочерк '-' означает отсутствие значения).
    _LoadConst на коде Асма будет ld hl,const
    _Push - push hl. Приходится вталкивать в стек каждое значение, иначе заранее неизвестно, что мы с ним будем делать дальше.
    _PopAdd - это в реале две команды pop de и add hl,de.
    _StoreByte - это запись hl в один байт, т.е. ld a,l и ld(_A),a
    Реальный код:
    Код:
          ld    hl,4
          push  hl
          ld    hl,2
          push  hl
          ld    hl,3
          pop   de
          add   hl,de
          pop   de
          add   hl,de
          ld    a,l
          ld    (_A),a
    Теперь, чтобы его оптимизировать, не нужно проводить глубокий анализ всех push-pop и прочего, а только смотрим последовательные комбинации команд и сравниваем с заданными шаблонами оптимизатора. Например, имеется шаблон - последовательность _Push, _LoadConst, _PopAdd заменить на _LoadConst2Add.
    _LoadConst2Add состоит из двух команд: ld de,const и add hl,de
    Код:
    _LoadConst 4 -
    _Push - -
    _LoadConst 2 -
    _LoadConst2Add 3 -
    _PopAdd - -
    _StoreByte 0 _A
    Тогда будет:
    Код:
          ld    hl,4
          push  hl
          ld    hl,2
          ld    de,3
          add   hl,de
          pop   de
          add   hl,de
          ld    a,l
          ld    (_A),a
    Как-то так. Команды и шаблоны я сам придумываю в своем компиле
    Последний раз редактировалось Andrew771; 25.02.2015 в 12:55.

  3. #13
    Master
    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, всё верно. Но у нас всё-таки разные компиляторы и подход к их написанию. Потом будет интересно сравнить результат.

  4. #14
    Veteran
    Регистрация
    10.07.2013
    Адрес
    г. Москва
    Сообщений
    1,432
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    батл компиляторов?))))))))))))

  5. #15
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    130
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DJs3000 Посмотреть сообщение
    батл компиляторов?))))))))))))
    ага. Oleg N.Cher пока выигрывает, у него уже готов!

  6. #16
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Снимаем с соревнований. Во-первых потому что это всё-таки не Паскаль, во-вторых потому что там всю работу делают Ofront и SDCC. А развивается ли Z80-кодогенератор SDCC? Определённо да. Недавно обновил до нового снапшота, компактнее код генерит. На удивление стабильно собрал несколько сложных прог. Нужно не лениться репортить ошибки, их таки исправляют и продукт становится лучше.

    AlCo предлагает разработать Оберон-компилятор чтобы работал на самом Спеке, я пока отбрыкиваюсь, вроде странная задачка.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    AlCo предлагает разработать Оберон-компилятор чтобы работал на самом Спеке, я пока отбрыкиваюсь, вроде странная задачка.
    Воистину странная - адекватоной IDE нет на Спеке.

  9. #18
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Воистину странная - адекватоной IDE нет на Спеке.
    Странная идея - пытаться юзать Спек как полноценную хост-платформу для разработки в качестве IDE. А то ведь, как я думаю, этому мешают объективные факторы - низкое разрешение экрана, слабенький проц и мало памяти. Даже если взять во внимание клоны, то и тогда вопрос использования именно Z80-based машины не имеет преимуществ, помимо нерациональной привязанности к системе команд этого проца aka тёплых домашних воспоминаний. Или это для истинных мазохистов ценителей?

    Кто-то называет выбранный мною подход трансляции Оберона в Си читерским, но я не верю в разработку кодогенератора приемлемого качества одной персоной на голом энтузиазме за разумный срок. Также не верю и в то, что две персоны согласуют взгляды на разработку до каких-то общих целей. Так что это раз. Два - желание хорошо отделить фронт-энд от бэк-энда. Вроде бы мне это удалось. Переписывать под Z80 - странная идея. Топтаться на месте много лет. Кому-то нравится? Удачи.

    Цитата Сообщение от Bolt Посмотреть сообщение
    Ссылку на хорошую подборку с уклоном в Оберон давал Oleg N. Cher.
    Вот ещё кое-что интересное на тему языков и трансляции, я весьма советую:

    Правильные книги по теории и обзору языков программирования

  10. #19
    Master
    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Кто-то называет выбранный мною подход трансляции Оберона в Си читерским, но я не верю в разработку кодогенератора приемлемого качества одной персоной на голом энтузиазме за разумный срок.
    Подход не читерский, подход позволяет достичь поставленную цель - компиляция под заданную платформу - за разумный срок. У меня цель - сборка под разные платформы, не используя Си в любом виде.

    Можно пояснить что понимается под приемлемым качеством кодогенератора?

  11. #20
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    У меня цель - сборка под разные платформы, ...
    Как по мне дак самое главное в этом магическом "разные платформы" именно адресуемое пространство, сегодня 99.999% литературы по алгоритмам предпологают бесконечное адресное пространство, а это значит что для запуска их нужен процессор у которого отсутствует лимит адресов (такого процессора нету, но наблюдается тенденция увеличения битности адреса в процессорах по мере возрастания размера обрабатываемых данных).

    Короче, отвечая в лоб, если хочется чтобы твой компилер был одинаковый для всех, то сначала уровняй всех. Например напиши для всех 1 виртуальную машину, и компилер пиши для этой машины. Ну и тут вопрос скорости, он вторичный в плане теории, но первичный на практике, так как мы уже видели и запуск ARM linux на avr 8bit и запуск x86 windows3.0 на mcs-51, но тормоза свели эти проекты в область чисто академического интереса.

    Отсюда вопрос - не пагубна ли сама идея: "сборка под разные платформы"? смысла практического ведь НЕТУ? Но вот под конкретную платформу сделать хороший инструмент, нужный людям! куда как более востребованное занятие, не зря народ жаждит update-a borland pascal под cp/m

Страница 2 из 22 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Пожелания и планы по эмулятору Башкирия-2М
    от b2m в разделе Эмуляторы отечественных компьютеров
    Ответов: 823
    Последнее: 01.07.2019, 21:19
  2. Пожелания и планы по эмулятору MESS
    от shattered в разделе Эмуляторы отечественных компьютеров
    Ответов: 57
    Последнее: 02.08.2017, 22:14
  3. Планы на новые создаваемые игры
    от TomCaT в разделе Игры
    Ответов: 67
    Последнее: 21.03.2012, 14:44
  4. Назад в будущее?
    от Sonic в разделе Оси
    Ответов: 27
    Последнее: 19.07.2005, 16:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •