20609

Простой генератор кода

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

Данные вычисленные результаты находятся в регистрах как можно дальше и перенос их в память осуществляется только при необходимости использовать этот регистр. a:= bc b в регистр Ri c в регистр Rj. 2 b в регистр Ri c в памяти ADD Ri с.

Русский

2013-07-31

37 KB

0 чел.

Лекция №10

Простой генератор кода

Генератор кода рассматривает последовательность трех адресных инструкций, учитывая какие из операндов находятся в текущий момент в регистрах.

Данные (вычисленные результаты) находятся в регистрах как можно дальше, и перенос их в память осуществляется только при необходимости использовать этот регистр.

a:= b+c

  1.  b в регистр Ri, c в регистр Rj.

ADD Ri, Rj.

Стоимость=1.

2) b в регистр Ri, c в памяти

ADD Ri, с.

Стоимость=2.

3) b в регистр Ri, c живая

MOV Rj, с

ADD Ri, Rj.

Стоимость=3.

Дескриптор регистров – отслеживает текущее содержимое каждого регистра. Когда для вычисления требуется новый регистр, происходит обращение к регистру.

Дескриптор адреса – отслеживает ячейки памяти, в которых хранятся значения имен.

Алгоритм генерации года

На вход алгоритма поступает последовательность трех адресных инструкций составляющих базовый блок.

Для каждой инструкции вида X:=Y op Z выполняется следующая последовательность действий:

  1.  вызывается функция getreg для определения места L где должен быть сохранен результат X, как правило, это регистр.
  2.  обращаемся к дескриптору адресов для определения текущего положения Y в памяти ().

Если значение Y есть и в памяти и в регистре, то в качестве выбирается регистр. Если Y не находится в L, то генерируем инструкцию

MOV L,Y/

  1.  генерируем инструкцию

op L, Z/ , где  Z/- текущее положение Z.

Аналогично определяем регистр.

Обновляем содержимое дескриптора адреса X  информацией о том, что X находится в L. Если L является регистром, то модифицируем еще и дескриптор регистра. Если X содержится в других регистрах, то очистить эти дескрипторы регистров.

  1.  если текущие значения Y и Z в дальнейшем не используется и не являются живыми при выходе из блока, то удаляем информацию о них из дескриптора регистров.

Алгоритм функции getreg

Функция getreg вызывается для имени переменной

  1.  если имя Y находится в регистре и если Y не является живым именем, то в качестве L возвращается регистр, в котором хранится Y.
  2.  если условие пункта 1 не выполняются, то в качестве L возвращается свободный регистр (если таковой имеется).
  3.  если не выполняется пункт 2, а X используется далее в блоке или операция требует использование регистра, тогда ищется занятый регистр R, генерируется операция MOV m, R. Регистр R выбирается, руководствуясь следующими принципами: значение, храняещееся в нем, будет использовано нескоро или оно уже хранится в памяти.
  4.  если X в блоке не используется, либо не удается найти походящий регистр,тогда в качестве L выбирается ячейка памяти.

Пример:

d:=(a-b) + (a-c) + (a-c)

t  | t1:=a-b   t1:=a-b

u | t2:=a-c   t2:=t1+t1

v | t3:=t2+t2  t3:=a-b

  | d:= t1+t3   u:=t3+t2

t:=a-b

u:=a-c

v:=t+u

d:=v+u

Инструкция

Сгенерированный код

Дескриптор регистров (регистры пусты)

Дескриптор адреса

t:= a-b

MOV R0, a

SUB R0, b

R0 – содержит t

t в R0

u:= a-c

MOV R1, a

SUB R1, c

R0 – содержит t

R1 – содержит u

t в R0

u в R1

v:= t+u

ADD R0, R1

R0 – содержит v

R1 – содержит u

v в R0

u в R1

d:= v+u

ADD R0, R1

MOV d, R0

R0 – содержит d

d в R0

Стоимость инструкций – 10.


 

А также другие работы, которые могут Вас заинтересовать

78298. Бронхо-легенева система в умовах спокою, тренувальних впливів, екстремальних, граничних та патологічних станів: бронхо-легенева система в умовах спокою 157.42 KB
  Кількісні показники зовнішнього дихання. Для цього треба застосовувати комплекси фізичних вправ які розвивають дихання. Дихання людини Дихання людини складається з таких процесів: Зовнішнє дихання вентиляція легень надходження повітря в повітроносні шляхи і газообмінміж альвеолами та зовнішнім середовищем. Значення дихання для людини Газообмін між організмом і зовнішнім середовищем надходження О2 до клітин організму а також виведення СО2 з організму.
78300. НОРМИРОВАНИЕ ТОЧНОСТИ УГЛОВЫХ РАЗМЕРОВ 187 KB
  Система единиц на угловые размеры Углом в плоскости называется геометрическая фигура образованная двумя лучами сторонами угла выходящими из одной точки вершины. Полуплоскости называются гранями двугранного угла а их общая прямая ребром. В промышленности чаще всего приходится иметь дело с двугранными углами однако для удобства измерений требования к точности относятся к углу в плоскости т. углу получаемому пересечением двугранного угла плоскостью перпендикулярной ребру.
78301. НОРМИРОВАНИЕ ТОЧНОСТИ МЕТРИЧЕСКОЙ РЕЗЬБЫ 606 KB
  Резьбовые соединения используемые в машиностроении Резьбовым соединением называется соединение двух деталей с помощью резьбы т. элементов деталей имеющих один или несколько равномерно расположенных винтовых выступов резьбы постоянного сечения образованных на боковой поверхности цилиндра или конуса. Контур сечения канавок и выступов в плоскости проходящей через ось резьбы общий для наружной и внутренней резьбы называется профилем резьбы.
78302. НОРМИРОВАНИЕ ТОЧНОСТИ ПРЯМОБОЧНЫХ ШЛИЦЕВЫХ СОЕДИНЕНИЙ 398.5 KB
  Шлицевым соединением или зубчатым соединением называется разъемное соединение вала с отверстием когда на валу имеются зубья выступы а в отверстии соответствующие впадины шлицы. Шлицевое соединение можно представить как многошпоночное соединение с равномерно расположенными шпонками. В зависимости от формы профиля выступов у вала и впадин у втулки имеются прямобочные шлицевые и эвольвентные соединения. Значительно реже применяются шлицевые соединения с треугольным профилем.
78303. НОРМИРОВАНИЕ ТОЧНОСТИ ШПОНОЧНЫХ СОЕДИНЕНИЙ 101 KB
  В шпоночных соединениях имеются вал и отверстие как в гладких соединениях. На валу и во втулке этого соединения имеются пазы расположенные вдоль оси. В машиностроении в основном используют шпоночные соединения с призматическими сегментными и клиновыми шпонками. Помимо перечисленных шпоночных соединений в машиностроении используются и нормируются точности других шпоночных соединений представляющих в определенном роде разновидность перечисленных: соединения с призматическими направляющими шпонками с призматическими высокими...
78304. НОРМИРОВАНИЕ ТОЧНОСТИ ЦИЛИНДРИЧЕСКИХ ЗУБЧАТЫХ КОЛЕС И ПЕРЕДАЧ 811 KB
  Зубчатое колесо представляет собой деталь сложной геометрической формы в виде диска с зубьями на внутренней или наружной цилиндрической или конической поверхности входящими в зацепление с зубьями другого зубчатого колеса. Принцип нормирования точности зубчатых колес и передач Трудность в отношении нормирования точностных требований к зубчатым передачам заключается в том что эти детали сложны по своей геометрической форме а кроме того они являются элементами кинематической...
78305. Сертификация, ее сущность и характеристики 967 KB
  Сущность сертификации Общие положения. Сертификация базируется на стандартах и в ее основе лежат испытания по нормам сертификации. Самосертификация выполняет все необходимые действия и заявляет об этом специальным документом или простановкой знака сертификации на продукции или сопроводительным документом. Любая система сертификации базируется на стандартах государственных предприятий технических условиях.
78306. ОСНОВЫ МЕТРОЛОГИИ И ТЕХНИЧЕСКИХ ИЗМЕРЕНИЙ 341 KB
  В настоящее время к техническим измерениям рассматриваемым во взаимной связи с точностью и взаимозаменяемостью в машиностроении относят измерения линейных угловых и радиусных величин. Основные задачи метрологии ГОСТ 16263 установление единиц физических величин государственных эталонов и образцовых средств измерений контроля и...