Сист. прогр. Ч2 (Лекции по СПО), страница 10

2018-01-12СтудИзба

Описание файла

Файл "Сист. прогр. Ч2" внутри архива находится в следующих папках: Лекции по СПО, сис пр об. Документ из архива "Лекции по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "Сист. прогр. Ч2"

Текст 10 страницы из документа "Сист. прогр. Ч2"

SUBROUT START

USING *,15

……….

BR 14

END

D начале подпрограммы нет необходимости использовать команду BALR, так как адрес начала программы уже загружен в регистр 15. Команда BR 14 представляет собой безусловный переход по адресу, содержащемуся в регистре 14, т. е. по адресу возврата в вызывающую программу. Ниже приводятся основные сведения, касающиеся механизма выполнения связей.

ПСЕВДОКОМАНДЫ СВЯЗИ ЯЗЫКА АССЕМБЛЕРА

Присвоение имен подпрограмме и точкам входа (псевдооперации START и ENTRY)

A START определяет подпрограмму А
ENTRY B1,B2,B3... .определяет ячейки

В1,.. .,Вп как дополнительные точки входа

Несколько точек входа используется в следующих случаях:

1. Общие части разных подпрограмм.

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

2. Совместная выборка связанных между собой подпрограмм, обеспечивающая удобство обращения к ним.

3. Лучший или более удобный доступ к общим базам данных.

ОБРАЩЕНИЕ К ПОДПРОГРАММАМ (ПСЕВДООПЕРАЦИЯ EXTRN)

Символы в языке ассемблера делятся на внутренние и внешние, Внешними являются такие, значения которых ассемблеру неизвестны, но будут обеспечены загрузчиком.

EXTRN Е1.Е2 и т. д.

определяет El, Е2 и т. д. как внешние символы, которые используются в адресных константах.

Пример. Макрокоманда CALL BETA имеет следующее рас­ширение:

EXTRN BETA

…….

L 15.АВЕТА
BALR 14,15

……….



ABETA DC A(BETA)

НАСТРАИВАЮЩИЕ ЗАГРУЗЧИКИ

Чтобы избежать необходимости повторного ассемблирования всех подпрограмм при внесении изменения в одну из них, а также для того, чтобы освободить программиста от задач распределения памяти и осуществления связи подпрограмм, были разработаны так называемые настраивающие загрузчики. Примером настраивающего загрузчика может служить загрузчик подпрограмм в двоично-символической форме (BSS-загруз-чик), который использовался в вычислительных машинах IBM7094, IBM 1130, GE 635 и UNIVAC 1108. Этот загрузчик допускает наличие в программе нескольких программных сегментов и только одного сегмента данных (общего сегмента). Ассемблер транслирует каждый программный сегмент независимо и передает загрузчику текст и информацию, касающуюся перемещений и перекрестных ссылок между сегментами.

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

Для каждой исходной программы ассемблер в качестве выходной информации вырабатывает текст (результат трансляции программы), предваряемый вектором переходов, содержащим адреса имен подпрограмм, к которым имеются обращения в исходной программе. Например, если подпрограмма вычисления квадратного корня (SQRT) является первой по порядку вызываемой подпрограммой, то первая ячейка вектора переходов будет содержать символическое имя SQRT. Предложение, содержащее вызов подпрограммы SQRT, будет транслироваться в команду перехода, указывающую адрес элемента вектора переходов, связанного с подпрограммой SQRT.

Ассемблер, кроме того, будет передавать загрузчику дополнительную информацию, такую, как общая длина программы и длина вектора переходов. После загрузки в память текста программы и вектора переходов загрузчик будет загружать каждую подпрограмму, указанную в векторе переходов. Затем он в каждый элемент вектора переходов поместит команду перехода к соответствующей подпрограмме. Таким образом, вызов подпрограммы SQRT приведет к выполнению команды перехода к первой ячейке вектора переходов, в которой будет находиться команда перехода к вызываемой подпрограмме.

Такая схема загрузки с двухступенчатой передачей управления часто используется в вычислительных машинах с фиксированным форматом команд и непосредственной адресацией. Например, если бы команды формата RX Системы 360 имели вид;.



Код операции.

R1

Х2

А2

844 16

где А2 обозначало бы 16-разрядный двоичный адрес операнда, это был бы формат с непосредственной адресацией. Такой формат может быть использован в том случае, если общий объем адресуемой памяти не превышает 2'6 = 65536 байтов, как это и имело место для большинства ранних вычислительных машин и остается справедливым для многих современных минимашин. В связи с тем, что при перемещении программ, использующих форматы команд с непосредственной адресацией, необходимо вносить изменения в адресную часть каждой команды, проблема перемещения программ для машин с непосредственной адресацией оказывается намного сложнее, чем для машин Системы 360. При отсутствии базовых регистров, подобных используемым в Системе 360, эта проблема часто решается путем

использования «битов переместимости». С каждой командой или полем адреса ассемблер связывает специальный двоичный разряд. Если соответствующее поле адреса подлежит настройке, бит устанавливается в единицу, в противном случае он устанавливается в нуль. Эти индикаторы переместимости, почему-то известные больше как биты переместимости, помещаются в объектную программу.

Наконец, содержимое слов вектора переходов было заменено на команды перехода к соответствующим подпрограммам. Таким образом, BSS-загрузчик автоматически выполняет все перечисленные выше функции загрузчика (распределение, связывание, перемещение, загрузку).

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

Рассматриваемая схема загрузки имеет ряд недостатков. Во-первых, вектор переходов не вполне удобен для загрузки и сохранения внешних данных (данных, расположенных в другом программном сегменте).

Во-вторых, вектор переходов увеличивает размер объектной программы. Наконец, BSS-загрузчик работает с программными сегментами, но не облегчает доступ к сегментам данных, которые могут совместно использоваться несколькими подпрограммами. Последний недостаток преодолевается во многих загрузчиках двоично-символических подпрограмм введением общего сегмента данных, который часто обозначают COMMON. Это средство обычно реализуется путем расширения поля битов переместимости до двух битов на полуслово. Если биты имеют конфигурацию 01, полуслово перемещаемо по отношению к программному сегменту, если 10, оно перемещаемо по отношению к адресу единственного общего сегмента данных. Если конфигурация битов 00 или 11, полуслово не требует модификации содержимого при перемещении программы.

НЕПОСРЕДСТВЕННО СВЯЗЫВАЮЩИЕ ЗАГРУЗЧИКИ

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

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

Структура непосредственно связывающего загрузчика будет рассмотрена в этой главе. В этом разделе будет представлен общий формат выхода ассемблера при использовании рассматриваемой схемы загрузки на примере Системы 370. В то время как формат сам по себе может быть в некотором смысле произвольным, информация, которую ассемблер должен передать загрузчику, должна иметь вполне определенное содержание. Ассемблер (транслятор) должен передать загрузчику следующую информацию с каждым сегментом программы или данных:

1. Длину сегмента.

2. Список всех символов сегмента, к которым возможно обращение из других сегментов, и их относительные адреса внутри сегмента.

3. Список всех символов, не определенных в сегменте, к которым есть обращения внутри сегмента.

4. Информацию о расположении адресных констант в сегменте и описание того, каким образом, должны изменяться их значения.

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

Рассматриваемая структура схемы загрузки с непосредственным связыванием аналогична применяемой стандартной схеме загрузки Системы 370. Ассемблер вырабатывает объект­ную колоду, состоящую из карт четырех типов: ESD, TXT, RLD и END. Карты словаря внешних символов (ESD) содержат информацию обо всех символах, которые определены в этой про­грамме, но к которым возможно обращение извне, и обо всех символах, к которым имеются обращения в данной программе, но которые определены где-то вне этой программы. Карты текста (ТХТ) содержат действительные объектные коды оттранслированной программы. Карты словаря перемещаемых символов (RLD) содержат информацию о ячейках программы, содержимое которых зависит от расположения программы в. памяти. Для таких ячеек ассемблер должен обеспечить информацию, позволяющую загрузчику скорректировать их содержимое. Карта END отмечает конец объектной программы и задает адрес, с которого должно начинаться выполнение программы, если она не вызывается другой программой, а является «главной».

Карты ТХТ содержат коды ассемблированной программы.

Формат и использование этих карт аналогичны применяемым для абсолютного загрузчика.

Карты RLD содержат следующую информацию:

1. Адрес каждой константы, которая должна изменяться при перемещении программы.

2. Указание на символ, значение которого определяет вели­чину изменения константы.

3. Операцию, с помощью которой вносится изменение.

Первая RLD-карта нашего примера содержит: число 48 в качестве относительного адреса константы, значение которой подлежит изменению; знак плюс, указывающий, что некоторая величина должна быть прибавлена к значению константы, и поле символа, определяющее, что к относительному адресу 48 .должно быть прибавлено значение внешнего символа JOHN. Относительное значение символа JOHN равно 0. Абсолютное значение будет определено в процессе загрузки программы.

Вторая карта RLD указывает на относительный адрес 60 константы, подлежащей изменению. Поле символа определяет, что к относительному адресу 60 должно быть прибавлено значение внешнего символа SUM. Хотя абсолютное значение адреса символа SUM ассемблеру не известно, позднее правильное значение будет обеспечено загрузчиком.

Процесс корректировки адресных констант для внутренних символов, таких, как TABLE, обычно называют перемещением, в то время как процесс определения содержимого адресных констант для внешних символов, таких, как SUM, обычно называется связыванием. По существу RLD-карты используются в обоих случаях, отсюда они и получили свое название карт словаря перемещения и связывания. Читатель может сравнить рассмотренный механизм с методами, используемыми в двоично-символическом настраивающем загрузчике, рассмотренном ранее.

ДРУГИЕ СХЕМЫ ЗАГРУЗКИ- ОБЪЕДИНИТЕЛИ, СВЯЗЫВАЮЩИЕ ЗАГРУЗЧИКИ, ПЕРЕКРЫВАЮЩИЕ ЗАГРУЗЧИКИ, ДИНАМИЧЕСКИЕ ОБЪЕДИНИТЕЛИ

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

Одним из недостатков непосредственно связывающего загрузчика в том виде, как он был рассмотрен нами ранее, является необходимость при каждом выполнении программы повторно выполнять функции распределения памяти, перемещения, связывания и загрузки всех необходимых подпрограмм. Поскольку таких подпрограмм могут быть десятки и даже сотни, особенно в тех случаях, когда используются такие вспомогательные подпрограммы, как подпрограмма для вычисления квадратных корней и т. п., такой процесс загрузки может требовать затраты очень большого времени. Кроме того, хотя загрузчик и занимает меньше места, чем ассемблер, все-таки он требует выделения значительного места в памяти. Эти проблемы можно разрешить путем выполнения загрузки с помощью двух самостоятельных программ: объединителя и загрузчика модуля.

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

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