Next: , Previous: , Up: Carnal words   [Contents][Index]


6.30.1 Header fields

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 が両方ともワードの本体を指しているとすると、 その違いは何でしょうか? ほとんどのワードでは、xt と nt は同一ヘッダーを使用するので、 nt=xt となり、 同じ場所を指します。 ただし、 同義語(synonym)(see Aliases)では違いがあります。 以下の例で考えてみましょう

create x
synonym y x
synonym z y

この場合、z の nt は z の本体を指し、 z の xt は x の本体を指します。 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>stringname>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 で定義したワードのみです。