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

H.4 Ограничения безопасности и защиты

Данный пункт определяет ограничения, которые могут быть использованы с pragma Restrictions (см. 13.12); они облегчают демонстрацию корректности программы, позволяя использовать настроенные версии систем выполнения.

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

Следующие ограничения, такие же, как в D.7, применяются в этом приложении: No_Task_Hierarchy, No_Abort_Statement, No_Implicit_Heap_Allocation, Max_Task_Entries равно 0, Max_Asynchronous_Select_Nesting равно 0, и Max_Tasks равно 0. Последние три ограничения проверяются до выполнения программы.
В этом приложении применяются следующие дополнительные ограничения.
Ограничения, связанные с задачами:
No_Protected_Types
Нет объявлений защищённых типов или защищённых объектов.
Ограничения, связанные с управлением памятью:
No_Allocators
Нет случаев использования аллокатора.
No_Local_Allocators
Аллокаторы запрещены в подпрограммах, обобщённых подпрограммах, задачах и телах входов.
No_Unchecked_Deallocation
Семантическая зависимость от Unchecked_Deallocation запрещена.
Immediate_Reclamation
За исключением памяти, занятой объектами, созданными аллокаторами и не освобождёнными с помощью неявного освобождения, любая зарезервированная во время выполнения память для объекта немедленно освобождается, когда объект больше не существует.
Ограничения, связанные с исключениями:
No_Exceptions
Оператор raise и обработчик исключений запрещены. Не генерируются никакие определённые языком проверки во время выполнения; однако разрешается проверка во время выполнения, выполняемая автоматически аппаратным обеспечением.
Другие ограничения:
No_Floating_Point
Не разрешается использование предопределённых типов с плавающей точкой и операций, а также объявление новых типов с плавающей точкой.
No_Fixed_Point
Не разрешается использование предопределённых типов с фиксированной точкой и операций, а также объявление новых типов с фиксированной точкой.
No_Unchecked_Conversion
Семантическая зависимость от предопределённого обобщённого Unchecked_Conversion запрещена.
No_Access_Subprograms
Объявление типов доступа к подпрограммам не разрешено.
No_Unchecked_Access
Атрибут Unchecked_Access запрещён.
No_Dispatch
Использование T'Class запрещено для любого (меченного) подтипа T.
No_IO
Семантическая зависимость от каких-либо библиотек (модулей) Sequential_IO, Direct_IO, Text_IO, Wide_Text_IO или Stream_IO запрещена.
No_Delay
Оператор Delay и семантическая зависимость от пакета Calendar запрещены.
No_Recursion
В процессе выполнения подпрограммы не вызывается та же подпрограмма.
No_Reentrancy
Во время выполнения подпрограммы задачей, ни одна другая задача не вызывает ту же подпрограмму.

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

Если реализация поддерживает pragma Restrictions для определённого аргумента, то за исключением ограничений No_Unchecked_Deallocation, No_Unchecked_Conversion, No_Access_Subprograms и No_Unchecked_Access, соответствующее ограничение применяется к системе выполнения.

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

Если указан pragma Restrictions(No_Exceptions), реализация должна документировать последствия всех конструкций, где проверки, определённые языком, по-прежнему выполняются автоматически (например, проверка переполнения, выполняемая процессором).

Ошибка выполнения

Выполнение программы является ошибочным, если был указан pragma Restrictions(No_Exceptions), и возникают условия, при которых сгенерированная проверка во время выполнения, определённая языком, потерпит неудачу.
Выполнение программы является ошибочным, если указан pragma Restrictions(No_Recursion), и подпрограмма вызывается в процессе собственного выполнения, или если указан pragma Restrictions(No_Reentrancy), и во время выполнения подпрограммы задачей другая задача вызывает ту же подпрограмму.


Spec-Zone.ru

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