Page 55 - 4761
P. 55
Таблиця 5.2 – Перетворення для операції присвоєння
Вид вузла Результуючий код Примітка
mov ax, oper1 опер1, опер2 – операнди
mov oper1, ax (листки дерева)
code (вузол2) Вузол2 – нижчележачий
mov oper1, ax вузол (не лист) дерева.
Code (вузол2) – код, який
породжує процедура для
нижчележачого вузла
Приклад 5.1. Побудувати послідовність команд асемблера, яка відповідає дереву
операцій для виразу A:= B + C + D – B * 10.
Рисунок 5.1 – Дерево операцій для арифметичного виразу
Згідно принципу СК-перекладу, побудова починається від кореня дерева. 222
K1: code(U2)
Mov A, ax
K2: Сode (U3)
Push ax
Code (U5)
Ssss Mov dx, ax
Pop ax
Sub ax,dx
Mov A, ax
K3: Сode (U4)
Add ax,D
Push ax
Code (U5)
Mov dx,ax
Pop ax
Sub ax,dx
Mov A,ax
53