Loading article…
コンピューティングにおいて、データ記述子はデータを記述する情報を含む構造体です。
データ記述子は、コンパイラ[1] 、 Ada [2] やPL/Iなどの言語での実行時のソフトウェア構造として、または記述子を持つバロウズの大規模システムなどの一部のコンピュータのハードウェア構造として使用されることがあります。
データ記述子は通常、実行時に呼び出されたサブルーチンに引数情報を渡すために使用されます。OpenVMS [3]とMultics [4]には、引数記述子に関するシステム全体の言語に依存しない標準があります。記述子は、動的に割り当てられた配列 など、実行時にのみ完全にわかっているデータに関する情報を保持するためにも使用されます。
例
IBM Enterprise PL/Iでは、次の記述子が文字列を記述するために使用されます。[5]
- 'desc type' は 2 で、これが配列記述子や構造体記述子ではなく要素記述子であることを示します。
- 「文字列型」は、これが可変長または非可変長の文字またはビット文字列であることを示します。2 は非可変長 (固定長) 文字列を示します。
- '(res)' は文字列には使用されない予約バイトです。
- 「フラグ」は、文字列のエンコード(EBCDICまたはASCII)と、さまざまな文字列の長さのエンコードを示します。
- 「最大文字列長」は、非可変文字列の場合は文字列の実際の長さ、可変文字列の場合は最大長です。
以下はMulticsの配列記述子のソースです。[6] 定義には、基本配列情報の構造と各次元の構造が含まれています。(Multicsは36ビットワードのシステムで実行されました)。
dcl 1 配列ベース整列、 2 ノードタイプビット(9) 非整列、 2予約ビット(34) 非整列、 2 次元数 固定(7) 非整列、 2 独自の次元数 固定(7) 非整列、 2 要素境界固定(3) 非整列、 2 size_units 固定(3) 非整列、 2 offset_units 固定(3) 非整列、 2インターリーブビット(1)非整列、 2 c_element_size 固定(24)、 2 c_element_size_bits 固定(24)、 2 c_virtual_origin 固定(24)、 2 要素サイズポインタが整列されていない、 2 element_size_bits ptr は整列されていません。 2 virtual_origin ptr が整列されていない、 2 symtab_virtual_origin ptr が整列していない、 2 symtab_element_size ptr が整列していない、 2 つの境界ポインタが整列されていません。 2 要素記述子ポインタが整列されていません。 dcl 1 境界ベース整列、 2 ノードタイプビット(9)、 2 c_lower 固定(24)、 2 c_upper 固定(24)、 2 c_multiplier 固定(24)、 2 c_desc_multiplier 固定(24)、 2 つの下位ポインタは整列されていない、 2つの上位ポインタは整列されていない、 2 乗算ポインタが整列されていない、 2 desc_multiplier ptr が整列されていない、 2 symtab_lower ptr が整列していない、 2 symtab_upper ptr が整列していない、 2 symtab_multiplier ptr が整列していない、 2 次の ptr は整列されていません。
参照
参考文献
- ^ Holt, Richard C. (1987 年 7 月). 「データ記述子: データとアドレス指定のコンパイル時モデル」. ACM Transactions on Programming Languages and Systems . 9 (3): 367–389. doi : 10.1145/24039.24051 .
- ^ Schonberg 編「Ada と C++ の比較」。Ada 95 の利点。2013 年1 月 15 日閲覧。
- ^ Hewlett-Packard. 「第 7 章 OpenVMS 引数記述子」。HP OpenVMS システム ドキュメント。2020年7 月 11 日閲覧。
- ^ Honeywell, Inc. (1979). Multics プログラマーズマニュアル - サブシステムライターガイド(PDF) . pp. 2–13-2–18.
- ^ IBM Corporation (2006). Enterprise PL/I for z/OSプログラミング・ガイド(PDF) . p. 385.
- ^ MIT/Honeywell. 「array.incl.pl1」. Multics/ldd/include . 2012年1月20日閲覧。
