User Tag List

Показано с 1 по 10 из 136

Тема: HWYENC

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

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

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

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 26.01.2019 в 00:38. Причина: Удаление в знак протеста против действий MM

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

  3. #2

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,421
    Спасибо Благодарностей отдано 
    1,717
    Спасибо Благодарностей получено 
    2,247
    Поблагодарили
    883 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Конкретно на УКНЦ. Всё какое-то недостаточно продуманное. То ли в спешке написано, то ли на старом Си писали.
    Думаю, что ввиду малочисленности программистов пишущих под УКНЦ, а так же сложности ее архитектуры, процент профессиональных оптимизирующих кодеров там был минимален.
    Но думаю, что оптимальные кодерские работы были. Взять хотя бы те же игры, приведенные Hobot'ом, типа Рыцаря.

  4. #3

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    то ли на старом Си писали.
    macro-11 есть такой язык.
    На Си писалось конечно, но в большинстве случаев авторы явно указывали об этом
    и почти всегда это были не игры ) (* за редким исключением!)

    И что значит "на старом", а на каком Си они по вашему под RT-11 должны были писать,
    особенно в те года?

    Чаще писали на Фортране (совсем старые проекты), Дековском (РафОС) Бейсике и
    связке Паскаль + макровставки.

    Цитата Сообщение от Titus Посмотреть сообщение
    Взять хотя бы те же игры, приведенные Hobot'ом, типа Рыцаря.
    Ув. доктор - тут по поводу этих игр есть мнение, что на самом деле - там в качестве загрузчика
    что вроде MSX эмулятора, а основная часть кода портированных игр практически без изменений
    работала - отсюда и плавность картинки и прочие радости, но вот сам геймплей рыцаря немного
    отличается от MSX , однако это не значит, что писали с нуля. Порт есть порт. Вспомни какая плавная
    анимация у Арканоида?

    SPION.SAV - не оптимально написан? (Первый игровой проект от Высотина П. "проба пера"!),
    кстати говоря эксклюзив - такой шпион только на УК-НЦ (если ошибаюсь поправляйте).
    Ай да про игрушки трепаться в тему "Обсуждаем игрушки!" товарищи ) Это будет правильней )


    (да увлеклись всё же!!! последняя ссылка и пост по теме уполз за горизонт
    http://zx-pk.ru/threads/27621-hwyenc...l=1#post946442)
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  5. #4

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,421
    Спасибо Благодарностей отдано 
    1,717
    Спасибо Благодарностей получено 
    2,247
    Поблагодарили
    883 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    Ув. доктор - тут по поводу этих игр есть мнение, что на самом деле - там в качестве загрузчика
    что вроде MSX эмулятора
    Судя по скорости, не может там быть никакого эмулятора) Z80->PDP11 на УКНЦ в реальном времени не пройдет.

  6. #5

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

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 26.01.2019 в 00:39. Причина: Удаление в знак протеста против действий MM

  7. #6

    Регистрация
    07.01.2016
    Адрес
    г. Москва
    Сообщений
    27
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Ну почему, если не привязываться к архитектуре, то выполнение только команд процессора сводится к использованию индексной адресации и последовательнстям действий типа:
    При портировании с Z80 несколько проблем:
    1) неоптимальный доступ к памяти, потому что на исходном процессоре адресация в основном байтовая или словная невыровненному адресу. Особенно это печально при байтовой записи в память: разработчики процессора ВМ2 решили не делать цикл DATAOB и MOVB вместо одного цикла доступа к шине делает два (DATAI - modify byte - DATAO). Накладные расходы при загрузке байта в регистр (знаковое расширение, что решается, например, комбинацией CLR Rn/BISB src, Rn). Тут же чтение/запись слова по невырвненному адресу (MOVB ea -> SWAB -> MOVB ea+1): особенно печальна запись -- из-за отсутствия DATAOB на шине будет четыре цикла вместо двух + плюс фетчинг и декодинг трёх-четырёх команд вместо одной.
    2) косвенная адресация при обращении к видеобуферу и такие же проблемы с байтовой адресацией.
    3) команды блочного копирования LDIR сотоварищи
    Z80 реально фетчит и декодирует каждый раз (пока BC != 0) LDIR и затем выполняет два шинных цикла, то есть LDIR выглядит для исполнительно устройства как (READ BUS <fetch LDIR>, <decode/exec LDIR>, READ BUS, WRITE BUS) x N.
    если заменять это просто на
    Код:
    MOVB (Rs)+, (Rd)+
    SOB Rc, . - 2
    то это будет неоптимально и с точки зрения доступа к памяти (отстутствие цикла DATAOB) и с точки зрения выполнения: каждый раз выполняется ещё и SOB, который по времени составляет приблизительно треть от MOVB. Тут поможет аккуратный loop unrolling и, если заведомо известно выравнивание адресов или возможность его изменить, замена MOVB на MOV.
    Например, тупое
    Код:
    ; Rc = Rc / 2
    1$: 
    MOVB (Rs)+, (Rd)+
    MOVB (Rs)+, (Rd)+
    SOB Rc, 1$
    Даст прирост процентов на 20 (в зависимости от ситуации). Если ещё на x2 unroll'ить, то ещё 10-15% можно отыграть, x8 unroll даст почти 1.5 раза прироста по сравнению с x1. А если есть возможность заменить на MOV (Rs)+, (Rd)+ то почти в два раза сразу.


    Никита проделал офигительный объём работы, стоит ему отлить памятник только потому, что оно вообще работает. Дело то за малым: берём исходники и модифицируем код, чтобы логика осталась прежней, а код был оптимален с точки зрения целевого процессора. =)

  8. #7

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,421
    Спасибо Благодарностей отдано 
    1,717
    Спасибо Благодарностей получено 
    2,247
    Поблагодарили
    883 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Ну почему, если не привязываться к архитектуре, то выполнение только команд процессора сводится к использованию индексной адресации и последовательнстям действий типа:
    Нельзя не привязываться к архитектуре, если речь идет о конкретно эмуляции Z80 на PDP11.
    И она будет как минимум в 5-10 раз медленнее, чем реальный Z80.
    Если же делать рекомпиляцию, причем грамотную, то там можно добиться где-то 1/2 скорости Z80.
    Ну а потом если пройтись по этому ручками, то для некоторых игр можно и получить скорость аналогичную Z80.

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

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

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

Ваши права

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