Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12. Модульное программирование на ассемблере. С...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
947.2 Кб
Скачать

47

Московский государственный технический университет

имени Н.Э. Баумана

Факультет Информатика и системы управления

Кафедра Компьютерные системы и сети

«УТВЕРЖДАЮ»

Заведующий кафедрой ИУ-6

_________ Сюзев В.В.

Г.С. Иванова, Т.Н. Ничушкина

Модульное программирование на ассемблере. Связь разноязыковых модулей

Методические указания к лабораторным работам и домашним заданиям

по курсу Системное программное обеспечение

МОСКВА 2009

Содержание

ВВЕДЕНИЕ 3

1 МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ 4

1.1 Процедура ассемблера. Описание процедуры 4

1.2 Связь процедур ассемблера по управлению 4

1.3 Организация передачи данных в процедурах на ассемблере 6

1.3.1 Передача параметров через регистры 6

1.3.2 Передача данных путем прямого обращения к памяти 7

1.3.3 Передача параметров через таблицу адресов 11

1.3.4 Передача параметров в стеке 13

1.4 Особенности реализации рекурсивных программ в ассемблере 16

1.5 Директивы описания процедур 21

1.5.1 Директива заголовка процедуры 21

1.5.2 Директива описания локальных переменных 22

1.5.3 Директива объявления прототипа процедуры 22

1.5.4 Директива вызова процедуры 22

2 Связь разноязыковых модулей в Windows 25

3.1 Основные правила организации связи разноязыковых модулей 25

2.1 Конвенции о связи модулей. Правила передачи параметров 25

2.2 Правила формирования внутренних имен подпрограмм и глобальных данных 26

2.3 Сохранение регистров и модель памяти 27

3 Основные принципы взаимодействия Delphi Pascal и ассемблера 27

3.1 Соглашения о передаче управления между модулями 27

3.2 Соответствие форматов данных 28

3.3 Передача параметров по значению и ссылке. Возврат результатов функций 29

3.4 Компоновка модулей 31

3.5 Примеры 32

4 ВзаимодействиЕ C++ и ассемблера 36

4.1 Основные принципы 36

4.1.1 Передача параметров и возвращение результатов функции 36

4.1.2 Внутренний формат данных С++ 37

4.1.3 Определение глобальных и внешних имен 37

4.2 Особенности взаимодействия Visual C++ и ассемблера 38

4.2.1 Компоновка модулей 38

4.2.2 Примеры 39

4.3 Особенности взаимодействия Borland С++ и ассемблера 43

4.3.1 Правила формирования внутренних имен 43

4.3.2 Компоновка модулей 43

4.3.3 Примеры 43

5 Отладка разноязыковых модулей в Delphi и Visual С++ 45

Введение

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

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

- как согласовать представление данных, описанных в различных языках;

- как организовать передачу управления в модуль и получение его обратно;

- как передать данные в модуль и получить обратно результаты его работы;

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]