inline (зарезервированное слово)

Язык:
Русский
English


Встроенные операторы и директивы позволяют вам вставлять команды машинного кода непосредственно в код программы или модуля.

Синтаксис

 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). В других языках программирования необходима специальная поддержка со стороны компилятора.

Смотри также

Тэги: inline
| G+
Код для вставки: :: :: :: ::
Поделиться: // //