Программирование на ассемблере персональных ЭВМ класса IBM/PC-XT в операционной системе MS/DOS. Евсеева О.Н - 42 стр.

UptoLike

- 42 -
ЛАБОРАТОРНАЯ РАБОТА N 5
Генеpация объектного кода компилятоpом Турбо-Си
и его оптимизация
Цель pаботы:
Изучить pаботу блока генеpации кода, освоить методы оптими-
зации кода на уpовне ассемблеpа.
Теоретическая часть:
Основные принципы оптимизации кода
Удобно разделить подходы к оптимизации программ на машин-
но-зависимые и машинно-независимые в соотвествии с уровнями
рассмотрения программ (назкий, высокий) и учетом особенностей ре-
альной машины.
Машинно-зависимая оптимизация кода включает в себя:
а) Назначение и распределение регистров.
Инструкции, использующие регистры выполняются быстрее, чем
инструкции, требующие обращения к памяти. Значит, нужно стараться
разместить на регистрах все переменные и промежуточные результа-
ты, которые потом используются в программе.
Но, редко бывает доступно столько регистров сколько нужно в
данный момент. Значит, нужно выбрать регистр, переменная в кото-
ром должна быть заменена при необходимости использовать этот ре-
гистр для другой цели.
Для этого выполняется просмотр программы вперед, чтобы опре-
делить, когда каждый из регистров будет повторно использоваться.
Переменная, которая не потребуется в течении наибольшего времени,
как раз и определит искомый регистр.
б) Учет операторов передачи управления.
Для этого программу разбивают на линейные участки. Линейный
участок - это последовательность команд с одной точкой входа в
начале участка и одной точкой выхода в его конце без каких-либо
переходов внутри этого участка.
Таким образом, началом для нового линейного участка может
быть: каждая команда, на которую может быть передано управление в
результате операции перехода; или команда, непосредственно следу-