3.1. Использование ассемблера в исходных кодах |
Вверх Предыдущий Следующий |
Существует два способа вставить код ассемблера в исходный текст Pascal. Первый способ простой – использование блока asm: Var Всё, что находится между asm и end – это блок, который вставляется как ассемблер в генерируемый код. В зависимости от режима ассемблера, компилятор выполняет замену имён их адресами. Второй способ – это использование функции или процедуры на языке ассемблера. Это делается путём добавления модификатора assembler в заголовок функции или процедуры: function geteipasebx : pointer; assembler; Также можно объявлять переменные в ассемблерной процедуре: procedure Move(const source; var dest; count:SizeInt);assembler; Компилятор резервирует место в стеке для этих переменных, для чего он вставляет некоторые команды. Учтите, что ассемблерное имя ассемблерной функции будет «искалечено» компилятором, то есть метка для этой функции будет иметь не такое имя, как указано при объявлении функции. Чтобы изменить это, нужно использовать модификатор Alias: function geteipasebx : pointer; assembler; [alias:'FPC_GETEIPINEBX']; Чтобы сделать функцию доступной в ассемблерном коде вне текущего модуля, нужно добавить модификатор Public: function geteipasebx : pointer;assembler; [public, alias:'FPC_GETEIPINEBX']; |