目次ページ  前ページ   次ページ

10. 幾何モデルのデータ構造の概説

10.2 リストの意味


10.2.8 ポインタは住所番号に当たること

 メモリは一続きのビット並びの集合です。リストセルの使い方を説明するとき、多くの参考書では表10.1のように左上から右下に改行しながら連続する枠で、ビット・バイト・2バイト長データ・4バイト長データの並びを格納する小枠を描きます。通信回線でデータを送受信するときはバイト単位です。しかし、ビット転送の時間的な順序の約束は左から右です。一方、コンピュータは、基本的に数値計算のツールですので、内部に複数の、レジスタがあります。算盤は一続きの長いレジスタであって、それを適当な場所で独立した小単位レジスタに分けて使います。コンピュータは8,16,32,64などのビット数のレジスタが複数あって、それを論理的につないで長さの長いレジスタとして使います。例えば、8ビットのレジスタをつないで一続きの16ビット長の整数として使うとき、バイトのつながりが左右違うと、別の数を表します。レジスタの中身をバイト単位でメモリに転送するとき、また逆に、メモリのバイト単位のデータをレジスタに納めるとき、この順の約束が大問題です。32ビットパソコンのレジスタの使い方は、表10.2の各行に示すように、レジスタの右から左に、ビット位置もバイト位置も指定します。メモリマップに表すときは、下から上に積み上げるような表現が適しています。そこで、教育用の説明図は表10.1を使い、プログラマ向けの仕様には表10.2と使い分けますので混乱します。リストセルは、メモリ内では子枠が連続した配列です。その使い方を説明するときは、図10.1のようにリストセルの小枠単位の論理的な繋がりを図に描きます。子枠の配列上の位置(アドレス)を表す数値をポインタ(pointer)と言います。これを使いこなすことで図10.1のようにリストセル間の関係を構築します。リストセルを扱うプログラミングはかなり専門的ですが、原理を理解しておく必要があります。

図10.1 種々のリスト構造を組み合わせる
2008.10 橋梁&都市PROJECT

前ページ  次ページ