問題タブ [forth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
352 参照

memory-management - 以前に変数に割り当てられたメモリの割り当てを解除します (create を使用)

メモリの割り当て/解放に関するGforthのマニュアルを読んでいますが、これは理解できません。次のように、4 つの整数を保持するためにメモリのチャンクを割り当てたとします。

次に、おそらくより多くのメモリを割り当て、おそらくいくつかのメモリの割り当ても解除したので、今は割り当てを解除したいと思いますfoo。それ、どうやったら出来るの?するとエラーにfoo freeなります。foo 4 cells free

0 投票する
2 に答える
100 参照

string - 静的に割り当てられた文字列を動的に割り当てられた文字列にコピーします

私はに従っていて、それが何をするのかを自分自身に説明しようとしました:

最後の指示まで、それはすべて理にかなっています...どこが間違っていましたか?

編集:

いくつかのトレースを追加しました:

0 投票する
1 に答える
711 参照

string-formatting - 画像の数値出力にリテラル スペース文字を追加する

試行錯誤の約数時間後、私はそれを行う方法を理解できませんでした...私が取り組んでいるコードは次のとおりです。

余談ですが...出力を印刷する簡単な方法はありませんかprintf?もう 1 つの可能性は、一種の文字列の最初の文字としてスペース文字を指定することです。s" "

編集:

私ができることがわかりました:s\" \040 test"Gforthで(マニュアルには標準ではないと書かれていますが)。そして、s\" \x20 test"これはおそらく標準ですが、それが標準であるかどうかを示す文の部分がどこに関係しているかはよくわかりません。それでも、写真の数値出力と組み合わせる方法を教えていただければ幸いです。

EDIT2

これは私がそれが使用されると私が期待する方法です:

0 投票する
3 に答える
2586 参照

conventions - Forth ソース コード ファイルの最も一般的なファイル名拡張子は何ですか?

Forth ソース コード ファイルを拡張子.4th.fth.frtおよび.f. Forth ソース コード ファイルの最も一般的なファイル名拡張子はどれですか?

0 投票する
1 に答える
572 参照

forth - Forth で関数の定義を出力する

単語が Forth で既に定義されている場合、その定義を出力する方法はありますか?

emit、などの Forth の組み込み関数の多くはdrop、言語自体の観点から定義されていると聞いたので、それらの定義を確認できるようにしたいと思います。

0 投票する
2 に答える
613 参照

forth - Forth でスタックから n 番目の要素を取得する

その上のすべての要素をポップせずに、Forth のインデックスでスタックの要素にアクセスする方法はありますか?

たとえば、1 から 1000 までの数字をスタックにプッシュした場合、どうすれば 500 番目の要素を取得できますか?

0 投票する
1 に答える
1476 参照

assembly - 6502 軽量圧縮アルゴリズム

私が書いている Forth のコモドール PET (楽しみのために) のデュアル カセット テープ デッキに仮想メモリを実装しています。興味があれば、私がこれまでに持っているものはhttp://github.com/chitselb/pettilにあります。

PET のネイティブ 192 バイト カセット データファイル形式を使用する予定です。そうそう、すべてに 32K の RAM しかありません。私はウォズの優れたメモリ効率の良いSweet-16インタプリタを言語に組み込みました。

Forth ブロックは (通常) 1024 バイトです。ブロック ID に 2 バイトを追加すると、利用可能な仮想アドレス空間が 64 メガバイトに制限され、テープに収まる容量よりもはるかに大きくなります。「再生」デッキ (デバイス 1) と「記録」デッキ (デバイス 2) があり、FLUSH では仮想メモリ全体を 1 つのドライブから別のドライブにコピーする必要があります。なぜ風車を傾けるのですか?当時、ほとんどの PET 所有者が持っていたのはカセット テープでした。

ほとんどのデータは Forth コードの画面であり、この実装では 1000 バイトのテキストと 24 バイトの行折り返しテーブルになります。これは、PET ROM 画面エディターも利用しているためです。私が探しているのは、Lempel-Ziv のような複雑なものの CPU とメモリのオーバーヘッドなしで、この目的のために (おそらく) 単純なランレングス エンコーディングを打ち負かすものの提案です。「忘れてください」以外のすべての提案を歓迎します。

0 投票する
1 に答える
435 参照

shebang - Gforth を使用した Unix シバン

次のように、スクリプトの先頭にシバンがあると、 Gforthを実行するのに問題があります。

Unix は gForth を正常に起動しているように見えますが、gForth 自体はシバン ラインでチョークします。Forth がシバン行を別の方法で解釈するように単語を定義する方法がわかりません (それができないとは言いませんが、どのようになるかはわかりません)。

スクリプトを使用してコード ファイルを gForth にフィードすることを検討しましたが、何度も行うのはかなり面倒です。gForth が他の言語のようにシバンを受け入れるようにする方法はありますか?