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

User Tag List

Страница 1 из 22 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 213

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

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

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

    Я попробую описать что есть и что будет в компиляторе, а вы допишите на что ещё обратить внимание, может что важное забыл.

    Типы данных: 7 целых (byte, word, int64...), boolean, pointer, char, string.
    Допускаются array, record и pointer в любых комбинациях: массив указателей на структуры, внутри которых указатели на массивы байтов, и т.п. Массивы пока только одномерные, но можно описать массив массивов.

    Переменные: любого типа (см. выше), глобальные/локальные, допускается absolute.
    Константы тоже будут, но с ними пока затруднения.

    Подпрограммы (процедуры, функции): до 10 параметров любого типа, параметры передаются по значению и по ссылке (var). Почти работают полиморфные подпрограммы и override.

    Выражения и операторы в них: + - * / > < >= <= = <> div mod and or xor shl shr @ ^ :=
    А также скобки, приоритеты операций, явное преобразование типов. Сложность выражений ограничена объёмом памяти при компиляции и при работе.

    Ветвления, циклы: if, while, repeat. Цикл for пока только в одну сторону (инкремент).

    Cейчас работаю над кодогенератором. Выдаёт более-менее осмысленный, но абсолютно неработоспособный код.

    Планы на будущее:
    - директивы условной компиляции $define, $ifdef и прочие (ничего сложного, надо заняться реализацией);
    - переопределение арифметических операторов;
    - числа с плавающей точкой;
    - файловые типы данных;
    - множества, оператор in;
    - оператор case (пока вообще нет идей как это реализовать);
    - модули (unit, uses, interface, implementation...);
    - динамическое распределение памяти (new, getmem...);
    - умная линковка;
    - inline-подпрограммы;
    - запуск компилятора на платформе с 16-битной адресацией (Z80, собственный процессор...) и диском (FDD, HDD, flash...).
    Последний раз редактировалось Bolt; 22.02.2015 в 02:14.

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

  3. #2
    Banned
    Регистрация
    04.03.2010
    Адрес
    Россия. Пятигорск.
    Сообщений
    2,296
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу компиляторов, книжечку какую нибудь не подскажите, сам сейчас читаю: Хантер. Проектирование и конструирование компиляторов. Но не серьёзно читаю, а так для общего развития.

  4. #3
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,041
    Спасибо Благодарностей отдано 
    926
    Спасибо Благодарностей получено 
    224
    Поблагодарили
    121 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сколько памяти требует компилятор? Работает под TR-DOS? Какие промежуточные файлы создаёт? Есть ли встроенный редактор(интегрированная среда)? Обрабатывает-ли русские комментарии и/или русские строки? Или это вообще кросс-компилятор под Windos-у?

  5. #4
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кажется, Andrew771 выкладывал компилятор Паскаль?

    или грядет вновь изобретенный Оберон велосипед?

    ---------- Post added at 08:50 ---------- Previous post was at 08:49 ----------

    Цитата Сообщение от Bolt Посмотреть сообщение
    Типы данных: 7 целых (byte, word, int64...), boolean, pointer, char, string
    множество (set) не помешало б.

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    Кажется, Andrew771 выкладывал компилятор Паскаль?
    или грядет вновь изобретенный Оберон велосипед?
    множество (set) не помешало б.
    Множества и оператор in указаны в списке "планы на будущее". Мне они тоже нужны.
    С Andrew771 у нас совершенно разные цели. Он пишет компилятор под конкретную платформу, мне же нужен универсальный (кросс-)компилятор Паскаля, поддерживающий 8-битные микропроцессоры и микроконтроллеры. Да, в какой-то степени это велосипед, но компиляторы, в которых нельзя, например, получить указатель на элемент массива, или поддерживающие указатели только на базовые типы, меня категорически не устраивают.
    Цитата Сообщение от Reobne Посмотреть сообщение
    Сколько памяти требует компилятор? Работает под TR-DOS? Какие промежуточные файлы создаёт? Есть ли встроенный редактор(интегрированная среда)? Обрабатывает-ли русские комментарии и/или русские строки? Или это вообще кросс-компилятор под Windos-у?
    Пока это кросс-компилятор, памяти требует много, но в идеале он мне нужен запускающимся на 64k. Работа под TR-DOS - я пока не совсем понимаю работу в ней с временными файлами, а они в этом случае будут. Сейчас, при работе под Windows/Linux, всё держит в памяти, временных файлов не создаёт, кроме выходного файла на языке ассемблера (требуется внешний ассемблер).
    Интегрированной среды нет, это именно консольный компилятор.
    Русские комментарии обрабатывает. Русские строки - да, если символы однобайтные. Скорее всего будет встроена перекодировка для WH1602 и подобных.

    ---------- Post added at 10:45 ---------- Previous post was at 10:34 ----------

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    По поводу компиляторов, книжечку какую нибудь не подскажите,
    Ссылку на хорошую подборку с уклоном в Оберон давал Oleg N. Cher.

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

    По умолчанию

    Я в своем компиле уже перешел на стадию написания оптимизации. Сейчас выдает полностью работоспособный код, поддерживает все заявленные мною операторы и типы, библиотека встроенных процедур полностью написана. Но код не оптимизирован.
    Книгу рекомендую Н.Вирт "Построение компиляторов", по ней писал в основном,всё понятно изложено. Даж бумажную себе купил, в электричке и сортире читать.
    В принципе, я уже пошел дальше книги, компиль выдает не сразу код Спека, как рекомендовано Виртом, а промежуточный псевдокод, который легче оптимизировать. Собстно, из него можно генерить потом код не только Спека, но и любой машины.
    Цитата Сообщение от Bolt Посмотреть сообщение
    Цикл for пока только в одну сторону (инкремент).
    Ну ежели пишешь универсально, то декремент легко вставить сразу.
    Цитата Сообщение от Bolt Посмотреть сообщение
    Константы тоже будут, но с ними пока затруднения.
    туда же. Константы я запихивал в таблицу переменных, но под своим типом.
    Цитата Сообщение от Bolt Посмотреть сообщение
    Cейчас работаю над кодогенератором. Выдаёт более-менее осмысленный, но абсолютно неработоспособный код.
    это как?

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

    По умолчанию

    У псевдокода тоже есть свои недостатки. Попробуй добавить в кодогенератор второй, третий процессор - сразу станет ясно что не так в архитектуре компилятора. Кроме множества поддерживаемых процессоров сейчас также вырисовываются варианты компилятора для запуска на "больших" и на "маленьких" платформах.
    Думаю, надо найти какой-то компромисс между вариантами генерации кода. Это как раз то, про что не напишут в книгах - конкретная реализация, которую выбрал автор. Поэтому могу сказать, что этап чтения книг я уже прошёл.

    Почему код "осмысленный, но неработоспособный"? В кодогенераторе много заглушек. Структура получаемого кода в целом видна, но, например, размер и смещение переменных не учитывается.

  9. #8
    Banned
    Регистрация
    04.03.2010
    Адрес
    Россия. Пятигорск.
    Сообщений
    2,296
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Книгу рекомендую Н.Вирт "Построение компиляторов", по ней писал в основном,всё понятно изложено. Даж бумажную себе купил, в электричке и сортире читать.
    Спасибо, уже скачал, почитаю на досуге
    Вирт Н. Построение компиляторов 2010г. Скачать

  10. #9
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Bolt, а может не изобретать велосипед, а попробовать далее развить Turbo Pascal? Добавить в него типы данных которых нет и которые нужны, функций, операторов и всё что надо? Может даже автоматическую работу с многостраничным ОЗУ? Исходники (декомпилированные) версии 3 под ЦПМ имеются. Мне вот, пока хватило бы добавить тип LongInt беззнаковый и беззнаковый int, но с теорией компиляции не знаком и в исходнике почти ничего не понимаю.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  11. #10
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vadim Посмотреть сообщение
    а попробовать далее развить Turbo Pascal?
    интрено, в какую развить? в сторону Борман Дельфи?

Страница 1 из 22 12345 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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