[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.14.14 MIPS オプション

以下の ‘-m’ オプションが、MIPS 系コンピュータ用に定義されている。

-mcpu=cpu type

命令スケジューリングの際の機種のデフォルトを cpu type と想定する。 cpu type は、‘r2000’、‘r3000’、‘r3900’、‘r4000’、 ‘r4100’、‘r4300’、‘r4400’、‘r4600’、‘r4650’、 ‘r5000’、‘r6000’、‘r8000’、‘orion’ のどれかである。 さらに、‘r2000’、‘r3000’、‘r4000’、‘r5000’、‘r6000’ は、‘r2k’(あるいは ‘r2K’)、‘r3k’ 等のように省略できる。 ある特定の cpu type を選ぶとその特定のチップに適したスケジューリング を行なう一方で、‘-mipsX’ や ‘-mabi’ を指定しない限り、 MIPS ISA(Instruction Set Architecture、命令セットアーキテクチャ)の レベル 1 に合わないコードは何も生成しない。

-mips1

MIPS ISA のレベル 1 の命令を発行する。これがデフォルトである。 ‘r3000’ が、この ISA レベルのデフォルトの CPU タイプである。

-mips2

MIPS ISA のレベル 2 の命令(branch likely, square root 命令)を発行する。 ‘r6000’ が、この ISA レベルのデフォルトの CPU タイプである。

-mips3

MIPS ISA のレベル 3 の命令(64ビット命令)を発行する。 ‘r4000’ が、この ISA レベルのデフォルトの CPU タイプである。

-mips4

MIPS ISA のレベル 4 の命令(条件付き move 命令、プリフェッチ命令、 強化された FPU 命令)を発行する。‘r8000’ は、この ISA レベルの デフォルトの cpu type である。

-mfp32

32個の32ビット浮動小数点レジスタが利用可能であることを仮定する。 これはデフォルトである。

-mfp64

32個の64ビット浮動小数点レジスタが利用可能であることを仮定する。 これは、‘-mips3’ オプションが指定されたときのデフォルトである。

-mgp32

32個の32ビット汎用レジスタが利用可能であることを仮定する。 これはデフォルトである。

-mgp64

32個の64ビット汎用レジスタが利用可能であることを仮定する。 これは、‘-mips3’ オプションが指定されたときのデフォルトである。

-mint64

long 型と int 型を強制的に 64 ビット幅にする。 デフォルトについての説明とポインタの大きさについては ‘-mlong32’ を参照のこと。

-mlong64

long 型を強制的に 64 ビットにする。 デフォルトについての説明とポインタの大きさについては ‘-mlong32’ を参照のこと。

-mlong32

long 型、int 型、ポインタ型を強制的に 32 ビット幅にする。

-mlong32’、‘-mlong64’、‘-mint64’ のどれも指定 されていないと、int、long、ポインタのサイズは、ABI と選択された ISA に 依存する。‘-mabi=64’ の場合、int は 32 ビット幅で long は 64 ビット幅 である。‘-mabi=eabi’ の場合、‘-mips1’ か ‘-mips2’ が 指定されていると、int と long は 32 ビット幅になる。‘-mabi=eabi’ の 場合、それより高い ISA が指定されていると、int は 32 ビット幅で、 long が 64 ビット幅になる。ポインタ型の幅は、long の幅と汎用レジスタの 幅の小さいほうになる(これは、ISA に依存する)。

-mabi=32
-mabi=o64
-mabi=n32
-mabi=64
-mabi=eabi

指定された ABI 用のコードを生成する。デフォルトの命令レベルは、 ‘32’ に対しては ‘-mips1’ であり、‘n32’ に対しては ‘-mips3’、その他に対しては ‘-mips4’ である。逆に、 ‘-mips1’ か ‘-mips2’ を指定するとデフォルトの ABI は ‘32’ になり、それ以外は ‘64’ になる。

-mmips-as

MIPS アセンブラ用のコードを生成し、通常のデバッグ情報を追加するために ‘mips-tfile’ を起動する。これは、OSF/rose オブジェクト形式を 使っている、OSF/1 参照プラットフォーム以外の全てのプラットフォームでの デフォルトである。‘-gstabs’ か ‘-gstabs+’ の どちらかのオプションを使うと、‘mips-tfile’ プログラムが、 MIPS ECOFF 内に stabs 形式のデバッグ情報を包み込む。

-mgas

GNU アセンブラ用のコードを生成する。これは、OSF/rose オブジェクト形式 を使っている、OSF/1 の参照プラットフォームではデフォルトである。 また、configure のオプション ‘--with-gnu-as’ が指定されたときの デフォルトでもある。

-msplit-addresses
-mno-split-addresses

アドレス定数の上位部と下位部を別々にロードするコードを生成する。 これにより、gcc が、アドレスの上位ビットを無駄にロードしないように 最適化することが可能になる。 この最適化には、GNU as と GNU ld が必要になる。 この最適化は、GNU as と GNU ld が標準のツールである幾つかの組み込み ターゲットではデフォルトで有効になる。

-mrnames
-mno-rnames

-mrnames’ を指定すると、レジスタ名として、ハードウェア名の代わりに、 MIPS のソフトウェア名(例えば、$4 の代わりに a0)を 使ったコードを出力する。このオプションをサポートしているアセンブラは Algorithmics のアセンブラだけである。

-mgpopt
-mno-gpopt

-mgpopt’ オプションを指定すると、全てのデータ宣言を、 テキストセクションの命令部分の前に書き出す。これにより MIPS のアセンブラが 小さいグローバルおよび静的データ項目に対し、二語ではなく、一語による メモリ参照を生成することが可能になる。最適化が指定されている場合には、 これはデフォルトで有効になる。

-mstats
-mno-stats

-mstats’ オプションを指定すると、非インライン関数が処理される 度に、標準エラー出力に一行出力し、プログラムの統計情報(セーブされた レジスタ数、スタックの大きさ等)を表示する。

-mmemcpy
-mno-memcpy

-mmemcpy’ オプションを指定すると、全てのブロック移動に対し、 インラインコードを生成する代わりに、適切な文字列関数(‘memcpy’ か ‘bcopy’)を呼び出すようにする。

-mmips-tfile
-mno-mips-tfile

-mno-mips-tfile’ を指定すると、MIPS のアセンブラがデバッグ情報を 追加した後のオブジェクトファイルに対し、‘mips-tfile’ プログラムに よる後処理を行なわない。‘mips-tfile’ を実行しておかないと、 デバッガからローカル変数の情報が扱えなくなる。さらに、‘stage2’ と ‘stage3’ のオブジェクトには、アセンブラに渡された 一時ファイル名が、オブジェクトファイル内に埋め込まれた形で 入っている。このため、‘stage2’ のオブジェクトと ‘stage3’ のオブジェクトが同じになることはない。‘-mno-mips-tfile’ オプションを 指定するのは、‘mips-tfile’ プログラムにバグがあり、コンパイルが 行えない場合にだけに術器である。

-msoft-float

浮動小数点用ライブラリ呼び出しを含む出力を生成する。 警告: 必要となるライブラリは GCC の一部ではない。 普通はその機種の通常の C コンパイラの機能が 使われるが、クロスコンパイルの場合はこれをそのまま行なうことはできない。 クロスコンパイルの場合は、適切なライブラリ関数を自分で用意しなければ ならない。

-mhard-float

浮動小数点命令を含む出力を生成する。これは、GCC のソースを変更しなければ、 デフォルトである。

-mabicalls
-mno-abicalls

位置独立コード用に、System V.4 用の移植で使っている疑似命令 ‘.abicalls’、‘.cpload’、‘.cprestore’ を生成する (あるいは生成しない)。

-mlong-calls
-mno-long-calls

全ての呼出しを ‘JALR’ 命令で行う。このためには、呼出しの前に、 関数のアドレスをレジスタにロードしておく必要がある。 このオプションを使う必要があるのは、現在の 512 メガバイトのセグメント の外側の関数を、ポインタ経由でなく呼び出す場合である。

-mhalf-pic
-mno-half-pic

外部参照へのポインタを、テキストセクションに置くのではなく、 データセクションに置いてロードするようにする。

-membedded-pic
-mno-embedded-pic

いくつかの組み込みシステム向けに適した PIC コードを生成する。 全ての呼出しは PC 相対アドレスを使って行われ、全てのデータのアドレスは $gp レジスタを使って扱われる。これには、そのための作業のほとんどを 行う GNU as と GNU ld が必要である。これは、現在、ECOFF を 使っているターゲットでしか動作していない。ELF では動いていない。

-membedded-data
-mno-embedded-data

可能であれば、変数を、まず最初に読み出し専用データセクションに割り当てる。 次に可能であれば、小データセクションに割り当てる。さもなければ、 データセクションに置く。こうすると、デフォルトよりも幾分遅いコードに なるが、実行時に必要な RAM の量が小さくなるので、いくつかの組み込みシステム にとっては望ましいだろう。

-msingle-float
-mdouble-float

-msingle-float’ オプションを指定すると、‘r4650’ チップのように、 浮動小数点コプロセッサが単精度演算しかサポートしていないと 想定する。‘-mdouble-float’ オプションを指定すると、 倍精度演算を使うようになる。こちらがデフォルトである。

-mmad
-mno-mad

r4650’ チップの場合のように、‘mad’、‘madu’、‘mul’ 命令を使うことを許す。

-m4650

-msingle-float’、‘-mmad’、それに少なくとも現在のところでは、 ‘-mcpu=r4650’ を有効にする。

-mips16
-mno-mips16

16ビット命令を有効にする。

-mentry

疑似命令 entry と exit を使う。このオプションは ‘-mips16’ を 一緒にしか使えない。

-EL

リトルエンディアン・モードのプロセッサ用にコードをコンパイルする。 必要となるライブラリが存在すると仮定する。

-EB

ビッグエンディアン・モードのプロセッサ用にコードをコンパイルする。 必要となるライブラリが存在すると仮定する。

-G num

num バイト以下の大きさのグローバルなデータ項目と静的な データ項目を、普通のデータセクションや bss セクションではなく、 小データセクションや小 bss セクションに置く。 これにより、アセンブラが、通常の 2 命令のメモリ参照の代わりに、 グローバルポインタ(gp あるいは $28)に基づいた 一命令のメモリ参照を生成することが可能になる。 num のデフォルト値は、MIPS のアセンブラを使う場合には 8 で、 GNU アセンブラを使う場合には 0 である。 ‘-G num’ オプションはアセンブラとリンカにも渡される。 全てのモジュールは、同じ値の ‘-G num’ でコンパイル しなければならない。

-nocpp

MIPS アセンブラに対し、ユーザのアセンブラソースファイル(サフィックスが ‘.s’ のもの)をアセンブルするときに、アセンブラのプリプロセッサを 実行しないように指示する。

これらのオプションは、マシン記述の TARGET_SWITCHES マクロで 定義されている。こられのオプションのデフォルトも、このマクロで定義 されているので、デフォルトを変更するが可能である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated using texi2html 1.78.