Код вроде и так субоптимален. Можно чуть-чуть изворачиваться, но суть та же...
Код вроде и так субоптимален. Можно чуть-чуть изворачиваться, но суть та же...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
С большим пробелом в общении со speccy возникают трудности по оптимизации кода, да и вообще написание уникальных процедур. Я на этюдах ZX Ревю вообще тогда сильно шагнул в написании коротких и быстрых процедур. Может вернем тему? Кто за?
короткое и быстрое - это противоречие обычно... кодеров активных осталось немного, проще будет просто создавать тему наверно для каждой процедуры, которую требуется соптимизировать...
смысла нет... уже были попыткинасколько я помню... так что идея бессмыслена....
Мои интры: [Kukarachess][Super boot rmx][tRUSHE MOSAIc][BLAZE]
Мои игры: [Overload][Removal]
Список игр для ZX-Spectrum: [2015] [2014]
осталось много пассивных кодеров)))
резунойд.
Ну да. Пассивных хоть отбавляй![]()
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Все ясно. Тема не рулит. Придется после стольких лет все искать в огромном количестве литературы и шурупить с оптимизацией.
Шурупь. Полезнее.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Вообще то тема уже несколько раз открывалась, посмотреть можно было повнимательнее ;-)
А посчёт этюдов есть такие вот зарисовки.
Есть такие замечательные команды как adc и sbc - используют флаг CY
Например типовая задача уменьшить значение аккумулятора не менее какого то (например 23).
обычно делают:
dec a
cp 23
jr nc,$+3
inc a
а можно вот так аккуратно:
sub 23
adc a,22
работает много элегантнее и что очень важно имеет всегда одну и ту же длительность (что особенно интересно демописателям где каждый раз приходиться пересчитывать такты).
Или обратная задача - увеличить значение но не более какого то (например 75)
В этом случае делаем так:
add a,-75
sbc a,-1-75
В этом случае выше 75 ну никак не поднимется с теми же преимуществами.
Кстати аналогичные вещи можно делать с HL используя те же команды.
Или задача: в зависимости от значения флага CY заполнить аккумулятор либо значением 23 либо 75:
sbc a,a
and 75-23
add a,23
В итоге - если включен флаг CY то в аккумуляторе будет 75, иначе будет 23.
Jukov(12.01.2022)
Прошло всего-то 14 лет - а кто-то проверял, как это работает? Я проверил (понадобилось). Немного не так работает, как заявлено.
оставляет в А значение 22, хотя должно быть 23.Код:ld a, 23 sub 23 adc a, 22
То есть, формула должна быть:
sub x+1
adc a, x
а не
sub x
adc a, x-1
К этому:
претензий нет.Код:add a,-75 sbc a,-1-75
Последний раз редактировалось 0xDEAD; 08.06.2022 в 19:33.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)