#### Пример разворачивания цикла.

```c
for (i = 1000; i>0; i = i-1)
    x[i] = x[i] + s;
```

Без оптимизации:
```armasm
Loop: LD  [R1], F0      ; 1
    ; простой           ; 2
      ADD F2, F0, F4    ; 3
    ; простой           ; 4
    ; простой           ; 5
      ST  F4, [R1]      ; 6
      ADD R1, R3, R1    ; 7
    ; простой           ; 8
      BNE R1, R2, Loop  ; 9
    ; простой           ; 10
```

- 4 копии цикла развернуты без повторного использования регистров.
- Размер базового блока увеличен с 5 до 14 инструкций.
- 3 перехода и 3 уменьшения R1 удалены.
- Адреса загрузки и сохранения изменены.
- 7 тактов для исходной итерации.

Разворачивание цикла сразу с оптимизацией:

| Loop: |   LD [R1], F0    |      1      |
| :---: | :--------------: | :---------: |
|       |  LD [R1-8], F6   |      2      |
|       | LD [R1-16], F10  |      3      |
|       | LD [R1-24], F14  |      4      |
|       |  ADD F2, F0, F4  |      5      |
|       |  ADD F2, F6, F8  |      6      |
|       | ADD F2, F10, F12 |      7      |
|       | ADD F2, F14, F16 |      8      |
|       |   ST F4, [R1]    |      9      |
|       |  ST F8, [R1-8]   |     10      |
|       | ADD R1, R3, R1;  | R3 -=32; 11 |
|       | ST F12, [R1+16]  |     12      |
|       | BNE R1, R2, Loop |     13      |
|       | ST F16, [R1+8];  | 8-32 = -24  |

Время итерации цикла сократилось до 14 тактов или $\frac{14}{4}=3.5$ для исходной итерации; Ускорение $\frac{6}{3.5}=1.7$