Ада-95. Компилятор GNAT



         Такси киев заказать самое дешевое такси.

Атрибуты типов определенные в реализации компилятора GNAT - часть 3


procedure K is ...

procedure L; for L'Address use K'Address; pragma Import (Ada, L);

После чего вызов L ожидается как результат вызова K. В Ada 83, где не предусматривалось ссылочных типов для подпрограмм, это был широко используемый прием для получения эффекта косвенного вызова.

GNAT реализует показанное в примере выше использование атрибута 'Address, и подобные приемы работают правильно.

Однако, в некоторых случаях, полезно иметь возможность получить значение адреса начала сгенерированного для подпрограммы кода. На некоторых архитектурах в этом нет необходимости, также как и в использовании приема показанного в примере выше. Например, значение 'Address может быть ссылкой на дескриптор подпрограммы, а не на саму подпрограмму.

Атрибут 'Code_Address, который может быть использован только для подпрограмм, всегда возвращает адрес начала сгенерированного для указанной подпрограммы кода, который может соответствовать или не соответствовать значению которое возвращает атрибут 'Address.

   

Standard'Default_Bit_Order

 - 

где Standard - единственно возможный префикс.

Предусматривает значение System.Default_Bit_Order

как значение 'Pos

(0 для High_Order_First, и 1 для Low_Order_First).

Это используется для построения описания Default_Bit_Order

в пакете System.

   

U'Elaborated

 - 

где U: имя модуля.

Возвращаемое значение имеет тип Boolean и индицирует была ли выполнена элаборация указанного модуля.

Этот атрибут первоначально был предназначен для внутреннего использования генерируемым кодом для проверки динамической элаборации, но он также может быть использован в программах пользователя.

Возвращаемое значение всегда будет True, как только выполнена элаборация всех модулей.

   

P'Elab_Body

 - 

где P: имя программного модуля.

Возвращает объекты для соответствующей процедуры элаборации для выполнения элаборации тела указанного модуля.

Атрибут используется в главной процедуре элаборации редактора связей (binder) и, обычно, не должен использоваться в любом другом контексте.




Содержание  Назад  Вперед