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

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Оптимизация Z80-кода для Мандельброта

  1. #11

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Но вроде к нашему случаю так не получится...
    2) эмулятор, использую не самые популярный, но весьма неплохой - https://www.emutopia.com/index.php/e...c/515-ep128emu .
    "Из коробки" эмуль не заработал... видимо нехватает каких-то ромов. Вопрос был в том, чтобы автосборка была с автозапуском. Выходить в дебаггер и загружать через него для отладки не очень удобно. Есть такая возможность?

  2. #12

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    "Из коробки" эмуль не заработал... видимо нехватает каких-то ромов. Вопрос был в том, чтобы автосборка была с автозапуском. Выходить в дебаггер и загружать через него для отладки не очень удобно. Есть такая возможность?
    Извиняюсь, почему-то сложилось впечатление, что ромы были включены. Сейчас немало эмуляторов идут с встроенными ромами. Прикреплю файлик - распаковать в папку roms. Автазапуска у Amstrad CPC нет - загрузку с диска надо делать через команду, которую приводил ранее. Более того такой путь потребует работы с образами дисков... Честно, озадачили вы меня фразой, что через дебаггер неудобно. Наберите приведенную команду в блокноте и копипастите её в дебаггер одним кликом - что ещё может быть удобнее, совершенно не могу представить.
    Вложения Вложения
    Последний раз редактировалось litwr; 12.12.2021 в 12:30.

  3. #13

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    По сборке проекта, на спектруме, для примера, популярен кросс-ассемблер sjasm. Он позволяет сохранить откомпилированный образ в формате снапошота, который эмулятор может запускать автоматически. Т.к. программа может быть довольно объёмной и загружать бинарники вручную после каждой компиляции крайне не удобно. Может ли pasmo создавать такие спапшот образы?

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

    Цитата Сообщение от litwr Посмотреть сообщение
    Чего-то ещё нехватает, не запускается эмулятор к сожалению. Видимо придётся искать более dev ориентированный эмулятор

  4. #14

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Спасибо за roms, порой найти их непросто.

    По сборке проекта, на спектруме, для примера, популярен кросс-ассемблер sjasm. Он позволяет сохранить откомпилированный образ в формате снапошота, который эмулятор может запускать автоматически. Т.к. программа может быть довольно объёмной и загружать бинарники вручную после каждой компиляции крайне не удобно. Может ли pasmo создавать такие спапшот образы?

    Чего-то ещё нехватает, не запускается эмулятор к сожалению. Видимо придётся искать более dev ориентированный эмулятор
    Извиняюсь, прямо беда какая-то с этими ромами. Архив получился битый - как такое могло случиться?! Там всего два файла cpc6128.rom и cpc_amsdos.rom - с ними всё должно работать. Только там эмуль не только Амстрада, а ещё и Спека и Энтерпрайза. По умолчанию запускается Энтерпрайз, для Амстрада надо указывать опцию -cpc. Эмулятор возможно не лучший для начинающих Амстрадовцев. Сам то я с Амстрадами знаком с 1988... Но меня этот эмуль устраивает, пробовал ещё MAME/MESS - вроде работает, но там много всякого лишнего и эмуляция иногда для некоторых платформ с проблемами. Люди хвалят Арнольда, но с ним не работал.
    Конечно, получить снэпшот сразу это наверное оптимально, но пасмо так не умеет. Это не чисто Амстрадовский ассемблер. С другой стороны, то что вам предложил - это практически одно и то же. Со снэпшотом: 1) щелкаем на load snapshot; 2) выбираем его и активируем. Мой вариант: 1) щелкаем на дебаггер; 2) копипастим текст. Выбирать мышкой снапшот дольше, чем копипастить. Конечно, снапшот можно указать и в командной строке - тут мы можем сэкономить 1-2 секунды, но если захотим перезапустить, то через дебаггер быстрее.
    Oчень сомневаюсь, что после reddie кто-то что-то сможит что-то улучшить...

    cpc6128.zip

    Кстати, выложил все исходники на гитхабе - там в главном цикле ничего нового нет, только добавил сбросы переносов.

    Ещё добавлю, что в состав эмулятора ep128emu входит и отличный конвертор картинок - весьма вкусная плюшка.
    Последний раз редактировалось litwr; 12.12.2021 в 14:10.

  5. #15

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    сомневаюсь, что после reddie кто-то что-то сможит что-то улучшить...
    А вдруг =) тем более я не вникал алгоритм, а лишь оптимизировал то, что видел "лишнее" в коде. Зная размеры таблиц, получаемые значения и прочие тонкости, вполне возможно, получится переработать сам алгоритм, а не сокращать кусочки кода. Желающие могут попробовать.

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

    litwr(14.12.2021)

  6. #16

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Выложил Мандельброта на амстрадовский форум. Они там даже видео сделали с реальной машинки или точнее даже с двух одновременно - https://www.youtube.com/watch?v=zCm-6tUHJzM А тут всем спасибо за поддержку, почти догнали существенно более дорогой компик, BBC Micro.
    Так что дальнейшая оптимизация потребует нового релиза... Но чисто спортивно интересно, что можно тут максимально выжать из Z80. Оптимизация кода Z80, по моему опыту, может длиться почти бесконечно.

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

  8. #17

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удалось сделать код возможно совершенным. Кстати, понял как можно использовать болеe быстрый доступ к массиву через SET - пришлось переконфигурировать Амстрад для этого, превращать его в почти Спектрум.
    Код:
    loc1:
        push hl
        res 0,l
        set 7,h
        ld c,(hl)
        inc l
        ld b,(hl)   ;mov	sqr(r1), r3
        pop hl
        add hl,de   ;add	r0, r1
        ex de,hl    ;de - r1, hl - r0, bc - r3
        res 0,l
        set 7,h
        ld a,(hl)
        inc l
        ld h,(hl)
        ld l,a       ;mov	sqr(r0), r0
        add hl,bc    ;add	r3, r0
        ld a,h
        and $f8
        jr nz,loc2
    
        push hl
        sbc hl,bc   ;x^2  ;set C=0
        sbc hl,bc   ;x^2-y^2
    r4 equ $+1
        ld bc,0
        add hl,bc   ;x^2-y^2+x0
        ex de,hl    ;de - r0, hl - r1
        set 7,h
        res 0,l
        ld a,(hl)
        inc l
        ld h,(hl)
        ld l,a       ;(x+y)^2
    r5 equ $+1
        ld bc,0
        add hl,bc    ;sets C=0
        pop bc   ;r0
        sbc hl,bc    ;2xy+y0
        dec ixh     
        jr nz,loc1   ;sob r2,1$
    Предполагаю, улучшить тут что-то уже скорее невозможно. Даже по размерам (54 байта) код стал близок к кодам для x86 и 68k (46 байт). Этот код обгоняет даже код для Спектрума автора исходной программы, где используется SP - https://github.com/smaslovski/foobar
    Но БК0010 всё ещё быстрее, но только на 1.5%. Зато BBC Micro теперпь отстаёт от Амстрада почти на 10%.
    Таким образом, с помощью знатоков Z80 удалось разогнать код для Амстрада более, чем на 20%. Всем спасибо.

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

    reddie(21.12.2021)

  9. #18

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr
    понял как можно использовать болеe быстрый доступ к массиву через SET
    Да, про это и говорил: подгоняем таблицу данных до определённых адресов, взамен получая "ограничитель" всего из одной команды SET. Что куда быстрее и компактнее проверок через аккумулятор с перезагрузками.

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Оптимизация Conway's Game of Life для Z80
    от blackmirror в разделе Программирование
    Ответов: 1
    Последнее: 10.01.2022, 20:47
  2. Ответов: 28
    Последнее: 01.01.2017, 14:28
  3. Ответов: 22
    Последнее: 30.03.2015, 04:52
  4. Оптимизация в HL
    от drbars в разделе Программирование
    Ответов: 33
    Последнее: 22.08.2013, 17:56
  5. Шифр AES-128: компактная реализация для Z80 (1001 байт кода)
    от Barmaley_m в разделе Программирование
    Ответов: 7
    Последнее: 18.03.2013, 00:30

Ваши права

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