OpenBoot 2.x コマンド・リファレンスマニュアル

スタックダイアグラム

スタックダイアグラム規則に従うコーディング形式では、わかりやすいように Forth ワードの定義ごとに、それぞれの最初の定義行に ( -- )の形式のスタックダイアグラムを表記する必要があります。スタックダイアグラムは、ワードを実行するとスタックがどうなるかを指定するものです。

-- の左側に置かれる項目は、 スタックから消費 (つまり削除) され、そのワードの演算に使用されるスタック項目を示します。-- の右側に置かれる項目は、ワードの実行の終了後にスタックに残されるスタック項目を示します。 たとえば、ワード + のスタックダイアグラムは ( nu1 nu2 -- sum ) であり、ワード. のスタックダイアグラムは ( nu -- ) です。したがって、+ は 2 つの数値 (nu1nu2) を削除し、次にそれらの和 (sum) をスタックに残します。ワード . はスタックの一番上の数値 (nu) を削除し、それを表示します。

スタックの内容に影響しないワード (showstackdecimal など) のスタックダイアグラムは ( -- ) になります。

場合によっては、ワードのすぐ後に別のワード、またはほかのテキストが必要なことがあります。たとえば、see は、 see thisword ( -- ) という形式で使用されます。

スタック項目は、正しい使い方がわかるように、一般的に (意味を表すような) 説明的名前を使用して書きます。このマニュアルで使用するスタック項目の省略表記については、表 4-1 を参照してください。

表 4-1 スタック項目の表記法

表記 

説明 

|

前後に空白文字を入れて表示される代替スタック結果。たとえば、( input -- addr len false | result true )。 

|

前後に空白文字なしで表示される代替スタック項目。たとえば、( input -- addr len | 0 result )。 

???

未知のスタック項目 (1 つまたは複数)。 

...

未知のスタック項目 (1 つまたは複数)。スタックコメントの両側に使用した場合は、両側に同じスタック項目があることを意味します。 

< > <space>

空白区切り文字。先行空白文字は無視されます。 

a-addr

可変境界アドレス。 

addr

メモリーアドレス (一般的に仮想アドレス)。 

addr len

メモリー領域のアドレスと長さ。 

byte bxxx

8 ビット値 (32 ビットワードの下位バイト)。 

char

7 ビット値 (下位バイト)。上位ビットは不定。 

cnt len size

カウント値または長さ。 

dxxx

倍 (拡張) 精度数。2 スタック項目 - スタックの一番上の上位 quadlet (32 ビット)。 

<eol>

行末区切り文字。 

false

0 (false フラグ)。 

ihandle

パッケージのインスタンスのポインタ。 

n n1 n2 n3

通常の符号付き値 (32 ビット) 

nu nu1

符号付きまたは符号なしの値 (32 ビット) 

<nothing>

ゼロスタック項目。 

phandle

パッケージのポインタ。 

phys

物理アドレス (実際のハードウェアアドレス)。 

phys.lo phys.hi

物理アドレスの下位/上位セル。 

pstr

パックされた文字列。 

quad qxxx

quadlet (32 ビット値)。 

qaddr

quadlet (32 ビット値) 境界のアドレス。 

{text}

省略可能なテキスト。省略した場合は、デフォルト操作が行われます。 

"text<delim>"

入力バッファーテキスト。コマンドの実行時に構文解析されます。テキスト区切り文字を <> で囲みます。 

[text<delim>]

同じ行上のコマンドのすぐ後のテキスト。ただちに構文解析されます。テキスト区切り文字は <> で囲みます。 

true

-1 (true フラグ)。(真) 

uxxx

符号なしの値、正の値 (32 ビット)。 

virt

仮想アドレス (ソフトウェアが使用するアドレス)。 

waddr

doublet (16 ビット) 境界のアドレス。 

word wxxx

doublet (16 ビット値、32 ビットワードの下位 2 バイト)。 

x x1

任意のスタック項目。 

x.lo x.hi

データ項目の最下位/最上位ビット。 

xt

実行トークン。 

xxx?

フラグ。名前は用途を示します (たとえば、done? ok? error?)。

xyz-str xyz-len

パックされない文字列のアドレスと長さ。 

xyz-sys

制御フロー用スタック項目。実装に依存します。 

( C: -- )

コンパイルスタックダイアグラム。 

( -- ) ( E: -- )

実行スタックダイアグラム。 

( R: -- )

復帰スタックダイアグラム。