User Tag List

Страница 9 из 49 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 531

Тема: ZX Like Pascal

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Andrew771, можешь сделать поддержку запуска из коммандной строки, чтоб входной фаил PRG фаил передавать в качестве параметра.
    Например:
    zxpascal.exe game.prg

    и на выходе будет game.asm
    сделал.


    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Нашел почему не работает ввод чисел - сжасм интерпретирует sub a,48 как sub a,a:sub a,48
    Надо заменить все вхождения просто на sub 48
    сделал.

    Обновил версию до 0.907 в первом посте.
    Исходник 0.907 выложил тут.

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

  3. #2

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо за наводку! Проверю. Официально команда должна быть sub n, посмотрю в исходнике, так ли она генерируется.

    - - - Добавлено - - -

    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Andrew771, можешь сделать поддержку запуска из коммандной строки, чтоб входной фаил PRG фаил передавать в качестве параметра.
    Например:
    zxpascal.exe game.prg

    и на выходе будет game.asm
    Сделаю, как написал. Я еще так не делал никогда.

    - - - Добавлено - - -

    Исходник забыл обновить на сайте, исправлюсь

    - - - Добавлено - - -

    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Я сейчас хочу сделать игру на этом паскале, но данное обстоятельство мешает.
    ЗдОрово. Я тоже на нем начал писать игру а-ля Z.

  4. #3

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #4

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Andrew771, интересный проект.

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

    Компромиссный вариант: В зависимости от флага (галка/параметр командной строки либо директива компилятора) генерировать ассемблерный код как сейчас, или сразу исполняемый код.

    И ещё предложение ввести директиву компилятора {$ORG xxxxx}, указывающую по какому адресу компилировать исполняемый код.

    - - - Добавлено - - -

    И думаете ли об оптимизации? Например, в циклах вставлять тело процедур вместо вызовов процедур. Это полезно, если вызываемые процедуры небольшие, а сам цикл выполняется много раз, тогда программа будет гораздо быстрее исполняться.

  6. #5

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уважаемые,

    хотя я не пользуюсь данным компилятором, я за развитие в сторону канонического Borland Turbo Pascal, поэтому в своё время и советовал Андрею взять в исходниках компилятор Turbo Pascal v3.0 для Z80 и начать его развивать, но он пошёл по своему пути. Что же, это его решение и выбор. Но вообще молодец, здорово, что проект продвигается, респект.

  7. #6

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Почему вы решили компилировать в ассемблерный текст, который затем ещё раз надо компилировать? Не проще ли сразу генерировать исполняемый код?
    Ваш подход может помочь только в одном случае, если программист захочет доработать ваши процедуры или заменить их на свои.
    Можно было бы. Только тогда надо забыть о пользовательских процедурах на ассемблере, иначе мне придется еще писать и кросс-ассемблер. В принципе, насколько я знаю, можно сделать BAT-ник, в котором две команды:
    - кросс-компиляция Паскаля в Асм (это ZX Like Pascal умеет);
    - запуск кросс-ассемблера (например, sjasm) и подсовывание ему асмовского файла.
    Знающие люди, надеюсь, напишут тут, как это сделать.

    В отдаленном будущем планируется сделать родной (не кросс) Паскаль для Спектрума. Причем да, более приближенный к оригинальному Паскалю. Тем более, это позволит компилировать исходник компилятора самим компилятором, как учит Н.Вирт. Не на ассемблере же его писать.


    Цитата Сообщение от AzAtom Посмотреть сообщение
    И думаете ли об оптимизации? Например, в циклах вставлять тело процедур вместо вызовов процедур. Это полезно, если вызываемые процедуры небольшие, а сам цикл выполняется много раз, тогда программа будет гораздо быстрее исполняться.
    Оптимизации многие есть. А вот раскрытие циклов не стал делать, т.к. посчитал, что для вывода спрайтов достаточно встроенных моих процедур (там раскрытие циклов сделано уже в асмовском коде), а для остального вроде и не надо + отжирает память.


    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    я за развитие в сторону канонического Borland Turbo Pascal, поэтому в своё время и советовал Андрею взять в исходниках компилятор Turbo Pascal v3.0 для Z80 и начать его развивать, но он пошёл по своему пути
    По-видимому, придется. Т.к. изобретать велосипед - неблагодарное дело. Просто, это мой первый блин COM-ом, хотел сам написать, чтоб прочувствовать. На самом деле, это нелегко написать полноценный компилятор, подтверждение тому - постоянно всплывающие баги, так что лучше пользоваться наработками опытных. Я до сих пор не могу сделать поддержку хотя бы параметров процедур - головоломка. Кстати, пробовал брать полный исходник Оберона из книги Вирта "Построение компиляторов" и переделать на Паскаль, но пока тоже не осилил.

    - - - Добавлено - - -

    Цитата Сообщение от AzAtom Посмотреть сообщение
    И думаете ли об оптимизации?
    Моя статья по генерации кода и оптимизациям ZX Like Pascal есть тут или тут

  8. #7

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Andrew771, а что с ORG? Если его надо менять, то батником не обойтись. Хочется одну вещь попробовать сделать, но адрес мне другой нужен. Удобно, если в паскалевском исходнике уже указано куда компилировать, а не менять в ASM каждый раз.

    - - - Добавлено - - -

    И ещё пожелание менять расширение. Т.е., из "program.prg" делать "program.asm".

    - - - Добавлено - - -

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    придется еще писать и кросс-ассемблер
    Ну там гораздо легче - одна строка преобразуется в одну команду.

  9. #8

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Andrew771, а что с ORG? Если его надо менять, то батником не обойтись. Хочется одну вещь попробовать сделать, но адрес мне другой нужен. Удобно, если в паскалевском исходнике уже указано куда компилировать, а не менять в ASM каждый раз.
    Ты имеешь в виду первоначальный адрес паскалевской программы или чтобы можно было в любом месте вставить ORG несколько раз? Если хочешь вставить в свои асмовские процедуры после последнего END Паскаля, то смело можешь вставлять, кросс-ассемблер правильно скомпилирует. А если внутри паскалевского кода, то зачем? Сделать мне не трудно.

    - - - Добавлено - - -

    Цитата Сообщение от AzAtom Посмотреть сообщение
    И ещё пожелание менять расширение. Т.е., из "program.prg" делать "program.asm".
    Это - пережиток от первой версии, когда быстро набросал, всё руки не доходят.

    - - - Добавлено - - -

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    От Олега Комлева, соавтора XDev:
    Сообщение от Saferoll
    Сообщение для Андрея Шарина (Andrew771)
    В версии ZX Like Pascal v.0.908 такая же ошибка, как в реализации FOR для MSX-BASIC на Ямахе: есть проверка попадания на границу, но нет проверки на первоначальное нахождение нач.значения за границей. Поэтому любой цикл FOR выполняется хотя бы 1 раз, даже если начальное значение заведомо превышает конечное (например, "for a:=247 to 0 do write(a,' ');" напечатает 247).
    Это уже не буду делать, т.к. ухудшит быстродействие. Пусть будет на совести программиста ошибочный счетчик. У меня много где нет "защиты от дурака" - например, проверки выхода за границы массивов, строк. Проверка границ спрайтов - опционально по флагу. Просто, если делать проверки, ухудшит быстродействие.

    - - - Добавлено - - -

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    В нативном компиляторе прям на самом Спеке смысла вообще не вижу. Ты хочешь сделать хороший компилятор или поиграться? ;-)
    Больше второе - поиграться. Особенно хочется создать самокомпилируемый компилятор. В ZX Like Pascal для этого не хватает всего лишь малость - процедуры с параметрами и локальными переменными. Тогда можно будет сделать нативный ZX Like Pascal на ZX Like Pascalе.

  10. #9

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Если хочешь вставить в свои асмовские процедуры после последнего END Паскаля, то смело можешь вставлять, кросс-ассемблер правильно скомпилирует.
    После твоего компилятора получается ASM с первой командой "org 23900", вот чтобы его менять можно было из исходного PRG файла. Например, чтобы до первого begin поставить директиву {$ORG xxxxx} и чтобы это потом оказалось в ASM файле. А в середине паскалевской программы даже не знаю, надо ли это...

  11. #10

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Можно было бы. Только тогда надо забыть о пользовательских процедурах на ассемблере, иначе мне придется еще писать и кросс-ассемблер.
    Есть ещё третий вариант - выводить не ассемблерный код, а уже скомпилированный, но в виде релоцируемого объектного модуля. Разумней всего в формате .rel от SDCC.
    Тогда к нему можно будет прилинковывать ассемблерные вставки, собранные SDCC-шным же ассемблером.

    Но вообще нет ничего странного в том, чтобы получать на выходе компилятора асмовый исходник. Более того, практически все компиляторы, которые я встречал, работали именно так. Вот прямо начиная с HITech C для CP/M и заканчивая gcc и clang. Просто у современных компиляторов этап ассемблирования скрыт.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

Страница 9 из 49 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. PASCAL + MACRO11 (УКНЦ-ДВК).
    от hobot в разделе ДВК, УКНЦ
    Ответов: 341
    Последнее: 15.01.2022, 17:30
  2. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Ваши права

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