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.


 

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

44529. Іш аймақтары. Тік бұлықеттің қынаптарының пайда болуы 15.85 KB
  Жоғарғы іштік аймақ-regio epigasrtium, қабырғалардың шеміршекастылық оң жіне сол жақтық аймғына-regio hypohondrica dextra et sinisrta, бөлінеді
44530. Мойын, cervix, артқы, латеральды, төс-бұғана-емізікті бұлшықет аймағы ж/е алдыңғы деп 4 аймаққа бөледі 15.59 KB
  Латеральды аймақ, regio cervicalis lateralis, m. sternocledomastoideus-тің артында орналасқан ж/е оны алдыңғы жағынан аталған бұлшықет, астыңғы жағынан бұғана ж/е артқы жағынан m. trapezius шектейді үшбұрышты бөледі. Жауырын-бұғана үшбұрышы, trigonum omoclaviculare
44531. Мойын шандырлары 16.3 KB
  Беткей мойын шандыры, fascia colli superficialis, дененің жалпы беткей(теріасты) шандырының бөлігі болып табылады ж/е бірден үзіліссіз көрші аймақтарға ауысады. Дененнің басқа теріасты шандырынан айырмашылығы: онда теріасты бұлшықеті
44532. Ас қорыту жүйесінің жалпы құрылысы, әрбір бөлімнің қызметтері 15.17 KB
  Ас қорыту жүйесі (көне грекше: systema digestoria; көне грекше: systema — бүтін, байланысқан, жүйе; лат. digestoria — асқорыту) - адам мен жануарлар организмдеріндегі асты (азықты) қабылдау, өндеу, қорыту, сіңіру және жын қалдығын сыртқы ортаға шығару қызметтерін атқаратын мүшелердің жүйесі
44533. ТАТЬЯНА ТОЛСТАЯ: ТЕКСТ СЕМЬИ И СЕМЬЯ В ТЕКСТЕ 187.3 KB
  Татьяна Толстая. В предисловии к одной из своих последних публикаций Толстая рассматривает литературу как дело сугубо семейное как нечто напоминающее надомный промысел. Опубликовав свои эссе в одном томе с рассказами своей сестры Наталии Толстая комментирует это собрание текстов под названием Сестры следующим образом: Наша книга – отклик на происходящее вокруг.
44534. ФОРМЫ ГОСУДАРСТВ, ФОРМЫ «СЕМЬИ» 377.14 KB
  При этом по крайней мере в идеале социалистические государства Центральной и Восточной Европы являлись формой государства всеобщего благосостояния. Относительная обеспеченность едой и жильем полная занятость высокие – по сравнению с другими стратами – зарплаты для рабочих и обеспечение номинально бесплатного или дешевого здравоохранения образования ухода за детьми материнскими льготами и культурными мероприятиями – все это могло бы служить основанием для того чтобы рассматривать эти государства в качестве примера государства...
44535. Старая идеология новой семьи: демографический национализм России и Украины 262.55 KB
  В средствах массовой информации в политических и академических дискуссиях даже в документах женского движения подчеркивается возрастание социальной значимости традиционных женских ролей жены и матери возвращение мужчине экономической ответственности за обеспечение семьи важная роль традиционно крепкой украинской семьи в процессах консолидации и возрождения нации значение женской репродуктивной функции для усиления позиций украинского этноса. Идеализация традиционной семьи предполагает дистанцирование от коммунистического опыта...
44536. Их нравы: американская семья в зеркале советской пропаганды холодной войны 142.76 KB
  Брат –дегенерат†–так портретируется “светская американская семья†в одном из выпусков советского сатирического журнала “Крокодил†за 1949 год илл. Основными источниками стали журналы “Крокоди놓Работница†и “Семья и школа†а также пропагандистские брошюры о семье относящиеся в целом к периоду “холодной войны†т. В результате заморский гость приходит к выводу что “ему не повезло что он нарвался на двух опытных агентов советской пропаганды†Крокодил 1947 № 29 8. Главным мотивом...
44537. Право матери солдата: инстинкт заботы или гражданский долг? 202.84 KB
  В связи с этим общественные объединения “солдатских матерей†представляют интересный объект для социологического анализа так как их деятельность затрагивает одновременно интересы семьи роли матери и становления принципов правового государства и развития гражданского общества в России. Социологические основания деятельности организаций “солдатских матерей†как в рамках гендерной теории так и теории военногражданских отношений и стали предметом научной рефлексии в представленной статье. Эмпирическим материалом в данной статье...