Spec-Zone.ru › Ada 2005
Справочник Ada 2005

13.8 Вставки машинного кода

Вставка машинного кода может быть осуществлена вызовом подпрограммы, последовательность_операторов которой содержит операция_кодаы.

Синтаксис

операция_кода ::= квалифицированное_выражение;
Операция операция_кода допускается только в обрабатываемой_последовательности_операторов тела тела_подпрограммы. Если тело тела_подпрограммы содержит операции операция_кодаы, то в этом теле тела_подпрограммы единственно допустимой формой оператора является оператор операция_кода (меченый или нет), единственными допустимыми декларативными элементами являются оператор_использованияы, и не допускается обработчик исключений (комментарийы и псевдонимы допускаются как обычно).

Правила разрешения имен

квалифицированное_выражение должно быть любого типа.

Правила легальности

квалифицированное_выражение должно быть типа, объявленного в пакете System.Machine_Code.
Оператор операция_кода должен появляться только в области действия оператор_использования который упоминает пакет System.Machine_Code.

Статическая семантика

Содержимое библиотечного пакета System.Machine_Code (если предоставлено) определяется реализацией. Значение операция_кодаы определяется реализацией. Обычно каждое квалифицированное_выражение представляет собой машинную инструкцию или директиву ассемблера.

Разрешения реализации

Реализация может ввести ограничения на операция_кодаы. Реализация не обязана предоставлять пакет System.Machine_Code.
ПРИМЕЧАНИЯ
15 Реализация может предоставить определяемые реализацией псевдонимы, задающие соглашения о регистрах и вызовах.
16 Функции машинного кода освобождаются от правила, требующего оператора возврата. На самом деле, операторы возврата запрещены, поскольку допускаются только операция_кодаы.
17 Внутренние подпрограммы (см. 6.3.1, «Правила соответствия») также могут использоваться для вставки машинного кода. Интерфейс к ассемблерному языку может быть реализован с использованием возможностей в Приложении B, «Интерфейс с другими языками».

Примеры

Пример операции кода:
M : Маска;
процедура Установить_Маску; псевдоним Встраивать(Установить_Маску);
процедура Установить_Маску есть
используя System.Machine_Code; -- предполагается, что «с System.Machine_Code;” появляется где-то выше
начинать
SI_Формат'(Код => SSM, B => M'Базовый_Регистр, D => M'Смещение);
-- Базовый_Регистр и Смещение являются определяемыми реализацией атрибутами
конец Установить_Маску;


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API