User Tag List

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 50

Тема: Форк SDCC для процессора 8080

  1. #21

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я имел опыт программирования на PL/M80, но когда пытался делать проекты на PL/M51, то качество его генерации кода было настолько отвратительным, что пришлось согласится с коллегами и перейти на ассемблер. C очень сложно заставить оптимально использовать регистры какой-либо архитектуры, впрочем как и PL/M. Вероятнее всего такой язык и/или компилятор до сих пор не созданы. Так как при генерации кода он должен быть не двухпроходным, а многопроходным. Уровни оптимизации у PL/M задаются, но они не наглядны. Для 8080, не говоря уже о z80 есть множество трюков по оптимизации кода при "ручном программировании" на ассемблере, которые недоступны неинтеллектуальным С и PL/M. В годы их создания это могло быть обосновано ограничениями ресурсов инструментальных систем, на которых они выполнялись. Ныне же, когда они работают на мощнейших процессорах с огромной доступной памятью такая неинтеллектуальность ничем не оправдана. Требования "переносимости кода" тоже не совсем актуальны. Когда для 8 битного ретрокомпьютера меняются параметры "процессор" и "машина исполнения", то гораздо более интересна автоматизация по подмене библиотек и выдача предупреждении об отсутствии нужных ресурсов, то есть мощные внутренние библиотеки компилятора, поддерживающие различное "железо". С учетом расширения таких возможностей это интересное занятие.

  2. #22

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

    По умолчанию

    Совершенно справедливо, andrews. Я именно с подобным прицелом создавал ZXDev для программирования под Спектрум, чтобы наработать машинные библиотеки, а ЯВУ там в качестве клея. С учётом развивающейся в SDCC оптимизации проект выглядит весьма в этом духе, что Вы описали. Кстати, “старослужащие” программисты ZXDev особо не заинтересовались, но мой опыт показал, что идея была правильная — юные спектрумисты осваивают его очень легко и выходят на инструментарий уровня получше ZX-Бейсика без кропотливого изучения асма.

    При некоторой сноровке и наличии библиотек на PL/M (для 8080) писать быстрее, чем на асме, да и код нагляднее. Для этого он и был придуман. В то же время, язык не настолько оторван от архитектуры проца 8080, как Си. Кстати про библиотеки тоже есть открытые вопросы. Вроде бы там умная линковка не предусмотрена, только механизм типа инклюдов. То есть, с библиотеками не поработаешь. А это плохо (Какос, опровергни, если я не прав?)

    Трюки оптимизации конечно можно и нужно использовать в библиотеках на машкоде, но их можно частью реализовывать и на PL/M, и на Си, если хорошо понимать, какой именно код генерится в том или ином случае.

    Что же касаемо PL/M (plmx версии 2, который на Фортране). Какос сравнивал скорость работы алгоритма, вычисляющего простые числа до 255 на BDS C и этом PL/M.

    BDS C = ~ 15 сек (на эмуляторе компьютера Апогей БК-01)
    PL/M = ~ 10 сек (на эмуляторе компьютера Апогей БК-01)

    Оберон в ZXDev (через SDCC, на эмуляторе Спектрума) = ~ 3 сек

    Разумеется, Какос смотрел и в код, сказал, что PL/M его генерит намного оптимальнее, чем BDS C. Дополню от себя: чем любой из имеющихся компиляторов Си для 8080, что под CP/M, что кросс). Я не оптимист в плане появления новых высокооптимизированных компиляторов для проца 8080 в наше время, так что остаётся пользоваться тем, что есть. И в этом свете конечно появление форка SDCC-8080 интересный феномен. А PL/M 4.1 может иметь даже более серьёзную оптимизацию, чем PL/M 2. Нужно вникнуть и разобраться.

  3. #23

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

    По умолчанию

    Получил сегодня ответ от Кена Япа:

    Мне жаль, если у вас сложилось впечатление, что бэкэнд работает. Он даже не собирается полностью. Есть три области, которые должны быть закончены, прежде чем что-либо может быть выпущено.

    1.

    Генератор кода должен быть изменен для вызова процедур сдвига вправо.
    2.

    Много кода Z80 в библиотеке времени выполнения должны быть преобразованы в код 8080.
    3.

    Сборка должна пройти обширный набор тестов.

    Это может занять у меня месяцы или больше, чтобы сделать. Вы можете следить за журналами по адресу hackaday.io за прогресс.

    С уважением

  4. #24

    Регистрация
    29.11.2009
    Адрес
    г. Бийск
    Сообщений
    521
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хотел написать свои заметки, но прочитав данное сообщение все понял.
    У меня собрался. но библиотеки времени выполнения нету.
    ЕЕ нужно все переписывать, так как в z80 используются регистры IX и IY и просто так тот код не подсунещь.
    Самый быстрый способ ее перелопатить, использовать другой компилятор С для кода 8080 и исходные программы на Си полученый код использовать.
    У кого есть нормальная программа преобразования исходного кода z80 - I80? Давно ищу.
    Микро-80, Радио-86РК, Океан 240, Ириша, Спектрум-48, NEC PC-8201, ЮТ-88(2017) .

  5. #25

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от L Juriy Посмотреть сообщение
    Хотел написать свои заметки, но прочитав данное сообщение все понял.
    У меня собрался. но библиотеки времени выполнения нету.
    ЕЕ нужно все переписывать, так как в z80 используются регистры IX и IY и просто так тот код не подсунещь.
    Самый быстрый способ ее перелопатить, использовать другой компилятор С для кода 8080 и исходные программы на Си полученый код использовать.
    У кого есть нормальная программа преобразования исходного кода z80 - I80? Давно ищу.
    вряд ли такая программа будет ВСЕМ нравится. i8080 to z80 это пожалуйста, а так режим с автоматизацией лучше не пускать и симулятор z80 на 8080 не делать. Максимум, что возможно это предлагать пользователю перед началом работы определить память для отображения расширенных по отношению к 8080 регистров z80 и определить процедуры для выполнения отсутствующих в инструкциях 8080 инструкций z80. В том числе, если в исходнике для z80 или hex(obj) коде есть недокументированные инструкции, и для них тоже определить.
    Последний раз редактировалось andrews; 22.09.2019 в 18:22.

  6. #26

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

    По умолчанию

    Мы с Какосом основали группу Язык PL/M и старые компы на К580/i8080 для обсуждения этого направления разработки. Прошу желающих присоединяться.

    Что нам удалось: собрать при помощи MinGW утилиты - компилятор PL/M 4.0, ассемблер, линкер. Планируем выложить эти наработки в репозиторий. Собрать им "Hello World" для Апогея БК-01.

    Код:
    MY:
    DO;
    PUTCH: PROCEDURE(A) EXTERNAL;
        DECLARE A BYTE;
        END;
    
    DECLARE S ADDRESS;
    DECLARE (C BASED S) BYTE;
    S=.('HELLO PLM',0,0);
    DO WHILE C<>0;
    CALL PUTCH(C);
    S=S+1;
    END;
    DO WHILE 1=1;
    END;
    END;
    
    PUBLIC PUTCH
           CSEG
    PUTCH:
          JMP 0F809H
    
    END
    Нажмите на изображение для увеличения. 

Название:	Apogee.jpg 
Просмотров:	94 
Размер:	27.7 Кб 
ID:	70051

    Этот пользователь поблагодарил Oleg N. Cher за это полезное сообщение:

    svofski(23.09.2019)

  7. #27

    Регистрация
    29.11.2009
    Адрес
    г. Бийск
    Сообщений
    521
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Oleg N. Cher,
    Ссылка не рабочая Problem loading page.
    Микро-80, Радио-86РК, Океан 240, Ириша, Спектрум-48, NEC PC-8201, ЮТ-88(2017) .

  8. #28

    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,159
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, разрабатывем pl/m систему, для программирования под компьютеры ч процессрор i8080. Качество кода вполне себе "на уровне", в отличии от BDS C, я уже делал подобную систему и игру на ней, это будет вторая версия, более удобная.

  9. #29

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

    По умолчанию

    Цитата Сообщение от L Juriy Посмотреть сообщение
    Ссылка не рабочая Problem loading page.
    Эээ... Какая именно? На группу в телеграме?
    А у svofski зайти получилось.

  10. #30

    Регистрация
    29.11.2009
    Адрес
    г. Бийск
    Сообщений
    521
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Oleg N. Cher,
    Язык PLM и старые компы.
    Микро-80, Радио-86РК, Океан 240, Ириша, Спектрум-48, NEC PC-8201, ЮТ-88(2017) .

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Форк демо-архива вышел из беты
    от Hacker VBI в разделе Новости
    Ответов: 133
    Последнее: 20.10.2016, 10:26
  2. Ассемблер для 8080
    от shoorick в разделе Разное
    Ответов: 26
    Последнее: 13.02.2016, 14:30
  3. SDCC: библиотеки для ZX
    от Sergey в разделе Программирование
    Ответов: 10
    Последнее: 25.10.2015, 19:30
  4. Форт для процессора 6502
    от rw6hrm в разделе Зарубежные компьютеры
    Ответов: 7
    Последнее: 15.10.2010, 15:01

Ваши права

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