Gforth 1.0 では、 新しいワード・ヘッダー・レイアウトに切り替えられました。 詳細な説明については、 Bernd Paysan and M. Anton Ertl. The new Gforth header を参照してください。 この論文の公開以後に、xt と nt は本体(body)のようにパラメーター・フィールドを指すように変更されましたが、 それ以外は依然としてこの文献が最新です。
このセクションでは、 データ構造とそれにアクセスするために使用されるワードについてのみ説明します。 ヘッダーには以下のフィールドがあります:
name >f+c >link >cfa >namehm >body
現在、 Gforth には xt/nt/body から各フィールドに到達するために上に示した名前がありますが、 標準の >body
を除けば、 これらは定着した Gforth ワードではありません。 これらの代わりアクセス用ワードを提供しています。
注意:文書化されたアクセス・ワードはヘッダー・レイアウトの再編成後も生き残ることに注意してください。
ワードの中には nt を期待するものもあれば、 xt を期待するものもあります。 nt と xt が両方ともワードの本体(body)を指しているとすると、 その違いは何でしょうか? ほとんどのワードでは、xt と nt は同一ヘッダーを使用するので、 nt=xt となり、 同じ場所を指します。 ただし、 同義語(synonym)(see Aliases)では違いがあります。 以下の例で考えてみましょう
create x synonym y x synonym z y
この場合、z
の nt は z
の本体(body)を指し、 z
の xt は x
の本体(body)を指します。 alias
または forward
(see Forward)
で定義されたワードも、 nt と異なる xt を持ちます。
名前フィールドは可変長で、 name>string
(see Name token) でアクセスします。
>f+c
フィールドには、フラグと名前の長さ(カウント)が含まれます。 name>string
でカウントを読み取り、
以下でフラグを読み取ります。
compile-only?
( nt – flag ) gforth-1.0 “compile-only?”
nt がコンパイル専用(compile-only)としてマークされている場合は true 。
>link
フィールドには、 同じワードリスト内の前のワードへのリンクが含まれます。 name>link
(see Name token) で読み取ることができます。
name と >f+c
と >link
フィールドは noname
ワードには存在しませんが、 それでも
name>string
と name>link
は機能し、 name>string
は 0 0 を返し、
name>link
は 0 を返します。
>cfa
フィールド(別名 コード・フィールド) には、 ワードを execute
するために使用されるコード・アドレスが含まれます。 >code-address
で読み取り、 code-address!
(see Threading Words) で書き込むことができます。
>namehm
フィールドには、 後述するするヘッダー・メソッド・テーブルのアドレスが含まれます。 あなたがこれにアクセスするには、
ヘッダー・メソッド (see Header methods) の実行によるか、 または、 ヘッダー・メソッドへのアクセスによります。
>body
(別名 パラメーター・フィールド)には、 ワードの種類に固有のデータまたはスレッド化コードが含まれます。
その長さはワードの種類によって異なります。 たとえば、 constant
の場合、 定数の値を含むセルが含まれます。
>body
(see The gory details of CREATE..DOES>
) を通じてアクセスできますが、 これは標準の
create
で定義したワードのみです。