"Филипп Н.Хислей. Генерация высококачественного кода для программ, написанных на СИ " - читать интересную книгу авторацикла. Количество инструкций, генерируемых для цикла, не так важно, как
количество временных циклов, которое требуется для выполнения каждой инструкции. Простой цикл и код, сгенерированный для него четырьмя компиляторами, демонстрирует большое разнообразие в размере и качестве кода (см. рис. 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 | | 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 | |
|
|