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

H.3.1 Директива Reviewable

Данная директива предписывает реализации предоставлять информацию для облегчения анализа и проверки объектного кода программы, в частности для определения времени выполнения и использования памяти, а также для установления соответствия между исходным и объектным программами.

Синтаксис

Форма директивы pragma Reviewable выглядит следующим образом:
pragma Reviewable;

Правила после компиляции

Директива Reviewable — это конфигурационная директива. Она применяется ко всем compilation_unit включённым в раздел.

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

Реализация должна предоставить следующую информацию для любого модуля компиляции, к которому применяется данная директива:
  • Где остаются проверки, генерируемые компилятором, во время выполнения;
  • Идентификация любого конструкта с определённой в языке проверкой, которая распознаётся до времени выполнения как гарантированно приведущая к ошибке при выполнении (даже если генерация проверок во время выполнения была подавлена);
  • Для каждого чтения скалярного объекта, идентификация чтения как «известно, что инициализирован» или «возможно, неинициализирован», независимо от того, применяется ли pragma Normalize_Scalars;
  • Где неявно вызываются вспомогательные процедуры выполнения;
  • Список объектного кода, включая:
  • Машинные инструкции с относительными смещениями;
  • Местоположение каждого объекта данных в течение его жизненного цикла;
  • Соответствие с исходной программой, включая идентификацию кода, сгенерированного по каждой декларации и оператору.
  • Идентификация каждого конструкта, для которого реализация обнаруживает возможность ошибочного выполнения;
  • Для каждой подпрограммы, блока, задачи или другого конструкта, реализованного путём резервирования и последующего освобождения области в стеке во время выполнения, идентификация длины фиксированной части области и указание того, зарезервирована ли переменная часть области в стеке или в динамически управляемой области памяти.
Реализация должна предоставить следующую информацию для любого раздела, к которому применяется директива:
  • Список объектного кода всего раздела, включая код инициализации и завершения, а также компоненты системы выполнения, а также идентификацию тех инструкций и данных, которые будут перемещены во время загрузки;
  • Описание модели выполнения, относящейся к разделу.
Реализация должна предоставить информацию о потоках управления и данных как внутри каждого модуля компиляции, так и между модулями компиляции раздела.

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

Реализация должна предоставить вышеуказанную информацию в читаемом человеком и машиночитаемом формате и должна задокументировать последний для облегчения дальнейшей обработки автоматизированными инструментами.
Списки объектного кода должны быть предоставлены как в символическом формате, так и в соответствующем числовом формате (например, шестнадцатеричном или восьмеричном).
ПРИМЕЧАНИЯ
6 Порядок разработки библиотечных модулей будет задокументирован даже в отсутствие pragma Reviewable (см. 10.2).


Spec-Zone.ru

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