29361

Генерация объектного кода для тетрадной формы представления программ

Доклад

Информатика, кибернетика и программирование

последовательность команд загруженных в фиксированные ячейки памяти2. последовательность перемещенных машинных команд3. Предположим что сумматор может выполнять 4 арифметические операции а в целом система команд также включает еще 2 команды: загрузки сумматора из памяти и сохранение результатов в память.Систему команд такой машины можно представить следующим образом:При выполнении любой из первых двух команд содержимое источника копируется в приемник а при выполнении оставшихся 4 команд содержимое ячейки памяти не изменяется.

Английский

2013-08-21

99.5 KB

0 чел.

29) Генерация объектного кода для тетрадной формы представления программ.

Существует 3 формы объектного кода
1. последовательность команд, загруженных в фиксированные ячейки памяти
2. последовательность перемещенных машинных команд
3. программа на языке ассемблера
Объектный код в компиляторах (К) может формироваться как в двоичном виде, т.е. в виде кодов (1,2), так и в символьном виде (на языке ассемблера) (3). Пусть объектный код формируется в символьном виде. Чтобы показать процесс генерации кода, можно рассмотреть теоретическую вычислительную машину с одним сумматором и неограниченной памятью. Предположим, что сумматор может выполнять 4 арифметические операции (+,-,*,/), а в целом система команд также включает еще 2 команды: загрузки сумматора из памяти и сохранение результатов в память.
Для упрощения будем считать, что 
объектная программа формируется в символьном виде, а каждая переменная представляется своим именем, а не указателем, на соотв. ячейку памяти.
Систему команд такой машины можно представить следующим образом:

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

Список тетрад является наиболее удобной формой для генерации кода. Это объясняется тем, что тетрады в списке следуют в том порядке, в котором они должны выполняться, поэтому простейший алгоритм генерации кода заключается в поочередной замене каждой тетрады стандартной последовательностью машинных команд. Для рассматриваемых типов команд, такие последовательности для некоторых типов тетрад показаны в таблице.

Покажем на прмере как выполняется генерация кода рассмотренным методом

A:= (B+D+A)* (D+B+C)
Для него исходный список тетрад будет иметь следующий вид:

(+,B,D,T1)
(+,T1,A,T2)
(+,D,B,T3)
(+,T3,C,T4)
(*,T2,T4,T5)
(:=,T5, ,A).
После машинно-независимой оптимизации представленный список тетрад будет иметь следующий вид:

(+,B,D,T1) (1)
(+,A,T1,T2) (2)
(+,C,T1,T4) (3)
(*,T2,T4,T5) (4)
(:=,T5, ,A).
(5)

Полученный код является избыточным , т.к. содержит команды, являющиеся дублирующими отдельный действия по записи и чтению данных в памяти. Это объясняется тем, что каждая тетрада реализуется стандартной универсальной последовательностью команд, не учитывающая контекст.


 

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

61367. I like cooking 29.24 KB
  I am going to conduct your English lesson. - The theme of our lesson is «I like cooking». - We are going to learn some new words on the theme, to read, to write and to do exercises in your work books. In short, we have much work to do today.
61369. Развивать умения и навыки устной речи 16.53 KB
  Задачи: - Учить рассказывать о друзьях, используя фразы типа He is... He isn’t... He can...- Учить понимать на слух небольшое сообщение с опорой на рисунок. - Учить читать слова, которые не соответствуют правилам чтения (a friend, to, with, why, what).