Н. Джехани - Язык Ада (1988) (1160771), страница 116
Текст из файла (страница 116)
Эти атрибуты описаны ниже. Для любого объекта, программного модуля, метки или входа Х: Х'АООЙЕ88 Вырабатывает адрес первого кванта памяти, отведеннои под Х. Для подпрограммы, пакета, задачного модуля или метки это значение ссылается на машинный код, связанный с соответствующим телом или оператором. Для входа, для которого задан спецификатор адреса, это значение ссылается на соответствующее аппаратное прерывание. Значение этого атрибута принадлежит типу А00ЯЕ88, опредепенному в пакете 8УЗТЕМ.
Для любого типа или подтипа Х или для любого объекта Х: Х'8!ЕЕ Примененный к объекту вырабатывает число битов, отводимых в памяти для размещения объекта. Примененный к типу или подтипу вы. рабатывает минимальное число битов, необходимое реализации для размещения любого возможного объекта этого типа или подтипа. Значение этого атрибута имеет тип универсальный целый.
Если префиксом атрибута является функция, то атрибут понимается как атрибут функции (а не как результат вызова функции). Если тип префикса — ссылочныи тип, то атрибут понимается как атрибут префикса (а не указанного объекта: атрибуты этого объекта могут быть записаны с префиксом, оканчивающимся зарезервированным словом а)1). Глава 73 Для любого компонента С записи Н: Н.С 'РОЗ!Т!ОН Вырабатывает величину смещения первого кванта памяти, занятого полем С, относительно первого кванта памяти, занятого записью Н. Величина смещения измеряется числом квантов. Значение этого атрибута принадлежит универсальному целому типу.
Н.С'ЕУНЗТ В!Т Вырабатывает величину смещения первого бита, занятого полем С, относительно первого кванта памяти. Величина смещения измеряется числом битов. Значение этого атрибута имеет универсальный целый тип. Н.С'! АЗТ В!Т Вырабатывает величину смещения последнего бита, занятого полем С, относительно первого кванта памяти, занятого С. Величина смеще. ния измеряется числом битов. Значение этого атрибута имеет унн. версальный целый тип. Для любого ссылочного типа или подтипа Т: Т'ЗТОНАОЕ 8!2Е Вырабатывает общее число квантов памяти, выделенных для набора, связанного с базовым типом Т. Значение атрибута имеет универсаль. ный целый тип. Для любого задачного типа или объекта задачного типа Т: Т'ЗТОНАОЕ 3!2Е Вырабатывает число квантов памяти, выделенных для каждой активизации задачи типа Т или активизации объекта Т задачного типа.
Значение этого атрибута имеет универсальный целый тип. Примечание. Для объекта Х задачного типа атрибут Х'8!2Е вырабатывает число разрядов, используемых для размещения объекта Х; атрибут Х'ЗТОНАЗЕ 8!2Е вырабатывает число квантов памяти, выделенных дпя активизации задачи, указанной Х. Для формального параметра Х в случае передачи параметра копированием Х'АООНЕЗЗ вырабатывает адрес локальной копии; в случае передачи параметра ссылкой Х'АООНЕ88 вырабатывает адрес фактического параметра. Ссылки: активизация 9.3, атрибут 4Л.4, базовый тип 3.3, вход 9.5, задача 9, задачный модуль 9, задачный объект 9.2, задачный тип 9.2, квант памяти 13.7, компонента З.З, метка 5.1, набор 3.8, объект 3.2, объект именуемого типа 3.7, оператор 5, пакет 7, передача параметров 6.2, подпрограмма 6, подтнп 3.3, предопределенный пакет 8УЗТЕМ 13.7, предопределенный тип АООНЕЗЗ 13.7, программный модуль 6, спецификатор адреса 13.5, ссылочный подтип 3.8, осы.
лочный тип 3.8, тело задачи 9.1, тело пакета 7.1, тело подпрограммы 6.3, тип 3.3, универсальный целый тип 3.5.4, фактический параметр 6.2, формальный параметр 6.1, 6.2. 13.7.3. АТРИБУТЫ ПРЕДСТАВЛЕНИЯ ВЕЩЕСТВЕННЫХ ТИПОВ Для каждого вещественного типа ипи подтипа Т определены нижеследующие машинно. зависимые атрибуты, не связанные с модельными числами. Использующие эти атрибуты программы могут получить некоторую дополнительную информацию о характеристиках числового типа (см. Равд. 4.5.7 о правилах определения точности операций с вещественными операндами). Для обеспечения переносимости программ должна быть обеспечена известная осторожность в использовании таких машинно-зависимых атрибутов. Атрибуты, применимые к плавающим и фиксированным типам; Т'МАСНЛЧЕ НОО!408 Вырабатывает значение ТНОЕ, если каждая предопределенная арифметическая операция над значениями базового типа Т ли.
бо возвращает точный результат, либо осуществляет округление. В противном случае вырабатывает значение ЕАЕЗЕ. Значение этого атрибута имеет предопределенный тип ВООЕЕАМ. Т'МАСН!ЙЕ ОЧЕНЕЕОИ18 Вырабатывает значение ТВОЕ, если каждая предопределенная операция над значениями базового типа Т либо возвращает точный результат, либо возбуждает исключение !ЧОМЕН!С ЕННОН при перевыполнении (см.
4.5.7Х! в противном случае вырабатывает значение ЕАЕЗЕ. Значение этого атрибута имеет предопределенный тип ВООЕЕАМ. 457 Сле яка и л аеяеияя я особенности, завися ие от алязв ия Следующие атрибуты дают характеристики машинного представления значений плавающего типа в терминах канонической формы, определеннои в равд. 3.5.7: Т'МАСН(НЕ ВАО(Х Вырабатывает значение основания системы счисления, используемого в машинном представлении базового типа Т. Значение этого атрибута имеет универсальный целын тип. Вырабатывает число цифр в мантиссе машинного представле- ния базового типа Т.
(Цифра — это расширенная цифра из диапазона О .. Т'МАСН(НЕ ВАС(Х вЂ” 1.) Значение этого атрибу. та имеет универсальный целый тип. Т'МАСН(НЕ МАНТ(ЗЗА Т'МАСН(МЕ- ЕМАХ Вырабатывает наибольшее значение порядка в машинном представлении базового типа Т. Значение этого атрибута имеет универсальный целый тип. Вырабатывает наименьшее (наибольшее по модулю отрица- тельное) значение порядка в машинном представлении базово. го типа Т.
Значение этого атрибута имеет универсальный це- лый тип. Т'МАСН(НЕ ЕМ(н РМАСН(НЕ ЯАО(Х с* (РМАСН(НЕ ЕМ!Н - 1! Ссылки: арифметическая операция 4.5, атрибут 4.1.4, базовый тип 3.3, вещественный тип 3.5.6, исключение НЦМЕБЧС ЕВЙОЙ 11.1, логическое значение ТВ((Е 3.5.3, логическое значение РАЕЗЕ 3.5.3, модельное число 3.5.6, основание системы счисления 3.5.7, плавающий тип 3.5.7, подтип 3.3, предопределенный логический тип 3.5.3, предопределенная операция 3.3.3, тип 3.3, универсальный целый тип 3.5.4, фиксированный тип 3.5.9, числовой тип 3.5. 13.а ВСТАВКИ МАВ(ИННЫХ КОДОВ Машинные коды могут быть включены в программу с помощью вызова процедуры, после.
довательность операторов которой состоит из операторов кода. оператор кода:;= обозначение типа'агрегат записи; Оператор кода допустим только в последовательности операторов тела процедуры. Если в теле процедуры содержатся операторы кода, то в нем недопустимы никакие формы операторов, кроме операторов кода (помеченных или нет); из описаний допустимы только спецификаторы использования; недопустимы обработчики исключения (комментарии и прагмы допустимы как обычно]. Каждая машинная команда записывается как агрегат именуемого типа, агрегат определяет эту команду. Базовый тип обозначения типа в операторе кода должен быть описан в предопределенном пакете МАСН(НЕ СОВЕ; этот пакет должен быть упомянут в спецификаторе контекста, помещаемом для компилируемого модуля, в который входит оператор кода.
Реализация не обязана обеспечивать такой пакет. В реализации допустимо наложение дополнительных ограничений на допустимые в операторах кода агрегаты записи. Например, можно требовать, чтобы выражения в агрегатах были статическими. Реализация может определить машинно. зависимые прагмы, специфицирующие соглашения об использовании регистров и вызовов. Такие прагмы должны быть описаны в приложении Р. Пример: М: МАЗК; р«ссевчл ВЕТ МАЗК; ргеерл (МОНЕ(ЗЕТ МАЕК(; ргосмыл ЗЕТ МАЗК Ь исе МАСН(МЕ СООЕ; Примечание. В большинстве машин наибольшее представимое в машине число типа Т равно Г'МАСН(НЕ йАО(Х ° . (Р'МАСН(НЕ ЕМ(Н вЂ” 1! а наименьшее положительное представимое число в машине равно Гяввя ТЭ ь в(п 8! РОНМАТ'(СООЕ => ВВМ, В => ЬГВАВЕ йЕО.
О => М'О(ВР); — м'ВАВе йеб впд ьто(ВР— это заданные реализацией предопределенные атрибуты впд; Ссылки: агрегат именуемого типа 4.3.1, библиотечный модуль 10.1, допустим 1.6, именуемый тип 3.7, комментарий 2.7, компилируемый модуль 10.1, обработчик исключения 11.2, оператор 5, пакет 7, помеченный оператор 5.1, последовательность операторов 5.1, прагма 2.8, прагма (МИМЕ 6.32, применйм 10.1.1, процедура 6.6.1, спецификатор использования 84, специфика. тор совместности 10.1.1, статическое выражение 4.9, тело процедуры 6.3, элемент описания 3.9. 13.9. СВЯЗЬ С ДРУГИМИ ЯЗЫКАМИ Из программы, написанной на языке Ада, может быть вызвана подпрограмма, написанная на другом языке; все связи с этими подпрограммами обеспечиваются через параметры и результаты функций.
Для каждой такой подпрограммы должна быть задана следующая прагма; рга9гпа (МТЕЯЕАСЕ (имя языка, имя подпрограммы); Допустимо использование совмещенных имен подпрограмм. Эта прагма допустима на ме. сте элемента описания и должна применяться к подпрограмме, описанной ранее в этом же разделе описаний или спецификации пакета. Прагма также допустима и для библиотечного модуля; в этом случае прагма должна помещаться после описания подпрограммы, но до любо. го следующего компилируемого модуля. Прагма задает другои язык (и тем самым соглашения о вызовах] и сообщает компилятору, что для такой подпрограммы будет задан объектный мо.
дуль. Для таких подпрограмм недопустимо задание тела (даже в форме следа тела), так как его команды написаны на другом языке. Эту возможность не обязательно обеспечивают все реализации. Реализация может нано. жить ограничения на допускаемые формы и места параметров и вызовов. Пример: р Вава РОНТ 08 Ь ЫПСКОП ВОНТ (Х: РЬОАТ( Свана РсОАТ; (ппскоп ЕХР (Х: РЬОАТ! гапке РЬОАТ: ря пасв рсаВиш (МТЕНРАСЕ(РОЯТНАМ, ЗОНТ); ртаВпм (МТЕНРАСЕ(РОНТЯАМ, ЕХР); вяд ГОНТ 08; Примечание.