6.2.4 Stack growth direction

デフォルトでは、 スタックは下位アドレスに向かって伸長します。 これを変更するには、 スタックの stack-access-transform フィールドを、 適切なインデックス変換を実行する xt ( itemnum -- index ) に設定します。

たとえば、 data-stack をより高いアドレスに向かって伸長させ、 スタック・ポインターが常にスタックの最上位のすぐ先を指すようにする場合は、 data-stack を定義した直後に以下を使用します:

\E : sp-access-transform ( itemnum -- index ) negate 1- ;
\E ' sp-access-transform ' data-stack >body stack-access-transform !

これは、 sp-access-transform を使用して data-stack にアクセスするためのインデックスを生成することを意味します。 上記の sp-access-transform の定義は、 n を -n-1 に変換します(例: 1 を -2 にする)。 これは、 sp[-1] の 0 番目のデータ・スタック要素(スタックの先頭)、 sp[-2] の 1 番目のデータースタック要素などにアクセスします。 これは、 上向きに成長するスタックが使用される一般的な方法です。 あなたが別のインデックス変換が必要で、 それをプログラムするのに十分な Forth の知識がない場合は、 我々にお尋ね下さい。