User Tag List

Страница 42 из 51 ПерваяПервая ... 383940414243444546 ... ПоследняяПоследняя
Показано с 411 по 420 из 501

Тема: Тема для всяких глупых вопросов

  1. #411

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    А, да. Значит...
    ld bc, 7680

    Жырновато по проверке цыкла выходит. Да и ощутимого прироста скорости не видно.
    странное число, ну да ладно; важно другое

    во-1, ты переоцениваешь djnz - применимость у него ограничена, и всего на такт быстрее dec+jpnz
    то есть можно было счётчик строк держать хотя бы в A и вообще забить на BC

    во-2, именно для ldi/ldd есть способ даже быстрее, а именно - проверять флаг p/v
    если мануалы читать внимательно, видим, что при BC=0 он меняется, то есть можно
    Код:
    		ld bc,TOTAL_BYTES
    _NEXT_ROW:	...	(тут мб коррекция адресов, если копия не 1:1)
    		ldi-ldi-ldi-
    		jp pe,_NEXT_ROW
    важно только перед циклом кратное значение BC точно выставить, чтобы не проскочить проверку

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

    еще чем именно ldi/ldd хороши (но не ldir/lddr) - на тормозных фирменных спеках они сами выровняются по тактам юлы и перестанут тормозить
    а вот со стековыми перебросками уже не всё так однозначно, на фирме выигрыш может получиться меньше, если вообще
    (разумеется, это справедливо, если не успеть завершить все переброски на верхнем бордюре без тормозов)
    Прихожу без разрешения, сею смерть и разрушение...

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

    ALKO(01.10.2024)

  2. #412

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Заменил лдирки на
    Код:
        
    ld bc,768
    VL1:
        dup 32
        ldi
        edup
        jp pe,VL1
    Визуально разницы не заметил. Походу так и останусь на старом добром лдире.

  3. #413

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Визуально разницы не заметил.
    LDI - 16 тактов / байт
    LDIR - 21 такт байт, 16 на последнем

    значит учитывая разницу
    767 * 5 = 3835 тактов

    если брать Пентагон с 71680 в кадре, это около 5%.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

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

    ALKO(02.10.2024)

  4. #414

    Регистрация
    13.05.2018
    Адрес
    г. Тамбов
    Сообщений
    817
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    661
    Поблагодарили
    201 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Заменил лдирки на
    Код:
        
    ld bc,768
    VL1:
        dup 32
        ldi
        edup
        jp pe,VL1
    Визуально разницы не заметил. Походу так и останусь на старом добром лдире.
    Да всё правильно...
    768 байт там и не заметишь разницы...
    Вот если пересылать экранами -
    до 6912 байт, то разница будет заметна...

  5. #415

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    ну вот конкретно в данном случае стоит задача максимально быстро перебросить линейные 768 байт атрибутов.
    LD DE, xxx ; 10 тактов
    PUSH DE ; 11 тактов
    LD DE, yyy
    PUSH DE
    ....

    10.5 тактов на байт, полтора килобайта кода если атрибуты не повторяются (иначе можно экономить память и повысив скорость, выкинув часть LD)
    Последний раз редактировалось Bedazzle; 02.10.2024 в 07:50.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  6. #416

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    LD DE, xxx ; 10 тактов
    PUSH DE ; 11 тактов
    LD DE, yyy
    PUSH DE
    ....

    10.5 тактов на байт, полтора килобайта кода если атрибуты не повторяются (иначе можно экономить память и повысив скорость, выкинув часть LD)
    Это не пересылка - это вывод.
    туда еще внести эти данные надо.
    а изза структуры буфера может быть проблематично
    С уважением,
    Jerri / Red Triangle.

  7. #417

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,292
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    мне где-то встречался вариант с сравнением перед пересылкой
    и если число на экране и в буфере совпадало, то оно пропускалось.

  8. #418

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    мне где-то встречался вариант с сравнением перед пересылкой
    и если число на экране и в буфере совпадало, то оно пропускалось.
    танунафиг, это ж лишнее чтение экрана
    вот таблица грязных тайлов - другое дело
    Прихожу без разрешения, сею смерть и разрушение...

  9. #419

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Как-то так. Это пример конечно, можно и ещё поколдовать )) Да я и обшибиться мог, не проверял всё-таки ))
    И да - код что этот, что изначальный предполагает что спрайт атрибутов целиком помещается в экране,
    если вылезет - будет пичалька ))
    теперь несколько иная задача возникла.
    А именно разбить ldir на составные (т.к. планирую сделать зеркальную итерацию атрибутов в строке, и скип оных по ключевому цвету).
    Пробую так, но чёто не то. Какая-то кашыца получается в одну строку. Хотя казалось бы, что может пойти не так.

    Код:
                     push bc
                     LD    B,(_SPR_W)
    
    ALT_LDIR                ld a,(hl)
                                  ld (de),a
                                  inc hl
                                  INC DE
    
                                  DJNZ   ALT_LDIR
    
                    ; ldir

    Тут уже макс. скорость не требуется.
    Последний раз редактировалось ALKO; 02.10.2024 в 16:01.

  10. #420

    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    556
    Спасибо Благодарностей отдано 
    187
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    теперь несколько иная задача возникла.
    А именно разбить ldir на составные (т.к. планирую сделать зеркальную итерацию атрибутов в строке, и скип оных по ключевому цвету).
    Пробую так, но чёто не то. Какая-то кашыца получается в одну строку. Хотя казалось бы, что может пойти не так.
    LD B,(_SPR_W) - нет такой команды в Z80 !!!

    В остальном нифига не понял что ты хочешь сделать.

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

    ALKO(02.10.2024)

Страница 42 из 51 ПерваяПервая ... 383940414243444546 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 42
    Последнее: 05.05.2021, 17:01
  2. Общая тема для моих вопросов (ассемблер и zx spectrum)
    от moronizzz в разделе Для начинающих
    Ответов: 17
    Последнее: 23.08.2016, 18:13
  3. тема для мобильного....
    от rasmer в разделе Музыка
    Ответов: 0
    Последнее: 18.01.2008, 20:25

Метки этой темы

Ваши права

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