Next: , Previous: , Up: Memory   [Contents][Index]


6.7.1 Memory model

標準 Forth は、 Forth システムが複数のアドレス空間で構成されているとみなします。 そのうちの「データ空間」(data space)のみを管理し、 メモリ・ワードでアクセスできます。 メモリには、 スタックと、 コード(コード空間(code space))と呼ばれる)と、 ヘッダー(名前空間(name space)と呼ばれる)とが含まれ、 それらは必ずしもデータ空間にある必要はありません。 Gforth ではすべてがデータ空間内にありますが、 プリミティブのコードは通常読み取り専用です。

データ空間は、 いくつかの領域に分割されます。 ディクショナリ(dictionary)10と、 ヒープと、 システムによって割り当てられた多数のバッファーから成ります。

Gforth は 1 つの大きなアドレス空間を提供し、 その任意のアドレス間でアドレス演算を実行できます。 ただし、 ディクショナリではヘッダーまたはコードがデータと代わる代わる出てくるため(interleaved)、 連続するデータ空間領域は、 標準 Forth で連続していると記述されているものだけがほとんどです。 しかし、 連続する領域間であっても、 増加するアドレス方向にディクショナリが確実に割り当てられます。 ヒープ内でのメモリ割り当ての順序はプラットフォームに依存します(また、実行ごとに異なる可能性もあります)。


Footnotes

(10)

「ディクショナリ」(辞書)という用語は、 従来の辞書と同じように名前を検索するために使用される、 ワード・リストやヘッダーに組み込まれた検索データ構造を指すために使用されることがあります