Ответы на вопросы по курсу Системное программирование
Рефераты >> Программирование и компьютеры >> Ответы на вопросы по курсу Системное программирование

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

До вызова подпрограммы в стек помещаются параметры – аргументы подпрограммы. Если передан не сам аргумент, а его адрес, то подпрограмма может изменить аргумент, в противном случае нет, т.к. по завершению работы подпрограммы стек очищается от аргументов. Отличие функций от процедур в том, что функции могут возвращать значения в вызывающую программу и их можно присваивать, например, какой-либо переменной. В действительности функция при возврате значений просто модифицирует регистры процессора, а ЯВУ по соглашению использует данные из этих регистров.

27. Способы передачи управления между модулями. Применение стека для организации связи в подпрограммах и функциях.

Переписать 26 без первых 2 предложений.

28. Параметры подпрограмм и функций. Способы передачи параметров – по значению, по ссылке, по имени.

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

Передача самого аргумента – передача параметра по значению. Передача адреса аргумента – передача по ссылке.

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

После выполнения пролога все параметры подпрограммы имеют отрицательное смещение от регистра BP. После выполнения пролога, как правило, в стеке выделяется место под локальные переменные.

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

29. Общая структура программного модуля для микропроцессора 80х86 – регистр BP, локальные переменные, глобальные переменные, параметры.

Обобщение 26, 28 (см. их для того, чтобы написать более подробно)

Регистр BP – относительно него с отрицательным смещением происходит адресация параметров после выполнения кода пролога в подпрограмме.

push bp

mov bp, sp

mov ax, word ptr [bp-2]; загрузка в ах аргумента

Локальные переменные – размещаются в стеке после вызова процедуры и выполнения кода пролога и удаляются перед завершением.

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

Параметры – могут передаваться по значению и по ссылке, размещаются в стеке перед вызовом процедуры, после выполнения кода пролога к ним возможно адресоваться через регистр BP, при завершении подпрограммы удаляются из стека.

30. Сегментация памяти. Типы программных сегментов, их использование в программах.

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

а) унитарная структура объектного модуля.

б) механизм внешних ссылок позволяет устанавливать связи между отдельными частями.

в) Способ объединения отдельных частей в общий исполняемый модуль. В современных системах основой 3-го способа и является сегментация.

Сегменты – бывают 4 видов.

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

Сегменты данных бывают 3 типов:

а) сегмент инициализированных данных – содержит данные статического типа с уже присвоенными значениями

б) сегмент стека – как правило, ничем не инициализирован

в) сегмент неинициализированных данных. В него попадают данные, не имеющие начального значения (BSS).

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

При использовании указателей в программах с не более чем одним сегментом данных и не более чем одним – кода достаточно 16-битового короткого указателя, т.к. значения сегментов фиксиованы и хранятся в регистрах DS и CS соответственно. Для большего количества сегментов требуются длинные указатели.

Существует несколько моделей памяти – способов распределения программ по сегментам. Поддержка переключения моделей памяти есть в компиляторах C и ASSEMBLER, в остальных, например Trubo Pascal, чаще всего используется модель памяти LARGE.

TINY (крошечная) – и данные и код в одном сегменте (64К). Короткие указатели. Полученный исполняемый модуль может быть пригоден для конверсии в формат типа COM.

SMALL (малая) – 2 сегмента – код и данные (128K).Короткие указатели.

COMPACT (компактная) – 1 сегмент кода и много сегментов данных. Первая модель, где нужны дальние указатели.

MEDIUM (средняя) – наоборот, много сегментов кода, 1 данных.

LARGE (большая) – много сегментов кода и данных. Наиболее распространена.

HUGE (огромная) – то же, что и LARGE + все указатели программно приводятся к виду длинных. Используется для построения очень больших программ.

В 32-битовом режиме модели памяти не нужны, т.к. размер сегмента достигает 4ГБ.

31. Особенности указателей в 80х86. Модели памяти.

См. 30.

32. Понятие среды ОС. Взаимодействие прикладной программы с ОС. Системные соглашения о связях.

Структура взаимодействия аппаратуры, системы и прикладного ПО.

Аппаратные средства ПРИЛОЖЕНИЕ

Операционная система

Прикладное ПО API


Страница: