Page 56 - 4761
P. 56
K4: mov ax,B
Mul C
Add ax,D
Push ax
Code (U5)
Mov dx,ax
Pop ax
Sub ax,dx
Mov A,ax
K5: mov ax,B
Mul C
Add ax,D
Push ax
Mov ax,B
Mul 10
Pop ax
Sub ax,dx
Mov A,ax
Отриманий асемблерний код можна оптимізувати, проте для його обробки
необхідно спеціальні методи і структури, які враховують взаємозв’язок операцій. Крім
того, орієнтація на окрему мову асемблер не дозволяє цей метод зробити універсальним.
Кожен тип операцій жорстко зв’язується з послідовністю окремих команд,
орієнтованих на деяку архітектуру обчислювальних систем. Всі ці вимоги ведуть до того,
що в реальному компіляторі при генерації коду треба приймати до уваги багато
особливостей, в результаті чого збільшується число різних типів вузлі, що ускладнює
алгоритм генерації.
Цих проблем можна уникнути, якщо породжувати код не у вигляді ланцюга
команд асемблера, а у вигляді послідовності команд машинно-незалежного методу ВПП –
наприклад, тетрад чи тріад.
5. 3 Оптимізація об’єктного коду
Завжди бажано мати компілятор, який створює об'єктні програми, що ефективно
працюють. Як правило, програма в машинних кодах, отримана в результаті трансляції,
буде займати більший обсяг пам'яті і працювати повільніше, ніж така ж програма,
написана досвідченим програмістом. Термін "оптимізація" застосовують до спроб зробити
вихідні програми більш "ефективними".
Таким чином, оптимізацією називається поліпшення вихідної програми. Частина
транслятора, яка відповідає за оптимізацію, виконує наступні дії:
1. Усуває недоліки програми, викликані недбалістю або низькою кваліфікацією
програміста. Прикладом може служити винесення з циклу операторів, які не залежать від
керуючих змінних циклу, що призведе до скорочення часу виконання програми, оскільки
винесені оператори будуть виконуватися тільки один раз, а не багаторазово.
2. Усуває зайві обчислення, які неминуче виникають в процесі трансляції навіть
при самому ретельному написанні програми мовою високого рівня. Наприклад, усунення
повторного обчислення індексних виразів для елементів масиву скорочує час виконання
програми і її довжину.
54