Дескриптор данных

редактировать

В computing, дескриптор данных представляет собой структуру, содержащую информацию, которая описывает данные.

Дескрипторы данных могут использоваться в компиляторах в качестве структуры программного обеспечения во время выполнения на таких языках, как Ada или PL / I, или как аппаратная структура в некоторых компьютерах, таких как большие системы Burroughs.

Дескрипторы данных обычно используются во время выполнения для передачи информации аргумента вызываемым подпрограммам. HP OpenVMS и Multics имеют общесистемные независимые от языка стандарты для дескрипторов аргументов. Дескрипторы также используются для хранения информации о данных, которые полностью известны только во время выполнения, например, динамически выделяемый массив.

Примеры

Следующий дескриптор используется IBM Enterprise PL / I для описать строку символов :

+ -------- + -------- + -------- + -------- + | desc | строка | | флаги | | тип | тип | (res) | | + -------- + -------- + -------- + -------- + | максимальная длина строки | | | + -------- + -------- + -------- + -------- + байт 0 1 2 3
  • 'тип описания' 2, чтобы указать, что это дескриптор элемента, а не дескриптор массива или структуры.
  • «строковый тип» указывает, что это символ или битовая строка с переменной или неизменной длиной. 2 указывает на неизменяющуюся (фиксированную длину) символьную строку.
  • '(res)' - зарезервированный байт, не используемый для символьных строк.
  • 'flags' указывает кодировку строки, EBCDIC или ASCII, а также кодирование длины переменной строки.
  • «максимальная длина строки» - это фактическая длина строки для неизменяющихся строк, или максимальная длина для различных строк.

Вот источник дескриптора массива от Multics. Определения включают структуру для информации базового массива и структуру для каждого измерения. (Multics работает в системах с 36-битными словами).

dcl 1 выровненный на основе массива, 2 бита типа узла (9) без выравнивания, 2 зарезервированных бита (34) без выравнивания, 2 фиксированных числа_размеров (7) без выравнивания, 2 фиксированных_значения_измерений (7) без выравнивания, 2 фиксированных границ элементов (3) unaligned, 2 size_units fixed (3) unaligned, 2 offset_units fixed (3) unaligned, 2 interleaved bit (1) unaligned, 2 c_element_size fixed (24), 2 c_element_size_bits fixed (24), 2 c_virtual_origin fixed (24), 2 element_size ptr) не выровнен unaligned, 2 element_size_bits ptr unaligned, 2 virtual_origin ptr unaligned, 2 symtab_virtual_origin ptr невыровненных, 2 symtab_element_size ptr невыровненных, 2 границы ptr невыровненные, 2 element_descriptor ptr невыровненные; dcl 1 выровненный на основе границы, 2 бита node_type (9), 2 c_lower fixed (24), 2 c_upper fixed (24), 2 c_multiplier fixed (24), 2 c_desc_multiplier fixed (24), 2 нижних ptr невыровненных, 2 верхних ptr невыровненных, 2 множителя ptr невыровненных, 2 desc_multiplier ptr невыровненных, 2 symtab_lower ptr невыровненных, 2 symtab_upper ptr невыровненных, 2 symtab_multiplier ptr невыровненных, 2 следующих ptr невыровненных;
См. Также
Ссылки

.

Последняя правка сделана 2021-05-17 14:09:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте