Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Интерфейс Турбо Ассемблера и Borland C++ - Программирование от RIN.RU
Интерфейс Турбо Ассемблера и Borland C++



Вызов из Borland C++ функций Турбо Ассемблера


Обычно C++ и Ассемблер совместно используют путем написания отдельных модулей целиком на C++ или Ассемблере, компиляции модулей С++ и ассемблирования модулей Ассемблера с последующей совместно компоновкой этих раздельно написанных модулей. Это показано на Рисунке.


Цикл  компиляции,  ассемблирования  и  компоновки Borland C++, Турбо Ассемблера и компоновщика TLINK


Выполняемый файл получается из "смеси" модулей С++ и Ассемблера. Этот цикл можно запустить командой:


bcc имя_файла_1.cpp имя_файла_2.asm


которая указывает Borland C++, что нужно сначала компилировать файл имя_файла_1.СPP в файл имя_файла_1.OBJ, а затем вызвать Турбо Ассемблер для ассемблирования файла имя_файла_2.asm в имя_файла_2.obj, и, наконец, вызвать компоновщик TLINK для компоновки файла имя_файл_1.OBJ и имя_файл_2.OBJ в файл имя_файла.EXE.


Раздельную компиляцию полезно использовать для программ с большим объемом кода на Ассемблере, так как это позволяет использовать все возможности Турбо Ассемблера и программировать на языке Ассемблера в чисто ассемблерном окружении без ключевых слов asm, дополнительного времени на компиляцию и связанными с С++ непроизводительными затратами при работе со встроенным Ассемблером.


За раздельную компиляцию приходится платить следующую цену: программист, работающий с Ассемблером, должен вникать во все детали организации интерфейса между С++ и кодом Ассемблера. В то время как при использовании встроенного Ассемблера Borland C++ сам выполняет спецификацию сегментов, передачу параметров, ссылку на переменные С++ и т.д., отдельно компилируемые функции Ассемблера должны все это (и даже более) делать самостоятельно.


В интерфейсе Турбо Ассемблера и Borland C++ есть два основных аспекта. Во-первых, различные части кода С++ и Ассемблера должны правильно компоноваться, а функции и переменные в каждой части кода должны быть доступны (если это необходимо) в остальной части кода. Во-вторых, код Ассемблера должен правильно работать с вызовами функций, соответствующих соглашениям языка С++, что включает в себя доступ к передаваемым параметрам, возврат значений и соблюдение правил сохранения регистров, которых требуется придерживаться в функциях С++.


Давайте теперь приступим к изучению правил компоновки программ Турбо Ассемблера и Borland C++.


Основные моменты в интерфейсе Турбо Ассемблера и Borland C++


Чтобы скомпоновать вместе модули Borland C++ и Турбо Ассемблера, должны быть соблюдены следующие три пункта:


  1. В модулях Турбо Ассемблера должны использоваться соглашения об именах, принятые в Borland C++.

  2. Borland C++ и Турбо Ассемблер должны совместно использовать соответствующие функции и имена переменных в форме, приемлемой для Borland C++.

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




Здесь ничего не говориться о том, что в действительности делают модули Турбо Ассемблера. Пока мы коснемся только основных моментов, обеспечивающих разработку функций Турбо Ассемблера, совместимых с С++.


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7  8  9 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Начало работы на Турбо Ассемблере

Использование директив и параметров

Общие принципы программирования

Объектно-ориентированное программирование

Использование выражений и значений идентификаторов

Директивы выбора процессора

Использование моделей памяти программы и сегментации

Определение типов данных

Задание и использование счетчика адреса

Описание процедур

Управление областью действия идентификаторов

Определение данных

Расширенные инструкции

Использование макрокоманд

Использование условных директив

Интерфейс с компоновщиком

Генерация листинга

Интерфейс Турбо Ассемблера с Турбо Паскалем

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь