En informática , un descriptor de datos es una estructura que contiene información que describe los datos.
Los descriptores de datos pueden usarse en compiladores , [ 1 ] como una estructura de software en tiempo de ejecución en lenguajes como Ada [ 2 ] o PL/I , o como una estructura de hardware en algunas computadoras como los grandes sistemas Burroughs con sus descriptores .
Los descriptores de datos se utilizan normalmente en tiempo de ejecución para pasar información de argumentos a las subrutinas llamadas . OpenVMS [ 3 ] y Multics [ 4 ] cuentan con estándares independientes del lenguaje y aplicables a todo el sistema para los descriptores de argumentos. Los descriptores también se utilizan para almacenar información sobre datos que solo se conocen completamente en tiempo de ejecución, como una matriz asignada dinámicamente .
Ejemplos
El siguiente descriptor es utilizado por IBM Enterprise PL/I para describir una cadena de caracteres : [ 5 ]
- El valor 'desc type' es 2 para indicar que se trata de un descriptor de elemento en lugar de un descriptor de matriz o estructura.
- 'Tipo de cadena' indica si se trata de una cadena de caracteres o de bits, con longitud variable o fija. El valor 2 indica una cadena de caracteres de longitud fija.
- '(res)' es un byte reservado que no se utiliza para cadenas de caracteres.
- Las 'banderas' indican la codificación de la cadena, EBCDIC o ASCII , y la codificación de la longitud de las cadenas variables.
- La "longitud máxima de la cadena" es la longitud real de la cadena para cadenas no variables, o la longitud máxima para cadenas variables.
Aquí está el código fuente de un descriptor de matriz de Multics. [ 6 ] Las definiciones incluyen una estructura para la información de la matriz base y una estructura para cada dimensión. (Multics se ejecutaba en sistemas con palabras de 36 bits).
dcl 1 matriz alineada, 2 node_type bit(9) no alineado, 2 bits reservados (34) no alineados, 2 número_de_dimensiones fijo(7) no alineado, 2 número_propio_de_dimensiones fijo(7) no alineado, 2 element_boundary fixed(3) no alineado, 2 unidades de tamaño fijas(3) no alineadas, 2 offset_units fijo(3) no alineado, 2 bits intercalados (1) no alineados, 2 c_element_size fijo(24), 2 c_element_size_bits fijo(24), 2 c_virtual_origin fijo(24), 2 puntero element_size no alineado, 2 píxeles element_size_bits no alineados, 2 punteros de origen virtual no alineados, 2 punteros symtab_virtual_origin no alineados, 2 symtab_element_size ptr no alineado, 2 límites ptr no alineados, 2 punteros element_descriptor no alineados; dcl 1 alineado basado en límites, 2 node_type bit(9), 2 c_lower fijo(24), 2 c_upper fijo(24), 2 c_multiplier fijo(24), 2 c_desc_multiplier fijo(24), 2 punteros inferiores no alineados, 2 punteros superiores no alineados, 2 multiplicadores puntero no alineados, 2 desc_multiplier ptr no alineado, 2 symtab_lower ptr no alineado, 2 symtab_upper ptr no alineado, 2 symtab_multiplier ptr no alineado, 2 siguiente puntero no alineado;
Véase también
Referencias
- ↑ Holt, Richard C. (julio de 1987). "Descriptores de datos: un modelo de datos y direccionamiento en tiempo de compilación" . ACM Transactions on Programming Languages and Systems . 9 (3): 367– 389. doi : 10.1145/24039.24051 .
- ↑ Schonberg, Ed. "Ada comparado con C++" . Las ventajas de Ada 95. Consultado el 15 de enero de 2013 .
- ↑ Hewlett-Packard. "Capítulo 7 Descriptores de argumentos de OpenVMS" . Documentación de sistemas HP OpenVMS . Archivado del original el 13 de julio de 2020. Recuperado el 11 de julio de 2020 .
- ↑ Honeywell, Inc. (1979). Manual del programador de Multics – Guía para escritores de subsistemas (PDF) . págs. 2–13-2–18.
- ↑ IBM Corporation (2006). Guía de programación de Enterprise PL/I para z/OS (PDF) . pág. 385.
- ↑ MIT/Honeywell. "array.incl.pl1" . Multics/ldd/include . Consultado el 20 de enero de 2012 .
- Estructuras de datos por plataforma informática
- Implementación del lenguaje de programación
- Esbozos de programación informática