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
   50   51   52   53   54   55   56   57   58   59   60