User Tag List

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

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

Древовидный режим

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

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

    По умолчанию

    Цитата Сообщение от reddie Посмотреть сообщение
    Ясно. Писал, не вникая в алгоритм. А какой вообще размер таблицы корней? Если возможно растянуть ее в два раза - действие со сбросом бита 0,L вообще не потребуется.
    Убрать R0 из стека - это реально круто, сам бы не догадался. Использовать IXL тоже хорошая идея, но это было просто - подправил ещё вчера. Итак, внес предложенные оптимизации и добавил некоторые свои - это разогнало на примерно 15%. Теперь код основного цикла такой:
    Код:
    loc1:
        ld d,h
        ld e,l
        res 0,l
        ld a,high(sqrbase)
        add a,h
        ld h,a
        ld a,(hl)
        inc l
        ld h,(hl)
        ld l,a
        ex de,hl  ;de = r3 = sqr[r1&0xfffe]
        add hl,bc   ;r1 += r0
        ld a,b
        ld b,h
        ld h,a
        ld a,c
        ld c,l
        ld l,a
        res 0,l
        ld a,high(sqrbase)
        add a,h
        ld h,a
        ld a,(hl)
        inc l
        ld h,(hl)
        ld l,a       ;r0 = sqr[r0&0xfffe]
        add hl,de
        ld a,h
        cp 8
        jr nc,loc2
    
        push hl   ;r0 += r3
        ld h,b
        ld l,c
        ld a,high(sqrbase)
        add a,h
        ld h,a
        res 0,l
        ld a,(hl)
        inc l
        ld h,(hl)
        ld l,a      ;r1 = sqr[r1&0xfffe]
    r5 equ $+1
        ld bc,0
        add hl,bc    ;add	r5, r1  ;sets C=0
        pop bc   ;r0
        sbc hl,bc  ;sub	r0, r1
        push hl
    r4 equ $+1
        ld hl,0
        add hl,bc    ;r0 += r4
        sbc hl,de    ;r0 -= r3
        sbc hl,de
        ld b,h     ;r0 -= r3
        ld c,l
        pop hl
        dec ixh
        jr nz,loc1
    Теперь Амстрад строит первые картинки даже быстрее БК0010, но с ростом числа итераций "букашка" опять выходит вперед. Например, восьмую картинку Амстрад строит за 12.0 сек (11.9 для варианта в 16 цветах), а БК за 9.8 сек. А вот и сами картинки N8.
    Я несколько изменил исходный код для БК, сделал так, чтобы теперь текстуры рисовались без изъяна - это сделало код на несколько байт больше и немного замедлило. Кроме того, добавил остановку после отрисовки очередной картинки.
    Таблицы квадратов занимают 11К и если их увеличить вдвое, то вместо зануления бита придётся делать сдвиг.
    mandelbrot-amstrad.zip
    Последний раз редактировалось litwr; 02.12.2021 в 22:26.

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

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

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

Ваши права

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