LOCAL_CFLAGS は、C ソース ファイルのビルド時に渡されるコンパイラ フラグのオプション セットであることを知っています。私の質問は、このフラグが「-mno-thumb」を意味するか、または使用可能な LOCAL_CFLAGS とその意味のリストをどこで見つけることができるかです。
前もって感謝します!!
LOCAL_CFLAGS は、C ソース ファイルのビルド時に渡されるコンパイラ フラグのオプション セットであることを知っています。私の質問は、このフラグが「-mno-thumb」を意味するか、または使用可能な LOCAL_CFLAGS とその意味のリストをどこで見つけることができるかです。
前もって感謝します!!
ファイル内のLOCAL_CFLAGS
オプションは、コンパイル オプションを指定するためにコンパイラで通常使用される通常のCFLAGSAndroid.mk
と同等です。
そのようなオプションはたくさんあります。それらのほとんどのドキュメントは、たとえば、このページの GCC ドキュメントのさまざまなリンクにあります。
オプションに関しては、ほとんどの (最近の) ARM プロセッサで使用可能なThumbオプション命令セットを-mno-thumb
無効にします。この命令セットは、制限付きで、通常の ARM 命令よりも高速で低速な (編集: whobertoos の回答を参照) 命令セットであるため、このフラグを使用して無効にすると、より多くの (主に古い) プロセッサとの互換性が保証されますが、おそらくパフォーマンスが低下します。片方。
ムブレノンは、彼が書いたほとんどすべてにおいて正しい。ただし、THUMB 命令セットは ARM 命令セットよりも低速です。必要なスペースは少なくなりますが、遅くなります。
それはどうですか。各サム命令は、アーム命令と比較して半分のスペースを占有します。これにより、パラメータ、アドレス指定モードなど、各命令で使用できるオプションが制限されます。これにより、同じジョブを実行するために必要な命令が増え、各命令が 1 つの実行サイクルを必要とするため、速度が低下します。ARM モードでのプログラムは 30 ~ 40% 高速であると推定されますが、THUMB モードでのプログラムは 30 ~ 40% 少ないスペースしか必要としません。Thumb は、メモリが制限されたシステム用に発明されました。
Thumb モードは、外部メモリの電力にも影響します。
ほとんどの場合、実行する必要がある命令はさらに多くありますが、1 サイクルで 2 つの命令をフェッチできます。これが私の理解です。それが完全な答えかどうかは100%わかりません。