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

13.7.1 Пакет System.Storage_Elements

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

Существует следующий пакет библиотеки, определяемый языком:
package System.Storage_Elements is
pragma Preelaborate(System.Storage_Elements);
type Storage_Offset is range implementation-defined;
subtype Storage_Count is Storage_Offset range 0..Storage_Offset'Last;
type Storage_Element is mod implementation-defined;
for Storage_Element'Size use Storage_Unit;
type Storage_Array is array
(Storage_Offset range <>) of aliased Storage_Element;
for Storage_Array'Component_Size use Storage_Unit;
-- Арифметика адресов:
function "+"(Left : Address; Right : Storage_Offset)
return Address;
function "+"(Left : Storage_Offset; Right : Address)
return Address;
function "-"(Left : Address; Right : Storage_Offset)
return Address;
function "-"(Left, Right : Address)
return Storage_Offset;
function "mod"(Left : Address; Right : Storage_Offset)
return Storage_Offset;
-- Преобразование в/из целых чисел:
type Integer_Address is implementation-defined;
function To_Address(Value : Integer_Address) return Address;
function To_Integer(Value : Address) return Integer_Address;
pragma Convention(Intrinsic, "+");
-- ...и так далее для всех подпрограмм, определённых языком, объявленных в этом пакете.
end System.Storage_Elements;
Storage_Element представляет элемент хранения. Storage_Offset представляет смещение в элементах хранения. Storage_Count представляет количество элементов хранения. Storage_Array представляет собой непрерывную последовательность элементов хранения.
Integer_Address — это подтип целого числа (с знаком или модульный). To_Address и To_Integer преобразуют взад и вперёд между этим типом и Address.

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

Storage_Offset'Last должен быть больше или равен Integer'Last или максимальному возможному смещению хранения, в зависимости от того, что меньше. Storage_Offset'First должно быть <= (-Storage_Offset'Last).

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

Пакет System.Storage_Elements может быть объявлен чистым.

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

Операции в System и его дочерних элементах должны отражать семантику целевой среды как можно точнее. Например, на большинстве машин арифметика адресов имеет смысл «обертывания» вокруг. Операции, которые не имеют смысла, должны вызывать Program_Error.


Spec-Zone.ru

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