Дипломированных специалистов «Информатика и вычислительная техника»


Таблица Возврат аргументов из процедуры на ассемблере в программу на C/C++ Тип возвращаемого значения (C++)



Download 12,06 Mb.
Pdf ko'rish
bet204/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   200   201   202   203   204   205   206   207   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Таблица
Возврат аргументов из процедуры на ассемблере в программу на C/C++
Тип возвращаемого значения (C++)
Unsigned char
Char
Место записи результата
АХ
АХ


Связь ассемблера с языками высокого уровня 363
Тип возвращаемого значения (C++)
Unsigned short
Short
Unsigned int
Unsigned long
Long
Указатель near
Указатель far
Место записи результата
AX
AX
AX
AX
AX
DX:AX
DX:AX
AX
DX:AX
Листинг
Вызывающий модуль на C/C++
extern int
count);
{
int
int len=5;
int sum;
;
;
}
Листинг
Вызываемая процедура на ассемблере
100h
public
proc С near
массива - в сх
mov
;адрес массива - в si
add
[si]
аккумулятора с элементом массива
add
следующий элемент массива
loop cycl
ret ;возврат из функции, результат - в ах
endp
end
Обратите внимание на то, что листинг 15.19 содержит текст исходного файла
с расширением .срр, а листинг 15.21 — с расширением
Соответственно, сами ис-
ходные тексты в части организации межмодульного взаимодействия также разли-
чаются.
Дополнительную информацию о связи
вы найдете в [18].
Несколько слов об организации связи
для компилятора Visual
C/C++. Один из подходов к ее реализации — оформление ассемблерной програм-
мы в виде функции из библиотеки DLL. В этом случае можно уйти от «фирмен-
ных» проблем связи, возникающих из-за несовпадения форматов информации


364 Глава
Модульное программирование
в объектных файлах Borland и Microsoft, и писать функции TASM и MASM для
связи с программами Visual C/C++. Разработка библиотек DLL для ассемблер-
ных программ описана в [8].
Таким образом, мы рассмотрели связь модулей на языках высокого уровня с мо-
дулями на ассемблере. Это обсуждение не могло быть полным из-за потенциаль-
ной глубины самой проблемы. Материал данного раздела можно рассматривать
лишь как введение (хотя и достаточно подробное) в проблему межъязыковых от-
ношений. Главная цель этого первого шага — разобраться с принципами. Следую-
щим шагом в направлении реализации связи с ассемблером будет изучение доку-
ментации на конкретный язык высокого уровня для выяснения особенностей
настройки и требований конкретной среды программирования.
Итоги
8 Язык ассемблера содержит довольно мощные средства поддержки модульного
подхода в рамках структурного программирования. В языке ассемблера эта тех-
нология поддерживается в основном с помощью механизма процедур и, час-
тично, механизма макроподстановок.
Л Гибкость интерфейса между процедурами достигается за счет разнообразия
вариантов передачи аргументов в процедуру и возвращения результатов. Для
этого могут использоваться регистры, общие области памяти, стек, директивы
EXTRN и PUBLIC.
и Компилятор MASM имеет мощное средство для работы с процедурами в виде
директив PROTO и INVOKE. Их использование существенно облегчает вызов про-
цедур и передачу в них параметров. Сочетание возможностей этих директив
с возможностями директивы PROC позволяет организовывать корректный и бо-
лее надежный вызов процедур, перекладывая заботу о формировании кодов
пролога и эпилога на транслятор.
9. Средства TASM поддерживают связи между языками. Ключевой момент при
этом — организация обмена данными. Обмен данными между процедурами на
языках высокого уровня и ассемблера производится через стек. Для доступа
к аргументам используются регистр ВР или (что более удобно) директива ARG.
Можно доверить компилятору самому формировать коды пролога и эпилога,
указав язык в директиве MODEL. Кроме того, указание языка позволяет задей-
ствовать символические имена аргументов, переданных процедуре в стеке, вме-
сто прямого использования регистра
для доступа к ним. Тем самым повыша-
ются мобильность разрабатываемых программ и устойчивость их к ошибкам.
* Для возвращения результата в программу на языке высокого уровня необходи-
мо использовать конкретные регистры. Через них можно передать как сами дан-
ные, так и указатели.
и Довольно эффективным для организации связи
может быть под-
ход, при котором ассемблерный код оформляется в виде функций библиотек
DLL.



Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   200   201   202   203   204   205   206   207   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish