Руководство по языку B.Pascal 7


Глава 25. Компоновка с программами на языке ассемблера


С помощью директивы компилятора $L можно выполнить компонов- ку программ или модулей на языке Паскаль и процедур и функций на языке ассемблера. Из исходного файла на языке ассемблера можно с помощью ассемблера получить объектный файл (с расширением .OBJ). Используя компоновщик, несколько объектных файлов можно скомпоно- вать с программой или модулем. При этом используется директива компилятора $L.

В программе или модуле на языке Паскаль процедуры или функ- ции, написанные на языке ассемблера, должны быть описаны как внешние. Например:

function LoCase(Ch : Char): Char; external;

В соответствующем файле на языке ассемблера все процедуры или функции должны находиться в сегменте с именем CОDЕ или CSEG, или в сегменте, имя которого заканчивается на _TEXT, а имена внешних процедур и функций должны быть указаны в директивах PUВLIC.

Вы должны обеспечить соответствие процедуры или функции ее определению в Паскале. Это относится в типу ее вызова (ближний или дальний), числу и типу параметров и типу результата.

В исходном файле на языке ассемблера могут описываться ини- циализированные переменные, содержащиеся в сегменте с именем CONST или в сегменте, оканчивающемся на _DAТA, и неинициализиро- ванные переменные в сегменте с именем DATA или DSEG, или в сег- менте, имя которого оканчивается на _BSS. В исходном файле на языке ассемблера эти переменные являются частными, и на них нель- зя ссылаться из модуля или программы на Паскале. Они, однако, на- ходятся в том же сегменте, что и глобальные переменные Паскаля, и доступны через регистр сегмента DS.

На все процедуры, функции и переменные, описанные в модуле или программе на Паскале и на те из них, которые описаны в интер- фейсной секции используемых модулей, можно ссылаться из исходного файла на языке ассемблера с помощью директивы EXTRN. При этом обязанность обеспечить корректный тип в определении EXTRN также возлагается на вас.

Когда объектный файл указывается в директиве $L, Borland Pascal преобразует файл из формата перемещаемых объектных модулей (.OBJ) фирмы Intel в свой собственный внутренний формат перемеща- емых модулей. Это преобразование возможно лишь при соблюдении не- которых правил:




Начало  Назад  Вперед



Книжный магазин