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

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

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

Синтаксис

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

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

Ожидается, что квалифицированное_выражение будет любого типа.

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

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

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

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

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

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

Примеры

Пример операции кода:
M : Mask;
процедура Set_Mask
с Inline;
процедура Set_Mask есть
использовать System.Machine_Code; --предполагается, что «с System.Machine_Code;» указан где-то выше
начать
SI_Format'(Code => SSM, B => M'Base_Reg, D => M'Disp);
-- Base_Reg и Disp — определяемые реализацией атрибуты
конец Set_Mask;


Spec-Zone.ru

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