"Филипп Н.Хислей. Генерация высококачественного кода для программ, написанных на СИ " - читать интересную книгу автора

цикла. Количество инструкций, генерируемых для цикла, не так важно, как
количество временных циклов, которое требуется для выполнения каждой
инструкции. Простой цикл и код, сгенерированный для него четырьмя
компиляторами, демонстрирует большое разнообразие в размере и качестве кода
(см. рис. 2).
--------------------------------
|РИСУНОК 2: Простой цикл |
+-------------------------------+
|Исходный текст на Си BORLAND METAWARE |
| Turbo C 1.5 High C 1.4 |
|(x) - врем. циклы (125) (87) |
+-------------------------------+
|k5 = 10000; mov j5,0 mov j5,0 |
|j5 = 0; mov k5,10000 mov k5,10000 |
|do { @10: L00e3: |
| k5 = k5 - 1; mov AX,k5 dec k5 |
| j5 = j5 + 1; dec AX inc j5 |
| i5 = (k5 * 3) / mov k5,AX mov AX,j5 |
| (j5 * constant5); mov AX,j5 mov SI,AX |
|} while (k5 · 0); inc AX sal SI,2 |
| mov j5,AX add SI,AX |
| mov AX,k5 mov AX,k5 |
| imul AX,AX,3 mov DX,AX |
| push AX add DX,DX |
| mov AX,j5 add DX,AX |
| imul AX,AX,5 xchg AX,DX |
| mov BX,AX cwd |
| pop AX idiv SI |
| cwd mov I5,AX |
| idiv BX cmp k5,0 |
| mov i5,AX jnle L00e3 |
| cmp k5,0 |
| jg @10 |
+-------------------------------+


| MICROSOFT WATCOM |

| C 5.0 C 6.0 |
| (46) (91) |
+-------------------------------+
| mov j5,10000 mov j5,0 |
| mov k5,0 mov DI,10000 |
| mov CX,30000 L4 dec DI |
| sub SI,SI imul AX,DI,3 |
| $0265: inc j5 |
| sub CX,3 imul BX,j5,5 |
| add SI,5 cwd |
| mov AX,CX idiv BX |
| cwd mov i5,AX |