Dataskrivare - Data descriptor
Vid databehandling är en dataskrivare en struktur som innehåller information som beskriver data.
Databeskrivare kan användas i kompilatorer , som en programvarustruktur vid körning på språk som Ada eller PL / I , eller som en hårdvaruskonstruktion i vissa datorer, till exempel Burroughs stora system .
Databeskrivare används vanligtvis vid körning för att skicka argumentinformation till kallade subroutiner . HP OpenVMS och Multics har systemomfattande språkoberoende standarder för argumentbeskrivningar. Beskrivare används också för att hålla information om data som endast är helt kända vid körning, till exempel en dynamiskt tilldelad matris .
Till skillnad från en dopevektor innehåller en databeskrivare inte adressinformation.
exempel
Följande deskriptor används av IBM Enterprise PL / I för att beskriva en teckensträng :
+--------+--------+--------+--------+
| desc | string | | flags |
| type | type | (res) | |
+--------+--------+--------+--------+
| maximum string length |
| |
+--------+--------+--------+--------+
byte 0 1 2 3
- 'desc type' är 2 för att indikera att detta är en elementbeskrivning snarare än en matris eller strukturdeskriptor.
- 'strängtyp' indikerar att det här är ett tecken eller en bitsträng, med varierande eller icke varierande längd. 2 indikerar en icke varierande (fast längd) teckensträng.
- '(res)' är en reserverad byte som inte används för teckensträngar.
- "flaggor" indikerar kodningen för strängen, EBCDIC eller ASCII och kodningen för längden på olika strängar.
- "maximal stränglängd" är den verkliga längden på strängen för icke varierande strängar, eller den maximala längden för varierande strängar.
Här är källan till en matrisbeskrivare från Multics. Definitionerna inkluderar en struktur för basmatrisinformation och en struktur för varje dimension. (Multics körde på system med 36-bitars ord).
dcl 1 array based aligned, 2 node_type bit(9) unaligned, 2 reserved bit(34) unaligned, 2 number_of_dimensions fixed(7) unaligned, 2 own_number_of_dimensions fixed(7) unaligned, 2 element_boundary fixed(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 unaligned, 2 symtab_element_size ptr unaligned, 2 bounds ptr unaligned, 2 element_descriptor ptr unaligned; dcl 1 bound based aligned, 2 node_type bit(9), 2 c_lower fixed(24), 2 c_upper fixed(24), 2 c_multiplier fixed(24), 2 c_desc_multiplier fixed(24), 2 lower ptr unaligned, 2 upper ptr unaligned, 2 multiplier ptr unaligned, 2 desc_multiplier ptr unaligned, 2 symtab_lower ptr unaligned, 2 symtab_upper ptr unaligned, 2 symtab_multiplier ptr unaligned, 2 next ptr unaligned;
Se även
referenser
| Den här datorprogrammeringsrelaterade artikeln är en stubb . Du kan hjälpa Wikipedia genom att utvidga den . |