Turbo Assembler 3.0. Руководство пользователя


Утилита-преобразователь H2ASH


Модули Си и С++ в программе обычно совместно используют оп- ределение типов и структур данных. Это делается с помощью включения небольших файлов (файлов-заголовков), которые содержат определения типов и структуры данных, используемые в нескольких модулях. Файл заголовка в Си/С++ имеет обычно имя с расширением .H. Ассемблируемые модули обычно имеют файлы заголовков с расшире- нием .ASH (или .INC).

Программы, содержащие модули, написанные на Си/С++ и модули Турбо Ассемблера, должны иметь возможность совместного определе- ния типов и структур данных. Этому способствует утилита H2ASH.

Утилита H2ASH преобразует файлы заголовков Си/С++ в файлы заголовков языка Ассемблера. Как и исходные файлы с расширением .H полученные в результате файлы с расширением .ASH сами не со- держат программу. Если для вызова H2ASH вы используете следующий синтаксис:

H2ASH [[параметры] <имя_файла> [<имя_файла> .]]

где каждое поле "имя_файла" задает имя конвертируемого файла за- головка. Утилита H2ASH предполагает, что преобразуемый файл имеет по умолчанию расширение .H. Для каждого обрабатываемого файла со- ответствующий выходной файл имеет расширение .ASH.

"Параметры" соответствуют параметрам командной строки компи- лятора Borland C++, а также специфическим параметрам утилиты H2ASH (которые соответствуют параметрам -q Турбо Ассемблера). См. "Руководство пользователя Bоrland C++" и оперативный справочник, где можно найти описания данных параметров.

Утилита H2ASH преобразует следующие конструкции:

- все основные типы языка Си;

- типы ENUM (в типы ENUM TASM);

- #IFDEF (в эквивалентные IFDEF Ассемблера);

- #DEFINE (в определения EQU);

- структуры и объединения (в структуры и объединения Турбо Ассемблера);

- структуры с битовыми полями (в записи Ассемблера RECORD);



- определения TYPEDEF (в TYPEDEF Ассемблера);

- классы без множественного наследования и без виртуальных базовых классов;

- элементы классов;

- переопределения операций.

Утилита-преобразователь имеет следующие ограничения:


- весь преобразуемый код игнорируется, выполняемый код не генерируется;

- директивы #INCLUDE в выходных файлах полностью расширяются;

- в выводе Ассемблера может возникнуть конфликт имен, так как правила области действия С++ существенно отличаются от правил Ассемблера (помочь здесь может использование режима Ideal);

Преобразователь H2ASH не только облегчает организацию интер- фейса между С/С++ и языком Ассемблера (с максимальной производи- тельностью). H2ASH автоматически преобразует описания базовых классов С++ в эквивалентные объектные описания Ассемблера и опре- деляет "нескорректированные" имена методов. При записи базового класса на языке Ассемблера мы рекомендуем вам использовать следу- ющую процедуру:

1. Написать описание класса в файле заголовка языка Си.

2. Включить описание файла заголовка Си во все классы-потом- ки и модули на языке Си, которые используют этот базовый класс.

3. Используйте преобразователь H2ASH для файла заголовка с целью получения объектного файла заголовка Ассемблера (этот процесс можно автоматизировать с помощью формирую- щего файла).

4. Включите объектный файл заголовка Ассемблера в модуль, где записаны методы на языке Ассемблера.

Более подробную информацию об утилите H2ASH можно найти в текстовых файлах документации на дисках Турбо Ассемблера.

Назад | Содержание | Вперед


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