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

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;
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 определяется реализацией;
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 и его дочерних элементах должны в наибольшей степени отражать семантику целевой среды. Например, на большинстве машин арифметика адресов имеет смысл «перезаписи». Операции, которые не имеют смысла, должны вызывать Program_Error.


Spec-Zone.ru

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