// заполнение регистра ecx длиной участка...
jle @@; @:
mov [eax], edx
add eax, 4
// sub eax, 4
dec ecx; jnz @; @@:
Сделал замер скорости. Огорчился.
Решил смеха ради добавить одну паразитную команду (она тут закомментирована). Получил резкое ускорение - то есть теперь данные стали выводиться в одно и то же место в памяти. Видимо система запомнила, куда в последний раз обращалась программа и не стала проверять обращение на корректность лишний раз.
Как на самом деле обрабатываются обращения к памяти в винде? И можно ли использовать эту информацию для ускорения?
Кстати, почему пара deс; jnz работает намного быстрее, чем loop, который специально предназначен для циклов?