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.


 

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

13770. ОЛИМПИАДЫ ПО ИНФОРМАТИКЕ ЗАДАЧИ И РЕШЕНИЯ ПАСКАЛЬ 513.5 KB
  ОЛИМПИАДЫ ПО ИНФОРМАТИКЕ ЗАДАЧИ И РЕШЕНИЯ ЧАСТЬ 1 Задача №1 У продавца и покупателя имеется неограниченное количество монет достоинством к примеру. Покупатель купил товар на сумму n. Нужно найти минимальное количество монет которые будут использованы при рас...
13771. Курс лекций по языку программирования QBASIC 351.5 KB
  Введение Данный курс лекций по языку программирования QBASIC разработан согласно временному региональному компоненту государственного образовательного стандарта и может быть использован для ведения лекций преподавателями школ и лицеев а также учащимися как учебное...
13772. Системы счисления и перевод между ними 233 KB
  Оглавление Системы счисления Двоичная система счисления 8ая система счисления 16ая система счисления Перевод чисел из одной системы счисления в другую Перевод из 2ой системы в 10ую Пер...
13773. Методы решения иррациональных неравенств 61.6 KB
  Методы решения иррациональных неравенств. I Неравенствах вида решаются следующим образом. Если то решений нет. Если то неравенству соответствует равносидьная система II Неравенствах вида решаются следующим образом. Если то решений нет. Если то нераве...
13774. Методы решения иррациональных уравнений 113.5 KB
  Методы решения иррациональных уравнений. I Метод возведения в четные степени неравносильный переход нужна проверка и нечетные степени равносильный переход. II Уравнения вида решаются следующим образом. Уравнению вида соответствует равносильная система ...
13775. Методы решения логарифмических неравенств 33.5 KB
  Методы решения логарифмических неравенств. 1 Уравнения вида решаются следующим образом. Уравнению соответствует равносильная система 2 Уравнения вида решаются следующим образом. Уравнению соответствует равносильная система 3 Уравн
13776. Методы решения неравенств, содержащих знак модуль 121 KB
  Методы решения неравенств содержащих знак модуль. I Неравенства вида решаются следующим образом. Если то решений нет Если то Если то неравенству равносильна система II Неравенства вида решаются следующим образом. Если то решений нет Если то решени
13777. Методы решения показательно-степенных уравнений 25 KB
  Методы решения показательностепенных уравнений. 1 Уравнения вида решаются следующим образом. Уравнению соответствует пять случаев: – обязательно проверка. – обязательно проверка. – обязательно проверка. – обязательно проверка....
13778. Методы решения показательных уравнений 23 KB
  Методы решения показательных уравнений. 1 Уравнения вида решаются следующим образом. Если следовательно тогда Введем замену. Пусть тогда...