8.77 --execute_only

すべてのコードセクションで EXECONLY 属性を AREA ディレクティブに追加して実行専用コードを生成し、コンパイラがコードセクションにデータアクセスを生成するのを防ぎます。

コードとデータを別々のセクションに保持するため、コンパイラはリテラルプールと分岐テーブルを無効にします。つまり、--execute_only を指定すると、以下のコンパイラオプションが暗黙的に指定されます。
  • --no_integer_literal_pools
  • --no_float_literal_pools
  • --no_string_literal_pools
  • --no_branch_tables

制約条件

実行専用コードは、Thumb コードでなければなりません。
実行専用コードがサポートされているのは、以下のものです。
  • Cortex-M3、Cortex-M4、Cortex-M7 など、ARMv7-M アーキテクチャをサポートするプロセッサ。
  • ARMv6-M アーキテクチャをサポートするプロセッサ。

    ARM は、ARMv6-M ターゲットでの実行専用コードの限定テストのみを実施します。
アプリケーションでライブラリ関数を呼び出す場合は、イメージに含まれているライブラリオブジェクトは実行のみに準拠しません。これらのオブジェクトが実行専用メモリ領域に割り当てられていないことを確認する必要があります。

ARM では、リテラルプールを使用せずにビルドされたライブラリを提供しません。さまざまな --no_*_literal_pools オプションを使用した場合でも、ライブラリではリテラルプールを使用しています。
関連する概念
4.21 リテラルプールに対するコンパイラサポート
関連する参考文書
8.108 --integer_literal_pools, --no_integer_literal_pools
8.178 --string_literal_pools、--no_string_literal_pools
8.18 --branch_tables、--no_branch_tables
8.82 --float_literal_pools、--no_float_literal_pools
関連情報
AREA(アセンブラディレクティブ)
実行専用メモリのアプリケーションのビルド
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.