3

同じことをさまざまな方法で実行しようとしているプログラミング演習を行っています。(たまたま、Forth で 2 つの 3 要素ベクトルを一緒に追加しています)。私のリビジョンの 1 つで、リターン スタックを使用して一時的な値を保存しました (そのため、その機能を使用しています) が、それに加えて、割り当てられていないメモリを一時ストレージとして使用することを検討しています。

この記憶にアクセスするために 2 つの単語を作成しました。

: front! here + ! ;
: front@ here + @ ;

私は自分の実験でそれを試しましたが、私がやっていることにはうまくいくようでした. ルーチンが完了した後、このメモリを使用するつもりはありません。そして、私は辞書に住んでいますが、その記憶はすでにプログラムに与えられています。

しかし、私の腸はまだこれを行うのは悪いことだと言っています. これはそんなに悪いことですか?

問題があれば、私はGforthを使用しています。

4

3 に答える 3

1

自分が何をしているのかわかっていれば大丈夫です。BUD PAD は HERE よりも適しています。代替の ALLOCATE と FREE もあります。

ALLOCATE ( u -- a-addr ior )

連続したデータ空間の u アドレス単位を割り当てます。データ空間ポインターは、この操作の影響を受けません。割り当てられたスペースの初期内容は未定義です。

割り当てが成功した場合、a-addr は割り当てられたスペースのアラインされた開始アドレスであり、ior はゼロです。

操作が失敗した場合、a-addr は有効なアドレスを表しておらず、ior は実装定義の I/O 結果コードです。

FREE ( a-addr -- ior )

後で割り当てるために、a-addr で示されるデータ空間の連続領域をシステムに返します。a-addr は、ALLOCATE または RESIZE によって以前に取得されたデータ空間の領域を示します。データ空間ポインターは、この操作の影響を受けません。

操作が成功した場合、ior はゼロです。操作が失敗した場合、ior は実装定義の I/O 結果コードです。情報システムに関する米国規格

于 2015-01-25T16:16:15.700 に答える
0

: フロント!ここに + ! ;

スタック ダイアグラムとは ( n offset_in_cells -- ) だと思いますか?

于 2014-12-06T21:08:11.950 に答える