Системное программное обеспечение: Основы трансляции. Карпушин А.Н - 52 стр.

UptoLike

54
Вид узла дерева Результи-
рующий код
Примечание
mov ax,oper1
act ax,oper2
act – команда соответствующей
операции;
oper1,oper2 – операнды (листья
дерева)
Code(Узел 2)
mov dx,ax
mov ax,oper1
act ax,dx
Узел 2 – нижележащий узел дере-
ва (не лист);
Code(Узел 2) – код, порождаемый
процедурой для нижележащего
узла
Code(Узел 2)
act ax,oper2
Code(Узел 2)
push ax
Code(Узел 3)
mov dx,ax
pop ax
act ax,dx
Code(Узел 2) – код, порождаемый
процедурой для нижележащего
узла;
Code(Узел 3) – код, порождаемый
процедурой для нижележащего
узла;
push и pop - команды сохранения
результатов в стеке и извлечения
результатов из стека
Рассмотрим пример дерева вывода для выражения A := B*C + D - B*10 на
рисунке и соответствующий ему фрагмент кода на языке ассемблера, построен-
ный по описанным выше правилам (обратите внимание, что для операции при-
сваивания используется отдельный код, не подпадающий под общие правила).