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

User Tag List

Страница 8 из 22 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 213

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

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

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Что в них нужно подогнать под твой компиль?
    Скорее компилятор надо подогнать под поддержку того, что нужно этим программам...

    Eurofoot и Topolog пока по объёму сгенерированного кода в 64 килобайта не уложатся.
    Также там есть readln (которого у меня пока нет) и работа с файлами (которых у меня пока тоже нет).

    Попробовал life.pas. Что изменил:
    - uses заменил на {$i};
    - в строке 36 и 37 изменил обращение к random;
    - закомментировал строку 61 (из-за READKEY, его пока нет) и строку 69 (из-за оператора NOT, что-то с ним не так).
    Собралось 12135 байт. Но естественно не запустилось. Надо компилятор и библиотеки доделывать.

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

    По умолчанию

    в данных прогах обращение к файлам можно заменить загрузкой (инициализацией) значений в массивы.

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

    По умолчанию

    Тем более не поместится.

    В life.pas в процедуре FORMIROV первый цикл (который I, J, 80x24) выполняется около минуты.
    Потом запнулось из-за (не)случайных чисел.
    Займусь этим на следующей неделе.

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

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Псевдокод, каждая команда которого состоит из нескольких команд ассемблера (пи-код) или одной? Пи-код, на мой взгляд, проще оптимизировать, т.к. команды более обобщены. Я писал в статье об этом, тут со стр.52
    Прочитал статью. Интересно.
    У меня всё, в принципе, так же, только пи-код другой. String в нём кажется совсем лишний, у меня всё что можно перебрасывается на библиотечные подпрограммы, деление тоже написано на Паскале (system_divmod.inc). Сделано это чтобы на начальном этапе не заморачиваться написанием деления, строк и прочего под новый процессор, а когда будет добавлено переопределение операторов - вообще станет штатной функцией компилятора.

    Пи-код находится между синтаксическим деревом и инструкциями современных процессоров, которые заточены под языки высокого уровня. При подгонке пи-кода он всё больше похож на синтаксическое дерево и всё больше соответствует одной строке ассемблера какого-нибудь x86 или ARM. Поэтому и думаю что он мне не нужен.
    Сейчас, если внимательно посмотреть на сгенерированный для Z80 код, можно увидеть что он как бы транслирован с 32-битного процессора. Почти так и есть.

  5. #75
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,133
    Записей в дневнике
    38
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    36
    Поблагодарили
    23 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересно, а выполнение пи-кода будет ли быстрее, чем скомпилированная программа?

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

    По умолчанию

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

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

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

    По умолчанию

    Версия 0.2

    Исправления и дополнения:
    - константы-массивы (массивы констант?), пока только массивы байтов;
    - удаление неиспользуемых подпрограмм (smart linking);
    - исправлено размещение многомерных массивов в памяти;
    - исправлены ошибки работы с boolean;
    - написан wrapper для некоторых подпрограмм из бибилиотеки ZX Like Pascal;
    - адаптирована "demo_lode_runner.prg" из ZX Like Pascal;
    - адаптирована life.pas.

    "Умная линковка" позволяет писать на Паскале библиотеки любого размера, в код будут включены только используемые подпрограммы.

    В архиве бинарники win32 и linux64, библиотеки, файлы-примеры .pas и .tap.

    bmpascal_v0.2.zip

    life.pas не зависла, она работает, 20 секунд идёт инициализация и 60 секунд на итерацию
    Нажмите на изображение для увеличения. 

Название:	Снимок экрана от 2018-04-13 07-56-51.png 
Просмотров:	121 
Размер:	8.7 Кб 
ID:	64973

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

    По умолчанию

    Эта неделя получилась непродуктивной в плане компиляторостроения. В основном внутренние изменения, никаких новых функций. Плюс появились другие задачи, кроме компилятора.

    Планы: оператор case, чтобы запустить demo_z. Так как код пока не оптимизирован и бинарник с картинками имеет объём около 60 килобайт, запускать будем в режиме Spectrum +3, отключая ROM. Следующим пунктом будет поддержка константных выражений в описаниях констант и типов.
    Пример:
    Код:
    const
       c=20;
       size=c*5+4;
    type
       tArray=[1..size] of byte;
    Потом будет большая работа по внутреннему "тюнингу", после чего, надеюсь, удастся избавиться от приведения всей арифметики к 32 битам, что должно немного уменьшить размер кода и значительно увеличить его скорость.

    Ещё очень нужны inline-подпрограммы. Но без оптимизации кода они смысла не имеют.

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

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Потом будет большая работа по внутреннему "тюнингу", после чего, надеюсь, удастся избавиться от приведения всей арифметики к 32 битам, что должно немного уменьшить размер кода и значительно увеличить его скорость.
    Bolt, у тебя сейчас кодогенерация происходит в пи-код или сразу в ассемблер?
    Для выражений рекомендуют в книжках сначала определить максимальный используемый числовой тип данных в выражении и уже отталкиваться от этого, какое выражение - 8-битное, 16-битное, 32-битное и т.д.
    Т.е., если у тебя в выражении максимальный тип byte, то всё выражение рассчитывается по 8-битному алгоритму.
    В ZX Like Pascal везде 16-битные выражения, только есть отдельные оптимизации, превращающие в 8-битные, где надо.

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

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Bolt, у тебя сейчас кодогенерация происходит в пи-код или сразу в ассемблер?
    В пи-код. Который пока никак не оптимизируется и вообще, как мне кажется, лишний, я уже объяснял почему.
    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Для выражений рекомендуют в книжках сначала определить максимальный используемый числовой тип данных в выражении и уже отталкиваться от этого, какое выражение - 8-битное, 16-битное, 32-битное и т.д.
    Об этом я тоже думал, но можно сделать ещё круче Попытался, запутался, не осилил, отложил на потом, приведя всё к 32 битам.
    Надо синтаксическое дерево и пи-код в порядок привести. В них сейчас не всё корректно заполняется, в результате работает "на честном слове". Знак-беззнак до сих пор кое-где не работает. Или, например, выражение (@a+n)^ обрабатывается правильно, а (@a+n+m)^ теряет тип указателя. А если поверх всего этого ещё оптимизацию наложить - вообще потом концов не найдёшь.

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

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

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

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

Ваши права

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