AS>В результате получили ... снижение производительности (небольшое — буквально тысячные доли процента, но тем не менее, стабильное).
AS>Вопрос — как бы это дело поинтереснее оптимизировать (без MMX — вариант для него уже есть). Тут уже дело, конечно, не в производительности, а просто самому стало интересно. Чувствую, что можно еще выжать из этого, но как —
Видимо, глаз замылился? Интересно будет послушать ваши соображения
Если кому интересно, смог немного улучшить:
mov eax, [esi + 4]
mov ebx, eax
shl ax, 5
shl ebx, 16
shl eax, 8
mov edx, [esi]
add esi, 8
mov bx, dx
shr edx, 8
mov al, bl
mov ah, dh
shr al, 3
shr ebx, 5
and eax, 0F81FF81Fh
and ebx, 07E007E0h
add edi, 4
or eax, ebx
mov [edi-4], eax
Все это вместе дало прибавку порядка 10 процентов над исходным вариантом, и 2.5 процентов над предыдущим. Вероятно, и тут еще есть над чем поработать, потому что даже простая перестановка команд меняет соотношения на проценты

Но Code Analist у меня работать на домашней машине не захотел — просто вываливается с ошибкой доступа по адресу