Генерация кода: весёлые картинки

Персональный блог одноименного форумчанина. Человека и парохода, не побоюсь этого сравнения :)

Модератор: tyomitch

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Генерация кода: весёлые картинки

Сообщение tyomitch » 27.05.2006 (Сб) 19:09

В начальной ситуации применимы правила 2 и 3:
Изображение


Теперь применимы правила 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

Неплохо, правда?
Изображение

Вернуться в Tyomitch

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList