2

LOCAL_CFLAGS は、C ソース ファイルのビルド時に渡されるコンパイラ フラグのオプション セットであることを知っています。私の質問は、このフラグが「-mno-thumb」を意味するか、または使用可能な LOCAL_CFLAGS とその意味のリストをどこで見つけることができるかです。

前もって感謝します!!

4

2 に答える 2

5

ファイル内のLOCAL_CFLAGSオプションは、コンパイル オプションを指定するためにコンパイラで通常使用される通常のCFLAGSAndroid.mkと同等です。

そのようなオプションはたくさんあります。それらのほとんどのドキュメントは、たとえば、このページの GCC ドキュメントのさまざまなリンクにあります。

オプションに関しては、ほとんどの (最近の) ARM プロセッサで使用可能なThumbオプション命令セットを-mno-thumb無効にします。この命令セットは、制限付きで、通常の ARM 命令よりも高速で低速な (編集: whobertoos の回答を参照) 命令セットであるため、このフラグを使用して無効にすると、より多くの (主に古い) プロセッサとの互換性が保証されますが、おそらくパフォーマンスが低下します。片方。

于 2013-05-15T09:03:54.447 に答える
1

ムブレノンは、彼が書いたほとんどすべてにおいて正しい。ただし、THUMB 命令セットは ARM 命令セットよりも低速です。必要なスペースは少なくなりますが、遅くなります。

それはどうですか。各サム命令は、アーム命令と比較して半分のスペースを占有します。これにより、パラメータ、アドレス指定モードなど、各命令で使用できるオプションが制限されます。これにより、同じジョブを実行するために必要な命令が増え、各命令が 1 つの実行サイクルを必要とするため、速度が低下します。ARM モードでのプログラムは 30 ~ 40% 高速であると推定されますが、THUMB モードでのプログラムは 30 ~ 40% 少ないスペースしか必要としません。Thumb は、メモリが制限されたシステム用に発明されました。

Thumb モードは、外部メモリの電力にも影響します。

ほとんどの場合、実行する必要がある命令はさらに多くありますが、1 サイクルで 2 つの命令をフェッチできます。これが私の理解です。それが完全な答えかどうかは100%わかりません。

于 2014-04-18T09:24:01.733 に答える