Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей
|
Обратите внимание на суффикс @1б в идентификаторе имени процедуры.
Он указывает на общее количество байт, занимаемых параметрами (два
двойных слова в регистрах ЕСХ и EDX И два двойных слова в стеке).
В основной программе на Visual С++ для вызова этой процедуры необходимо
указать директиву fastcaii:
extern "С" int _fastcall Addlnts(int il, int i2, int i3, int i4);
Автор надеется, что читатель на этих примерах понял, как разрабатывается
интерфейс процедур на ассемблере с языками высокого уровня. На этом
этапе мы не работали с программами, передающими в качестве параметров
адреса переменных. Автор сознательно отнес эту тему к концу главы, где
будут рассматриваться более сложные примеры задач.
3.3. Использование процедур
на ассемблере в языках высокого уровня
Использование языка ассемблера для написания больших серьезных программ
— идея утопическая, если только вы не фанат этого языка и не располагаете
достаточным количеством свободного времени. Однако улучшение
показателей производительности программ на языках высокого уровня
невозможно без привлечения средств ассемблера. При этом улучшается
производительность программы и уменьшается размер программного кода.
В этой главе внимание акцентируется на совместном использовании ассемблера
и программ на Delphi 7 и Visual С++ .NET. Будут рассмотрены
вопросы разработки компиляции и сборки ассемблерных модулей с программами
на языках высокого уровня.
Языки высокого уровня обладают мощными средствами для написания ассемблерных
модулей прямо в исходном тексте программ при помощи встроенного
ассемблера. Встроенный ассемблер языков высокого уровня мы рассмотрим
подробнее в главе 6. Сейчас нас будет интересовать только
разработка отдельных модулей средствами автономных компиляторов ассемблера
и объединение (linking) таких модулей с программами на языках
высокого уровня. Рассмотрим вначале, каким образом такие программы могут
вызвать внешние процедуры.
Есть несколько вариантов объединения внешних модулей с языками высокого
уровня. Первый вариант — использование объектных модулей. Ассемблер
позволяет создавать объектные модули на этапе компиляции. Например,
если у нас есть файл с исходным текстом на ассемблере
myprog.asm, то после компиляции этого файла из командной строки:
tasm32 /ml myprog.asm
мы получим объектный модуль myprog.obj. Файл с расширением OBJ (объектный
модуль) можно использовать для объединения с основной
программой на языке высокого уровня. В процессе объединения объектный
модуль становится частью программы.
Второй вариант — создание из нашего объектного модуля библиотеки статической
или динамической компоновки. Библиотеки представляют собой
определенным образом скомпонованные модули, в которые могут входить
один или несколько модулей. Особенно удобны библиотеки динамической
компоновки DLL (dynamic-link library), позволяющие повторно использовать
процедуры и экономящие размер программы. Использование библиотек
будет рассмотрено подробно в главе 5.
А сейчас рассмотрим использование объектных модулей. В качестве
примера возьмем какую-либо процедуру или функцию на ассемблере,
которую можно было бы с пользой применить в программе, написанной на
Delphi или С + + .
<< Назад В начало Далее >> |
|