Inline "..."
Встроенные операторы и директивы позволяют вам вставлять команды машинного кода непосредственно в код программы или модуля.
Объявление
InLine (команда/команда/.../команда)
Замечания
Когда используется как оператор, встроенные команды вставляются непосредственно в генерируемый код.
Когда используется как директива при объявлении процедуры или функции, встроенные команды вставляются в генерируемый код, каждый раз при вызове процедуры или функции.
Встроенная команда состоит из идентификатора константы или переменной, необязательно предваренных указателем размера "<" или ">".
Идентификатор переменной может сопровождаться знаком + (плюс) или - (минус) и константой, для определения смещения от адреса переменной.
Встроенная команда генерирует 1 байт кода, если это константа в диапазоне от 0 до 255; иначе она генерирует слово (2 байта).
Вы можете использовать операторы "<" и ">", для отмены автоматического выбора размера:
- < - всегда генерирует байт,
- > - всегда генерирует слово.
Пример
(* Встроенный оператор *)
Procedure FillWord(Var Dest; Count : Word; Data : Word);
Begin
Inline(
$C4/$7E/<Dest/ (* les di, Dest[bp] *)
$8B/$4E/<Count/ (* mov cx, Count[bp]*)
$8B/$46/<Data/ (* mov ax, Data[bp] *)
$FC/ (* cld *)
$F3/$AB); (* rep stosw *)
End;