Формула адресации: [base + scale·index + disp]
Каждую итерацию m0 читает подряд от указателя, а m1 целится по полной формуле. Жми «Шаг» и следи, как складывается адрес.
[base+scale·index+disp]
base — регистр-указатель (здесь srcq)
scale — только 1, 2, 4 или 8 · index — регистр (здесь r1q)
disp — константа, известная при сборке (здесь 3+mmsize)
Калькулятор адреса — откуда читает m1
[
base · srcq—
+
2 · r1q—
+
disp · 3+1619
]
=
адрес—
disp 3 + mmsize — арифметика между константами: ассемблер свернул её в 19 ещё при сборке. Процессору достаётся уже готовое число.
Память (RAM) — байты по адресам 1000–1079
CPU — регистры
srcq
base — «откуда»1000
r1q
index и счётчик?
после dec: —
окно m0 — 16 байт от srcq
окно m1 — 16 байт от вычисленного адреса
srcq — указатель
тусклые — уже пройдено указателем