Четвертый Borland C++ и его окружение

       

Компиляция со встроенным ассемблером


Существует два способа, с помощью которых Borland C++ может

обрабатывать в вашем коде Си или С++ операторы встроенного ассемблера. Во-первых, Borland С++ может преобразовывать код Cи или

C++ непосредственно в код ассебмлера, а затем передавать его TASM

для генерации файла .OBJ. Во-вторых, Borland С++ для включения

ваших операторов ассебмлера непосредственно в поток инструкций

компилятора может использовать встроенный ассебмлер (BASM).

Для обработки операторов ассебмлера, встроенных в программы

Си и С++ можно указать параметр компилятора -B. По умолчанию -B

вызывает TASM или TASM32. Это можно переопределить с помощью параметр -Exxx, где xxx - другой ассебмлер. Если указывается параметр -B, компилятор сначала генерирует файл ассебмлера, а затем

вызывает TASM. Если включить в исходные код программы оператор

#pragma inline, то TASM будет вызываться и без параметра -B.

16-разрядный компилятор Borland С++ использует BASM, что

позволяет ассемблировать встроенный код ассебмлера самому компилятору, а не TASM. Этот внутренний ассебмлер компилятора делает

все то же, что и TASM, но имеет следующие ограничения:

  • не может использовать макрокоманды ассебмлера;
  • не обрабатывает инструкции 80386/80486;
  • не допускает синтаксис режима Ideal;
  • позволяет использовать только ограниченный набор директив

    ассебмлера.

  • Так как BASM не является полным ассебмлером, некоторые конструкции этого языка он не воспринимает. В этом случае Borland С++

    будет выводить сообщение об ошибке. При этом у вас есть две возможности: упростить программный код встроенного ассебмлера или

    использовать параметр -B для вызова TASM. Однако TASM может не

    идентифицировать место ошибки, так как номер строки исходного кода теряется.



    Содержание раздела