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



Download 12,06 Mb.
Pdf ko'rish
bet197/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   193   194   195   196   197   198   199   200   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Внешний ассемблерный код
Так как вариант с использованием операторов inline и ассемблерных вставок обла-
дает довольно большими ограничениями, он не может быть признан универсаль-
ным, и для реализации сложных задач остается организация связи программ на
языках высокого уровня с ассемблерным кодом через внешние процедуры и функ-
ции. Возможны два вида такой связи — программа на языке высокого уровня вы-
зывает процедуру на ассемблере и наоборот. В данной главе ограничимся рас-
смотрением связи только в одну сторону, когда программа на языке высокого
уровня вызывает процедуру на ассемблере. Это наиболее часто используемый
вид связи.
Вспомним (см. главу 10) синтаксис директивы PROC компилятора TASM:
PROC
[расстояние]
Один из операндов — язык. Он служит для того, чтобы компилятор мог пра-
вильно организовать интерфейс (связь) между процедурой на ассемблере и про-
граммой на языке высокого уровня. Необходимость такого указания возникает
вследствие того, что способы передачи аргументов при вызове процедур различны
для разных языков высокого уровня.
TASM поддерживает несколько значений операнда язык. Ранее в табл. 15.1 для
некоторых из этих значений были приведены характерные особенности передачи
аргументов и соглашения о
какая процедура очищает стек — вызывающая или
вызываемая. Под направлением передачи аргументов понимается порядок, в кото-
ром аргументы включаются в стек, по сравнению с порядком их следования в вы-
зове процедуры. Для языка Pascal характерен прямой порядок включения аргу-
ментов в стек: первым в стек записывается первый передаваемый аргумент из
оператора вызова процедуры, вторым — второй аргумент и т. д. На вершине стека
после записи всех передаваемых аргументов оказывается последний аргумент. Для
языков C/C++, наоборот, характерен обратный порядок передачи аргументов. В со-
ответствии с ним в стек сначала включается последний аргумент из оператора
вызова процедуры (или функции), затем предпоследний и т. д. В конечном итоге
на вершине стека оказывается первый аргумент. Это делает возможной передачу
переменного количества параметров при вызове функций в языках C/C++. На-
верху стека оказывается первый параметр функции, значение которого — предо-
ставление информации о количестве аргументов в данном вызове функции. Что
же касается очистки стека, то понятно, что должны быть определенные договорен-


Связь ассемблера с языками высокого уровня 347
ности об этом. В языке Pascal эту операцию всегда совершает вызываемая проце-
дура, в языках C/C++ — вызывающая. При разработке программы с использова-
нием только одного языка высокого уровня об этом задумываться не имеет смыс-
ла, но если мы собираемся связывать несколько «разноязыких»
то эти
соглашения нужно иметь в виду.
Вспомните действия, которые мы проделывали для того, чтобы настроиться на
аргументы в стеке. Теперь, после указания языка, с программой на котором долж-
на осуществляться
все действия по настройке стека будут производиться
компилятором. При этом в текст процедуры он включит дополнительные коман-
ды входа в процедуру (пролог) и выхода из нее (эпилог), причем код эпилога мо-
жет повторяться несколько раз — перед каждой командой RET. Для значения
NOLANGUAGE и по умолчанию коды пролога и эпилога не создаются.
Для пояснения последних замечаний рассмотрим на конкретных примерах орга-
низацию связей между модулями на ассемблере и модулями наиболее популяр-
ных языков высокого уровня — С и Pascal. He стоит воспринимать нижеследую-
щие примеры как образец оптимальности — они лишь в учебных целях призваны
проиллюстрировать принципы организации межъязыковых связей.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   193   194   195   196   197   198   199   200   ...   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