Как дела с игрой?
Как дела с игрой?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Потихоньку переписываю свои библиотеки для работы с графикой.
вариант функции ABS (R0):
Может кому полезно будет или более интересный вариант предложитКод:MOV R0, R1 ASH #-15., R1 ADD R1, R0 XOR R1, R0![]()
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Код:TST R0 BPL 10$ NEG R0 10$:
Это очевидный вариант.Код:TST R0 BPL 10$ NEG R0 10$:
Нужно без ветвлений - "борьба за скорость"
Например при расчете AABB этих ABS будет много.
- - - Добавлено - - -
Скоро проверю в "реальной жизни" несколько вариантов.. там видно будет.
Последний раз редактировалось S_V_B; 18.05.2021 в 12:48.
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
- - - Добавлено - - -Код:#4+R0(2000) empty 623 697 оп./сек #4+R0(2000) 312 238 оп./сек -> 625 256 оп./сек CMP (R0)+,(R0)+ empty 624 476 оп./сек CMP (R0)+,(R0)+ 173 051 оп./сек -> 239 389 оп./сек #2+R0(2000) empty 624 476 оп./сек #2+R0(2000) 312 238 оп./сек -> 624 476 оп./сек INC R0 INC R0 empty 624 476 оп./сек INC R0 INC R0 390 086 оп./сек -> 1 039 290 оп./сек TST (R0)+ empty 624 476 оп./сек TST (R0)+ 270 808 оп./сек -> 478 169 оп./сек CLR R0 - SOB R0, . empty 2 079 037 оп./сек CLR R0 - SOB R0, . 5 оп./сек -> 5 оп./сек ABS1 73 300 оп./сек ABS2 345 979 оп./сек .
Буковки голубеньким подкрась - реально ускорится
Заменил конструкцию:
на эквивалентнуюКод:MOV R3,R2 ASR R2 ASR R2 ASR R2 MUL #40.,R2 ;Y/8*40 ADD R3, R0 ; адрес под спрайтом в тайлбуфере
Код:BIC #7, R3 MOV R3,R2 ASL R3 ASL R3 ADD R2,R3 ADD R3, R0 ; адрес под спрайтом в тайлбуфере
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Она не эквивалентная.
ADD R3, R0 после команды MUL, к R0 прибавляет не R2*5, а старшую часть умножения на 40., то, что за 16 бит из R2 вылезло.
У меня эквивалентный код получается такой:
- - - Добавлено - - -Код:mov R3, R2 bic #7, R2 clr R3 mov R2, -(SP) asl R2 rol R3 asl R2 rol R3 add (SP)+, R2 adc R3 add R3, R0
Ну, либо в первом примере опечатка.
Последний раз редактировалось gid; 20.05.2021 в 13:35.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)