Теперь применимы правила 1 и 4:
Теперь -- правила 1 (зелёным) и 6 (жёлтым):
Наконец, синим цветом -- правило 5, и цианом -- ещё не сформулированное "правило 6 для mul":
6a) mov ix, X /ix/; mul ix ax/dx/cx,dx --> mul X ax/dx/dx
Хорошо видно, насколько код стал лучше и компактнее. Теперь его можно, например, перевести в форму списка, а оттуда -- непосредственно в машинный код. В каком порядке вставлять в список "параллельные" ветви сети зависимостей -- важно только для отдельных процессоров, например для Pentium I с его полутораконвейерной архитектурой; в общем же случае порядок произвольный. Можно, например, обходить таблицу по строкам слева направо:
- Код: Выделить всё
push A
mov bx, B
mov ax, E
sub bx, C
add [sp], bx
mul D
add [sp], ax
Неплохо, правда?