Язык:
Русский
English
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;
Ада
Для создания встроенных процедур и функций имеется pragma Inline. Встроенная функция не обязана быть написана в машинных кодах.
Кроме того, в компиляторе GNAT помимо обычных ассемблерных вставок есть мощные ассемблерные шаблоны. Применяя pragma Inline к ассемблерным шаблонам, можно добиться того, что любое расширение набора инструкций можно объявить как набор функций и процедур, как если бы они были предобъявленными (intrinsic). В других языках программирования необходима специальная поддержка со стороны компилятора.