ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
1076358 Топик полностью
Adept (11.02.2021 22:42 - 12.02.2021 12:50, просмотров: 495) ответил Tpoeшник на Я не понимаю код.
там всё просто 

ld - грузит в YL значение очередного байта, а st - пишет это значение в выходной массив 256 байт, причём значение является и индексом элемента массива.

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

Для увеличения скорости, чтобы не контролировать выход из цикла в каждой итерации, цикл не побайтовый, а линейными кусками по 256 байт,


досрочного выхода по 256 нет, т.к. это редкий случай, и тратить четверть вычислительных ресурсов (добавив ещё одну команду в 3-байтовый цикл - ненужное расточительство.

Если принципиально нужно возможность гарантированного досрочного выхода, то есть вариант с побайтовой тупой сравнилкой, но он в 2 с лишним раза бролее медленный :)

--------------

P.S. Всё же добавил контроль на возможный максимум, но через каждые 256 байт :)) Это несильно (на доли %) увеличило время выполнения, но добавило возможность досрочного выхода если максимум уже встретился

досрочного выхода по 256 при побайтовом контроле нет, т.к. это редкий случай, и тратить четверть вычислительных ресурсов (добавив ещё одну команду в 3-байтовый цикл - ненужное расточительство.

Вместо этого контроль на максимум и досрочный выход реализован за главным циклом и делается по окончании обработки каждых 256 байт входных данных.

...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)