Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Настраивающий загрузчик




Абсолютный загрузчик

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

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

Абсолютные загрузчики просты в реализации, но имеют ряд особенностей:

  • задачу распределения ОП выполняет программист (с помощью директивы установки начального значения ОП);
  • задачу перемещения программы выполняет компилятор;
  • связывание модулей - решается программистом (call 600);
  • загрузка программ в ОП и запуск на выполнение.

Достоинства:

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

Недостатки:

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

 

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

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

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

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

Такой загрузчик имеет ряд недостатков:

  • вектор переходов не вполне удобен для загрузки и сохранения внешних данных (расположенных в другом программном сегменте);
  • вектор переходов увеличивает длину объектной программы;
  • загрузчик работает с программными сегментами, но не облегчает доступ к сегментам данных, которые могут совместно использоваться несколькими подпрограммами.



Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 604; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.