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

2.14.6 ARM オプション

以下のオプションが、Advanced RISC Machines (ARM) アーキテクチャ用に 定義されている

-mapcs-frame

コードを正しく実行するには必ずしも必要でなくても、全ての関数に対し、 ARM Procedure Call Standard に準拠したスタックフレームを生成する。 このオプションと合わせて ‘-fomit-frame-pointer’ を 指定すると、末端関数に対してはスタックフレームが生成されなくなる。 デフォルトは ‘-mno-apcs-frame’ である。

-mapcs

これは ‘-mapcs-frame’ の別名である。

-mapcs-26

プログラムカウンタが 26 ビットのプロセッサ用で、APCS 26 ビットオプション用の 関数呼出し規約に準拠するコードを生成する。 このオプションは、GCC の以前のリリースの ‘-m2’ オプションと ‘-m3’ オプションを置き換えるものである。

-mapcs-32

プログラムカウンタが 32 ビットのプロセッサ用で、APCS 32 ビットオプション用の 関数呼出し規約に準拠するコードを生成する。 このオプションは、GCC の以前のリリースの ‘-m6’ オプションを 置き換えるものである。

-mapcs-stack-check

あらゆる関数(実際に少しでもスタックスペースを使うもの)の入り口点で、 利用可能なスタックスペースの量を検査するコードを生成する。 利用できるスタックスペースが足りなければ、 関数 ‘__rt_stkovf_split_small’ か ‘__rt_stkovf_split_big’ の どちらかが呼ばれる。どちらが呼ばれるかは必要とするスタックスペース量に よる。実行時システムはこれらの関数を提供する必要がある。 デフォルトは、‘-mno-apcs-stack-check’ である。生成されるコードが 小さいからである。

-mapcs-float

浮動小数点引数を浮動小数点レジスタを使って渡す。これは APCS の変種の 一つである。このオプションは、ターゲットハードウェアが浮動小数点ユニット を持っている場合や、浮動小数点算術演算を大量に実行する場合に お勧めである。デフォルトは ‘-mno-apcs-float’ である。 整数しか含まないコードは、‘-mapcs-float’ を指定すると わずかにサイズが大きくなるためである。

-mapcs-reentrant

再入可能な位置独立コードを生成する。これは、‘-fpic’ オプションを 指定するのに等価である。デフォルトは、‘-mno-apcs-reentrant’ である。

-mthumb-interwork

ARM と THUMB の命令セット間での呼びだしをサポートするコードを生成する。 このオプションを指定しないと、二つの命令セットを一つのプログラムの 中で使用するのは信頼性に欠けることになる。デフォルトは、、 ‘-mno-thumb-interwork’ である。‘-mthumb-interwork’ を 指定するとわずかにコードが大きくなるためである。

-mno-sched-prolog

関数プロローグ内の命令並べ替えや、関数プロローグの命令と関数本体の 命令の混合を抑止する。これは、全ての関数がある見分けの付く命令のセット で始まる(あるいは、実際には、異なる関数プロローグの幾つかのセットから 一つ選んだもので始まる)ということを意味する。この情報を使って、 関数が実行可能なコード断片の中にあるときにその関数の開始位置を見つける ことが出来る。デフォルトは、‘-sched-prolog’ である。

-mhard-float

浮動小数点命令を含む出力を生成する。これがデフォルトである。

-msoft-float

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

-msoft-float’ を指定すると、出力ファイル中の呼び出し規約が変わる。 このため、プログラム全体をこのオプションでコンパイルしないと いけない。特に、GCC 付属のライブラリである、‘libgcc.a’ を コンパイルするときに、‘-msoft-float’ を指定してコンパイルしないと このライブラリが正しく動作しない。

-mlittle-endian

リトル・エンディアンモードで動作するプロセッサ向けのコードを生成する。 これが、全ての標準のコンフィギュレーションのデフォルトである。

-mbig-endian

ビッグ・エンディアンモードで動作するプロセッサ向けのコードを生成する。 デフォルトは、リトル・エンディアンのプロセッサ向けのコードをコンパイル するものである。

-mwords-little-endian

このオプションは、ビッグ・エンディアンのプロセッサ用のコードを 生成する時にのみ適用される。語に関してはリトル・エンディアンだが、 バイトに関してはビッグ・エンディアンのコードを生成する。 すなわち、バイト順は ‘32107654’ という形である。 このオプションを使うのは、ビッグ・エンディアンの ARM プロセッサ用のコードで、 GCC の 2.8 以前のバージョンで生成されたものとの互換性が必要な 場合だけにすべきである。

-mshort-load-bytes

半語(例えば ‘short’型)をロードするのに、整列していない アドレスから語をロードすることで行なうことをしない。 ターゲットの中には、MMU が、整列していないアドレスからのロードを トラップするよう設定されているものがある。このオプションを使って、 そういう環境でも安全なコードを生成する。

-mno-short-load-bytes

半語(‘short’型等)をロードするのに、整列していないアドレスから 語をロードすることで行なう。このオプションを使うと、効率の良いコードが 得られるが、MMU はこれらの命令をトラップするように設定されていることがある。

-mshort-load-words

これは ‘-mno-short-load-bytes’ の別名である。

-mno-short-load-words

これは、‘-mshort-load-bytes’ の別名である。

-mbsd

このオプションは RISC iX にのみ使える。 ネイティブの BSD モードのコンパイラをエミュレートする。 これは、‘-ansi’ が指定されない場合のデフォルトである。

-mxopen

このオプションは RISC iX にのみ使える。 ネイティブの X/Open モードのコンパイラをエミュレートする。

-mno-symrename

このオプションは RISC iX にのみ使える。 アセンブラの後処理プログラム ‘symrename’ を、コードがアセンブル された後で実行しない。普通は、RISC iX C ライブラリとリンクするための 下準備として、標準のシンボルをいくらか修正する必要がある。 このオプションはその修正過程を抑止する。 後処理プログラムは、GCC がクロスコンパイラとして構築された場合には 決して実行されない。

-mcpu=<name>
-mtune=<name>

これは、ターゲットの ARM プロセッサ名を指定する。GCC はこの名前を 使って、アセンブリコードを生成するときに使える命令の種類を決定する。 指定できる名前は次の通り。 arm2、arm250、arm3、arm6、arm60、 arm600、arm610、arm620、arm7、arm7m、arm7d、arm7dm、arm7di、arm7dmi、 arm70、arm700、arm700i、arm710、arm710c、arm7100、arm7500、arm7500fe、 arm7tdmi、arm8、strongarm、strongarm110、strongarm1100、arm8、arm810、 arm9、arm9tdmi。‘-mtune=’ は ‘-mcpu=’ の別名であり、 古いバージョンの GCC をサポートするためある。

-march=<name>

これは、ターゲットの ARM のアーキテクチャ名を指定する。GCC はこの名前を 使って、アセンブリコードを生成するときに使える命令の種類を決定する。 このオプションは、‘-mcpu=’ オプションと組み合わせて、あるいは ‘-mcpu=’ オプションの代わりに使うことが出来る。 指定できる名前は、armv2、armv2a、armv3、armv3m、armv4、armv4t である。

-mfpe=<number>
-mfp=<number>

これは、ターゲットで利用可能な浮動小数点エミュレーションのバージョンを 指定する。指定できる値は 2 と 3 である。‘-mfp=’ は ‘-mfpe=’ の別名であり、古いバージョンの GCC をサポートするためにある。

-mstructure-size-boundary=<n>

全ての構造体と共用体の大きさを、このオプションで指定するビット数の 倍数に切り上げる。指定可能な値は 8 と 32 である。デフォルト値は、 ツール・チェーンが異なると変わってくる。COFF 向けのツールチェーンに 対してはデフォルト値は 8 である。 大きい数を指定すればそれだけ高速で効率の良いコードが得られるが、 プログラムのサイズも大きくなる。指定できる二つの値は、潜在的には 互換性がない。一方の値でコンパイルしたコードは、もう一方の値で コンパイルしたコードやライブラリと合わせたとき、それが構造体や 共用体を使った情報を交換している場合には、動作するとは 必ずしも期待できない。プログラマの皆さんには 32 という値を 使うことをお勧めする。ツールチェーンの将来のバージョンでは、 デフォルトがこの値になる可能性があるからである。

-mabort-on-noreturn

noreturn 関数の最後に関数 abort の呼出しを生成する。 これは関数が戻ろうとしたときに実行される。


This document was generated using texi2html 1.78.