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

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

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

Синтаксис

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

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

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

Правила корректности

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

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

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

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

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

Примеры

Пример операции кода:
M : Mask;
процедура Set_Mask; псевдокоманда Inline(Set_Mask);
процедура 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