Монотонное изменение индекса
Структура программы с монотонным изменением индексов:
Вычисление Hj , Hi
Цикл для вычисления.
Пример. Составить программу для вычисления сумм столбцов матрицы:
for (j=0; j<N; j++){
s[j]=0;
for (i=0; i<M; i++)
s[j]+=matr[i][j]
}
Для оптимизации программы запишем:
for (j=0; j<N; j++){
r=0;
for (i=0; i<M; i++)
r+=matr[i][j]
s[j]=r;
}
; Вычисление Hi =4*N, Hj=4
mov eax, [N]
shl eax, 2; Hi
mov ebx, 4; Hj
;for (j=0; j<N; j++){
mov ecx, [N]
shl ecx, 16
mov edx, 0; j
forj:
; r=0;
mov esi, 0
; for (i=0; i<M; i++)
mov cx, [M]
mov edi, 0; i
; r+=matr[i][j]
fori:
add esi, [matr + edi + edx*4]
; i++
add edi, eax
dec cx
jnz fori
; s[j]=r;
mov [s+edx*4], esi
;j++
inc edx
sub ecx, 10000h
jnz forj
}
...
Недостатки метода:
· для каждого индекса свой регистр;
· не может быть обобщен на массивы большей размерности.