Spec-Zone.ru › Ada 2005
Справочное руководство Ada 2005

C.1 Доступ к машинным операциям

Этот пункт описывает правила доступа к машинным инструкциям изнутри программы Ada.

Требования к реализации

Реализация должна поддерживать вставки машинного кода (см. 13.8) или встроенные подпрограммы (см. 6.3.1) (или и то, и другое). Должны быть предоставлены зависящие от реализации атрибуты, позволяющие использовать сущности Ada в качестве операндов.

Рекомендации по реализации

Поддержка машинного кода или встроенных функций должна обеспечивать доступ ко всем операциям, обычно доступным программистам ассемблера для целевой среды, включая привилегированные инструкции, если таковые имеются.
Интерфейсные директивы (см. Приложение B) должны поддерживать интерфейс с ассемблером; по умолчанию ассемблер должен быть связан с идентификатором соглашения Assembler.
Если сущность экспортируется в ассемблерный язык, то реализация должна разместить ее по адресу, доступному для адресации, и должна гарантировать, что она сохраняется процессом компоновки, даже если она не ссылается из кода Ada. Реализация должна предполагать, что любой вызов подпрограммы машинного кода или ассемблера разрешен для чтения или обновления каждого объекта, указанного как экспортированный.

Требования к документации

Реализация должна документировать накладные расходы, связанные с вызовом подпрограмм машинного кода или встроенных функций по сравнению с полностью встроенным вызовом и обычным вызовом вне строки.
Реализация должна документировать типы пакета System.Machine_Code, используемого для вставки машинного кода, и атрибуты, которые следует использовать вставках машинного кода для ссылок на сущности Ada.
Реализация должна документировать соглашения о вызове подпрограмм, связанные с идентификаторами соглашений, доступными для использования с интерфейсными директивами (по крайней мере, Ada и Assembler), включая сохранение регистров, распространение исключений, передачу параметров и возврат значения функции.
Для экспортируемых и импортируемых подпрограмм реализация должна документировать отображение между строкой Link_Name, если она указана, или обозначением Ada, если нет, и внешним именем ссылки, используемым для такой подпрограммы.

Рекомендации по реализации

Реализация должна гарантировать, что вызов встроенных и подпрограмм машинного кода сопряжен с минимальными или нулевыми накладными расходами.
Рекомендуется предоставлять встроенные подпрограммы для удобного доступа к любым машинным операциям, которые обеспечивают особые возможности или эффективность и которые не доступны иначе через конструкции языка. Примеры таких инструкций включают:
  • Атомарные операции чтения-модификации-записи — например, проверка и установка, сравнение и обмен, декремент и проверка, добавление/удаление из очереди.
  • Стандартные числовые функции — например, sin, log.
  • Операции обработки строк — например, перевод и проверка.
  • Операции с векторами — например, сравнение вектора с порогами.
  • Прямые операции с портами Ввода/Вывода.


Spec-Zone.ru

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