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

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

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

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

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

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

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

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

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

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

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


Spec-Zone.ru

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