デフォルトでは、 スタックは下位アドレスに向かって伸長します。 これを変更するには、 スタックの
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 の知識がない場合は、 我々にお尋ね下さい。