Тема 3.9 Объектные модули и библиотеки
Объе́ ктный мо́ дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки. Объектные файлы представляют собой блоки машинного кода и данных с неопределенными адресами ссылок на данные и процедуры в других объектных модулях, а также список своих процедур и данных. Компоновщик собирает код и данные каждого объектного модуля в итоговую программу, вычисляет и заполняет адреса перекрестных ссылок между модулями. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при исполнении программы, после её загрузки в память. Программист генерирует объектный код с помощью компилятора или ассемблера. Например, в Linux компилятор GNU Compiler Collection будет генерировать файлы с расширением. o, которые используют формат ELF. При компиляции в Windows создаются файлы с расширением. obj, использующие формат COFF. Затем компоновщик используется для объединения объектного кода в одну исполняемую программу или библиотеку, при необходимости извлекая предварительно скомпилированные системные библиотеки. Существует множество различных форматов объектных файлов; изначально у каждого типа компьютеров был свой уникальный формат, но с появлением Unix и других портативных операционных систем некоторые форматы, такие как ELF и COFF, были определены и использовались в разных типах систем. Один и тот же формат может использоваться как для ввода, так и для вывода компоновщика и, таким образом, в качестве формата библиотеки и исполняемого файла. Некоторые форматы могут содержать машинный код для разных процессоров, при этом правильный вариант выбирается операционной системой при загрузке программы[1].
30. Совместное использование языка ассемблера и Си, Ассемблер +Паскаль
Чтобы построить проект в Microsoft Visual Studio Express 2010, совместив в нем файлы, написанные на разных языках программирования, выполняем следующие действия. Создание проекта начинается с выбора меню Файл -> Создать -> Проект. вызывающая процедура на языке C++; вызываемая процедура на языке ассемблера. Для этого выбираем по правой кнопке мыши Файлы исходного кода -> Добавить -> Создать элемент и задаем имя файла программы на языке С++. Второй добавляемый файл исходного кода будет иметь расширение. asm, которое необходимо указать явно. Набираем код программы для файлов вызывающей и вызываемой процедур соответственно на C++ и ассемблере.
Результат выполнения программы Работа с аргументами вещественного типа При вызове функции с аргументами вещественного типа конфигурация проекта ничем не отличается от описанной выше. Для передачи аргументов необходимо указать их тип.
Возвращаемое вещественное значение по умолчанию располагается в вершине стека сопроцессора st(0). Пример. Найти разность двух чисел #include < iostream> ; Функция на ассемблере . 586 Назад
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|