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

13.7.1 Пакет System.Storage_Elements

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

Существует следующий определяемый языком библиотечный пакет:
package System.Storage_Elements is
pragma Pure(Storage_Elements);
type Storage_Offset is range определяется реализацией;
subtype Storage_Count is Storage_Offset range 0..Storage_Offset'Last;
type Storage_Element is mod определяется реализацией;
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
with Convention => Intrinsic;
function "+"(Left : Storage_Offset; Right : Address) return Address
with Convention => Intrinsic;
function "-"(Left : Address; Right : Storage_Offset) return Address
with Convention => Intrinsic;
function "-"(Left, Right : Address) return Storage_Offset
with Convention => Intrinsic;
function "mod"(Left : Address; Right : Storage_Offset)
return Storage_Offset
with Convention => Intrinsic;
-- Преобразование в/из целых чисел:
type Integer_Address is определяется реализацией;
function To_Address(Value : Integer_Address) return Address
with Convention => Intrinsic;
function To_Integer(Value : Address) return Integer_Address
with 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).
Параграф 15 был удалён.

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

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


Spec-Zone.ru

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