Главная » Просмотр файлов » сист пр об ч 3

сист пр об ч 3 (1085772), страница 2

Файл №1085772 сист пр об ч 3 (Лекции по СПО) 2 страницасист пр об ч 3 (1085772) страница 22018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)



Имя

Основание

Формат

Точность

(в битах)

Тип памяти

Адрес

С0SТ

ВINARУ

FIХЕD

31

SТАТIС

0

RАТЕ

ВINАRУ

FIХЕD

31

SТАТIС

4

SТАRТ

ВINАRУ

FIХЕD

31

SТАТIС

8

FINISH

ВINАRУ

FIХЕD

31

SТАТIС

12

Рис. 8.8. Таблица идентификаторов.

8.1.4. ЗАДАЧА № 3 —РАСПРЕДЕЛЕНИЕ ПАМЯТИ

В какое-то время мы должны отвести для нашей программы необходимую память. В нашем примере нужная для этого ин­формация содержится в операторе DECLARE:

DECLARE ( COST , RATE , START , FINISH ) FIXED


BINARY ( 31 ) STATIC ;


Фаза интерпретации заполняет строки таблицы так, как изображено на рис. 8.8.

Программа распределения памяти просматривает таблицу идентификаторов и назначает память для каждого скаляра. В случае двоичных чисел с фиксированной точкой длиной в 32 бита, первый относительный адрес равен 0, второй — 4 и т. д. Абсолютный адрес остается неизвестным до загрузки. Фаза рас­пределения памяти предполагает, что во время загрузки будет отводиться четыре 32-битовых слова (31 бит для числа и 1 для знака). Компилятор использует эту относительную адресацию в последующих фазах для правильных присваиваний.

Аналогично назначается временная память для промежуточ­ных результатов, заполняющих матрицу (например, М1, М2, МЗ, М4, М5, М6, М7).



С0SТ

S

3 1

RАТЕ

I

SТАRТ

G

FINISН

N

Биты: О 31

Для языков, подобных ФОРТРАНу, где память распреде­ляется во время компиляции, это довольно простая процедура. Нужно просмотреть таблицу, найти основание, формат, точность и выделить нужное количество памяти. Однако в языке ПЛ/1 только статическая память (SТАТIС) может распределяться по­добным образом. Три других типа памяти (АUТОМАТ1С — авто­матическая, СОNТRОLLЕD — управляемая и ВАSЕD— базиро­ванная) нельзя распределять описанным способом.

Информация об автоматических, управляемых или базиро­ванных переменных должна включаться в объектный модуль и быть доступной во время выполнения программы. Для таких операторов, как РRОСЕDURЕ, ВЕGIN и АLLОСАТЕ, компиля­тор генерирует объектный код, резервирующий необходимую память под такие переменные. Аналогично операторы END, RETURN и FRЕЕ должны генерировать объектный код для осво­бождения динамической памяти. Это приводит к тому, что по­добные операторы должны иметь соответствующие строки в ма­трице, обеспечивающие генерацию нужного кода.

Доступ к такого рода памяти затруднен. Обычно компилятор даже не знает, сможет ли он назначить необходимую память, поскольку ее может просто не хватить. Обращение к таким дан­ным осуществляется с использованием регистров, содержимое которых может изменяться во время выполнения программы с целью адресации динамически распределяемых данных.

8.1.5. ЗАДАЧА № 4 — ГЕНЕРАЦИЯ КОДА

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

В одной из схем генерирования объектных кодов предусмат­ривается таблица (таблица продуцирования кода), определяю­щая для каждого типа операции в матрице соответствующие объектные коды (рис, 8,9), Фаза генерации кода просматривает

матрицу и для каждой ее строки генерирует коды, определяемые в таблице, с использованием значений операндов, указанных в этой строке матрицы для дальнейшего уточнения кодов. Этот процесс показан на рис. 8.10, при этом используются определе­ния кодов, приведенные на рис. 8.9. Один из путей реализации такой схемы состоит в том, что операции в матрице представ­ляются как макрокоманды, операнды — как фактические пара­метры, а продуцирующая таблица — как макроопределения.

Стандартные кодовые определения для —, *, +, =

- L 1,& операнд 1

S 1,& операнд 2

ST 1, M&N

* L 1,& операнд 1

M 1,& операнд 2

ST 1, M&N

+ L 1,& операнд 1

A 1,& операнд 2

ST 1, M&N

= L 1,& операнд 1

ST 1,& операнд 2

Рис. 8.9. Кодовые определения — продукции для операций — , *, + , =.

При рассмотрении рис. 8.10 возникают следующие вопросы:

  1. Насколько целесообразно генерировать коды непосред­ственно из матрицы? Строки 1 и 4 нашей матрицы идентичны, что приводит к формированию лишних кодов.

  2. Используем ли мы машину, имеющуюся в нашем распо­ряжении, наилучшим образом? Строки 12 (SТ1, М4) и 13 (L 1, М4) просто лишние. Они никак не меняют результата вы­числений. Кроме того, мы использовали только 2 из 16 общих регистров и только один тип команд (RХ) из пяти допустимых в Системе 360.

  3. Можем ли мы генерировать непосредственно коды ма­шинного языка? В примере используется язык ассемблера. Что будет, если один из операндов в матрице окажется меткой оператора, который еще не сгенерирован?

Первые два вопроса касаются оптимизации. Первый относит­ся к целесообразности использования матрицы как промежуточ­ной формы (машинно-независимой), а второй — к оптимально­сти машинного кода (машинно-зависимой форме). Компилятор сначала решает проблемы, поднятые в первом вопросе, посколь­ку, после того как будут исключены лишние коды, не надо будет тратить время на оптимизацию исключенных кодов.

Матрица Генерируемый код

L 1,START

1 - START FINISH S 1,FINISH

ST 1,M1

L 1,RATE

2 * RATE M1 M 0,M1

ST 1,M2

L 1,=F’2’

3 * 2 RATE M 0,RATE

ST 1,M3

L 1,START

4 - START FINISH S 1,FINISH

ST 1,M4

L 1,M4

5 - M4 100 S 1,=F’100’

ST 1,M5

L 1,M3

6 * M3 M5 M 0,M5

ST 1,M6

L 1,M2

7 + M2 M6 A 1,M6

ST 1,M7

L 1,M7

8 = COST M7 ST 1,COST

Рис. 8.10. Пример генерации кода.

8.1.5.1. Оптимизация (машинно-независимая)

Проблема, связанная с вопросом 1, является примером од­ного из возможных типов машинно-независимой оптимизации. Когда какое-либо подвыражение появляется в одном и том же операторе более одного раза (общее подвыражение), мы можем исключить все дублируемые строки матрицы, модифицируя все ссылки к исключенным строкам так, чтобы ссылки были только к оставшейся копии этого подвыражения (рис. 8.11). Результи­рующие коды, показанные в средней колонке на рис. 8.12, пред­ставляют собой улучшенный вариант кодов, приведенных на рис. 8.10.

Другими примерами машинно-независимой оптимизации яв­ляются;

Матрица с общим Матрица после исключения

подвыражением общего подвыражения

1 - START FINISH 1 - START FINISH

2 * RATE M1 2 * RATE M1

3 * 2 RATE 3 * 2 RATE

4 - START FINISH 4

5 - M4 100 5 - M1 100

6 * M3 M5 6 * M3 M5

7 + M2 M6 7 + M2 M6

8 = COST M7 8 = COST M7

Рис. 8.11. Исключение общих подвыражений.

1. Выполнение во время компиляции операций, у которых операндами являются константы.

Оптимизируемая матрица



1 - SТАRТ FINISН





2 * RАТЕ М1







3 * 2 RАТЕ



4

5 - M1 100





6 * M3 M5





7 + М2 M6





8 = М7 COST





Первая версия

L 1,SТАRТ

S 1,FINISН

SТ 1,М1

L 1,RАТЕ

М 0,М1

SТ 1,М2

L 1,=F’2’

M 0,RATE

ST 1,M3

L 1,M1

S 1,=F’100’

SТ 1,М5

L 1,М3

M 1,M5

SТ 1,М5

L 1,М2

A 1,М6

ST 1,М7

L 1,М7

SТ 1,СОЗТ

  1. Байтов





Улучшенный код

L 1,SТАRТ

S 1,FINISН М1 → R1



L 3,RАТЕ

MR 2,1 M2→ R3





L 4,=F’2’

M 4,RATE M3→ R4



S 1,=F’100’ M5→ R1







MR 4,1 M6→ R4





AR 2,4 M7→ R2



ST 2,COST

36 байтов











L

  1. Вынесение из цикла вычислений, содержащих неизменяе­мые операнды.

  2. Использование свойств булевых выражений для миними­зации их вычислений.

Все это более детально рассматривается во второй части дан­ной главы. Сейчас важно понять, что машинно-независимая оп­тимизация матрицы возможна и что логически она должна пред­шествовать генерации кода. Такой процесс называется фазой оптимизации и он логически отделен от генерации кода.

8.1.5.2. Оптимизация (машинно-зависимая)

Проблемы, связанные с вопросом 2, могут быть хорошо про­иллюстрированы сравнением двух возможных версий кода, гене­рируемого из приведенного выше примера оптимизированной матрицы.

На рис. 8.12 изображена матрица, из которой ранее было исключено общее подвыражение (М4). Для каждой строки ма­трицы показан код, сгенерированный с использованием опера­торов, определенных на рис. 8.9. В третьей колонке приведен улучшенный код, в том смысле, что он занимает меньшую па­мять и работает быстрее благодаря более целесообразной смеси команд. Как же нам удалось получить эту более эффективную версию?

  1. Мы лучше использовали временную память, заняв столько из 16 общих регистров, сколько смогли, и не запоминали про­межуточные результаты, пока это не было необходимо. Это уменьшило числа команд загрузки и записи в память с 14 до 5.

  2. Когда это возможно, мы использовали более короткие и быстрые команды (МR вместо М).

В этом примере машинно-зависимой оптимизации были уменьшены в два раза как размер памяти, необходимой для программы, так и время выполнения объектной программы. Ма­шинно-зависимая оптимизация обычно проводится в процессе генерации кодов. В действительности мы можем расширить пре­дыдущую схему генерации кодов, используя макропроцессор с псевдокомандами условной компиляции. Таким путем можно из­менять генерируемые команды в соответствии с доступностью и содержимым временной памяти. Такая схема включала бы ма­шинно-зависимую оптимизацию в фазу генерации кодов.

Характеристики

Тип файла
Документ
Размер
426,11 Kb
Материал
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6358
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее