Next: , Previous: , Up: Gforth Environment   [Contents][Index]


2.1 Invoking Gforth

Gforth は 2 つの部分から成ります。 実行可能「エンジン」(gforth または gforth-fast という名前)と、イメージ・ファイルです。 Gforth を開始するには、 通常は gforth とするだけです。 これにより、 デフォルトのイメージ・ファイル gforth.fi が自動的にロードされます。 他の多くの場合、 デフォルトの Gforth イメージは以下のように呼び出されます:

gforth [file | -e forth-code] ...

これにより、 ファイルの内容や、 (訳注:コマンドラインに記述された、) Forth コードが、 指定の順序で通訳(interpret)されます。

gforth エンジンに加えて、 gforth-fast というエンジンもあります。 これは高速ですが、 表示されるエラー・メッセージ(see Error messages)の情報が少なく、 そして、 一部のエラーのキャッチ(特に、 スタック・アンダーフローや整数除算エラーなど)が遅れて発生するか、 あるいはまったく発生しません。 デバッグ済みの、 パフォーマンスが重要なプログラムに対して使用するべきです。

さらに、 gforth-itc というエンジンがあり、 下位互換性が必要な状況(see Direct or Indirect Threaded?)で役に立ちます。

一般に、 コマンドラインは以下のようになります:

gforth[-fast] [engine options] [image options]

エンジン・オプションは、 コマンド・ラインの他の部分より前に指定する必要があります。 それらは以下のとおりです:

--image-file file
-i file

デフォルトの gforth.fi の代わりに、 指定の Forth イメージ・ファイルをロードします(see Image Files)。

--appl-image file

指定のイメージ・ファイルをロードし、 これ以降のコマンドライン引数は(エンジンのオプションとして処理するのではなく)、 すべてそのイメージが処理する為に残します。 これは、 gforthmi --application ... で構築された、 Unix 上で実行可能なアプリケーション・イメージを構築する場合に便利です。

--path path
-p path

デフォルトである環境変数 GFORTHPATH 、 またはインストール時に指定されたパス(例: /usr/local/share/gforth/0.2.0:.)と作業ディレクトリ . の代わりに、 指定のパスを使用してイメージ・ファイルと Forth ソース・コード・ファイルを検索します。 パスは ‘:’ で区切られたディレクトリのリストとして指定されます(以前のバージョンには他の OS 用に ‘;’ がありましたが、 Cygwin は現在は /cygdrive/<letter> のみを受け入れ、 かつ、 私達は OS/2 や MS-DOS のサポートは終了してしまったため、 どこでも全部 ‘:’ になりました)。

--dictionary-size size
-m size

イメージで指定されているデフォルト(通常は 256K)を使用する代わりに、 Forth ディクショナリ用のスペースに指定サイズ(size)のスペースを割り当てます。 このオプションと、下記のオプションのサイズ(size)指定は整数と単位で構成されます(例: 4M)。 単位は b (バイト)、 e (elementの略。セル単位)、 k (キロバイト)、 M (メガバイト)、 G (ギガバイト)、 T (テラバイト)のいずれかになります。 単位が指定されていない場合 e が使用されます。

--data-stack-size size
-d size

イメージで指定されているデフォルト(通常は 16K) を使用する代わりに、 データ・スタックに指定のサイズ(size)のスペースを割り当てます。サイズ(size)指定は整数と単位で構成されます(例: 4M)。 単位は b (バイト)、 e (elementの略。セル単位)、 k (キロバイト)、 M (メガバイト)、 G (ギガバイト)、 T (テラバイト)のいずれかになります。 単位が指定されていない場合 e が使用されます。

--return-stack-size size
-r size

イメージで指定されたデフォルト(通常は 15K)を使用する代わりに、 リターン・スタックに指定のサイズ(size)のスペースを割り当てます。 サイズ(size)指定は整数と単位で構成されます(例: 4M)。 単位は b (バイト)、 e (elementの略。セル単位)、 k (キロバイト)、 M (メガバイト)、 G (ギガバイト)、 T (テラバイト)のいずれかになります。 単位が指定されていない場合 e が使用されます。

--fp-stack-size size
-f size

イメージで指定されているデフォルト(通常は 15.5K)を使用する代わりに、 浮動小数点スタックに指定のサイズ(size)のスペースを割り当てます。この場合、単位指定子 e は浮動小数点数を参照します。 サイズ(size)指定は整数と単位で構成されます(例: 4M)。 単位は b (バイト)、 e (elementの略。セル単位)、 k (キロバイト)、 M (メガバイト)、 G (ギガバイト)、 T (テラバイト)のいずれかになります。 単位が指定されていない場合 e が使用されます。

--locals-stack-size size
-l size

イメージで指定されているデフォルト(通常は 14.5K)を使用する代わりに、 ローカル・スタック(locals stack)に指定サイズ(size)のスペースを割り当てます。 サイズ(size)指定は整数と単位で構成されます(例: 4M)。 単位は b (バイト)、 e (elementの略。セル単位)、 k (キロバイト)、 M (メガバイト)、 G (ギガバイト)、 T (テラバイト)のいずれかになります。 単位が指定されていない場合 e が使用されます。

--vm-commit

通常 Gforth は、 ディクショナリとスタックに十分な仮想メモリ(virtual memory)がない場合でも起動しようとします(OS がサポートしていれば MAP_NORESERVE を使用します)。 したがって、 あなたは非常に大きなディクショナリやスタックを要求することができ、 利用可能なのを超える仮想メモリを使用しない限り、 すべて問題ありません(ただし、それを超えて使用すると、 プロセスが強制終了(kill)されます)。 このオプションを使用すると、 OS のデフォルトの割り当てポリシーを使用するようになります。 とりわけ、 オーバーコミットしない OS (Solaris など) の場合、 これは、 大きなディクショナリやスタックを要求することはできませんし、 要求すべきではないことを意味しますが、 しかし、 Gforth が正常に起動する事に成功したならば、 メモリ不足によって強制終了(kill)させられることはありません。

--help
-h

コマンドライン・オプションに関するメッセージを出力します

--version
-v

バージョンを出力して終了(exit)

--debug

起動時のデバッグに役立ついくつかの情報を出力します。

--offset-image

それ以外の場合に使用される位置とはわずかに異なる位置でディクショナリを開始します (データ再配置可能イメージ(data-relocatable images)の作成に役立ちます see Data-Relocatable Image Files)。

--no-offset-im

ディクショナリを通常の位置で開始します。

--clear-dictionary

イメージをロードする前に、 ディクショナリ内の全てのバイトを 0 に初期化します(see Data-Relocatable Image Files)。

--die-on-signal

通常、 Gforth はほとんどのシグナル(例えば、 ユーザー割り込みの SIGINT や、 セグメンテーション違反 SIGSEGV)を Forth の THROW に変換することで処理します。 このオプションを使用すると、 Gforth はそのようなシグナルを受信すると終了(exit)します。 このオプションは、 (最初のシグナルから回復する前に別のシグナルが発生するなど、)エンジンやイメージがひどく壊れている可能性がある場合に役立ちます。 このオプションは、 そのような場合の無限ループを回避します。

--no-dynamic
--dynamic

レプリケーション(replication)を伴う動的スーパー命令(dynamic superinstructions)を無効または有効にします(see Dynamic Superinstructions)。

--no-super

動的スーパー命令(dynamic superinstructions)を無効にし、 動的レプリケーション(dynamic replication)のみを使用します。 これは、 スレッド化コード(threaded code)にパッチを適用する場合に便利です(see Dynamic Superinstructions)。

--ss-number=N

エンジンにコンパイル済みの最初の N 個の静的スーパー命令(static superinstructions)のみを使用します(デフォルトでは全てを使用します。 注意: gforth-fast のみのオプションです)。 このオプションは、 静的スーパー命令(static superinstructions)のパフォーマンスへの影響を測定するのに役立ちます。

--ss-min-codesize
--ss-min-ls
--ss-min-lsu
--ss-min-nexts

指定のメトリックを使用して、 静的スーパー命令の選択(static superinstruction selection)をするためにプリミティブまたは静的スーパー命令のコストを決定します。 Codesize はプリミティブまたは静的スーパー命令のネイティブ・コード・サイズ、 そして、 ls はロードとストアの数、 そして、 lsu はロードとストアと更新の数、 そして、 nexts は(動的スーパー命令を考慮しない)ディスパッチの数です。 ここで、 すべてのプリミティブまたは静的スーパー命令のコストは 1 です。 デフォルトでは、 動的コード生成を使用する場合は codesize、 それ以外の場合は nexts です。

--ss-greedy

このオプションは、 静的スーパー命令のパフォーマンスへの影響を測定するのに役立ちます。 デフォルトでは、 静的スーパー命令の選択には最適な最短パス・アルゴリズム(shortest-path algorithm)が使用されます。 --ss-greedy を使用すると、 そのアルゴリズムは、 現在検討中の静的スーパー命令以降は静的スーパー命令に結合されないと想定するように変更されます。 --ss-min-nexts を使用すると、 その時点で利用可能な最長のスーパー命令を常に選択する貪欲なアルゴリズムと同じ結果が生成されます。 たとえば、スーパー命令 AB と BCD がある場合、 シーケンス A B C D に対して、 最適アルゴリズムは A BCD を選択し、 貪欲アルゴリズムは AB C D を選択します。

--print-metrics

静的スーパー命令の選択中に使用されるいくつかのメトリックを出力します。 code size は、 動的に生成されたコードの実際のサイズです。 Metric codesize は、静的スーパー命令の選択によって確認できるコードサイズ・メトリック(codesize metrics)の合計で、 code size とは異なります。 これは、 すべてのプリミティブと静的スーパー命令が動的に生成されるコードにコンパイルされるわけではないことと、 マーカーがあるためです。 他のメトリクスは ss-min-... オプションに対応します。 このオプションは、--ss-... オプションの効果を評価するのに役立ちます。

上記にて説明したように、 デフォルト・イメージである gforth.fi のイメージ固有のコマンドライン引数は、 一連のファイル名と、 指定した順序で通訳(interpret)される -e forth-code オプションで構成されます。 -e forth-code または --evaluate forth-code オプションは Forth コードを評価(evaluate)します。 このオプションは引数を 1 つだけ取ります。 あなたが、もし、 さらに多くの Forth ワードを評価したい場合は、 ワードを引用符で囲むか、 -e を複数回使用する必要があります。 コマンド・ラインの処理後に(対話モードに入るのではなく、)終了(exit)するには、 コマンド・ラインに -e bye を追加します。 Forth プログラムではコマンド・ライン引数を処理することもできます(see OS command line arguments)。

複数のバージョンの Gforth がインストールされている場合、 gforth は最後にインストールされたバージョンを呼び出します。 gforth-<version> は特定のバージョンを呼び出します。 あなたの環境に環境変数 GFORTHPATH がある場合、 --path オプションを使用してこの環境変数をオーバーライドできます。

起動時、 イメージ・オプションを処理する前に、 環境変数 GFORTH_ENV で指定されたユーザー初期化ファイル、 またはその環境変数が設定されていない場合は(存在する場合、) ~/.config/gforthrc0 がインクルードされます。 GFORTH_ENV が「off」の場合は何もインクルードしません。 すべてのイメージ・オプションを処理した後、 ブート・メッセージを出力する直前に、 オプション --no-rc が指定されていない限り、 ホーム・ディレクトリのユーザー初期化ファイル ~/.config/gforthrc がインクルードされます。

警告レベルは以下のように設定できます

-W

警告(warnings)をオフにする

-Won

警告(warnings)をオンにする(レベル 1)

-Wall

初心者向け警告をオンにする(レベル 2)

-Wpedantic

細かい構文的な警告(pedantic warnings)をオンにする(レベル 3)

-Werror

警告をエラーとして出す(レベル 4)


Next: Leaving Gforth, Previous: Gforth Environment, Up: Gforth Environment   [Contents][Index]