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

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

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

Синтаксис

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

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

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

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

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

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

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

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

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

Примеры

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


Spec-Zone.ru

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