A.1 『armcc コンパイラユーザガイド』に対する改訂

『armcc コンパイラユーザガイド』に対して、 以下の技術的変更が加えられました。

表 A-1 発行 K と発行 L の相違点

変更点
関連するトピック
文字列は .conststring.constdata の両方に保存できることを明確にしました。 8.178 --string_literal_pools、--no_string_literal_pools
リストに __TARGET_FEATURE_EXTENSION_REGISTER_COUNT 定義を追加しました。 10.161 定義済みマクロ
C++ スマートポインタはサポートされていないことを明確にしました。 11.13 C++11 でサポートされている機能
--common_functions、--no_common_functions トピックを追加しました。 8.26 --common_functions、--no_common_functions
CSPR レジスタは、Cortex-M シリーズのプロセッサでは使用できないことを明記しました。 10.159 名前付きレジスタ変数
--device=name の説明を削除しました。 章 8 コンパイラのコマンドラインオプション
状態を更新し、--gnu_version のデフォルトが 40700 になりました。 8.95 --gnu_version=version

表 A-2 発行 J と発行 K の相違点

変更点
関連するトピック
ARM コンパイラでサポートされている機能およびリリース間のコード生成について一般的なメモを追加しました。 1.1 コンパイラ
新しい C++11 サポートについて記載しました。
新しい Cortex-M7 および Cortex-A17 プロセッサ。
プリコンパイルヘッダ(PCH)ファイルのサポートが廃止される予定であるというメモを追加しました。
さまざまなトピック。
ライブラリおよびノーリテラルプールに関するメモを追加しました。 8.77 --execute_only
--gnu_instrument オプションが廃止される予定であるというメモを追加しました。
ARMv7 のトピックを更新しました。 8.187 --unaligned_access、--no_unaligned_access
デフォルトでコンパイラのデータフロー警告が表示されないことを説明しました。 6.6 コンパイラデータフロー警告
「使用法」セクションを追加し、サンプルのコメントを修正しました。 10.7 __global_reg
サンプルを詳しくしました。 6.3 プラグマを使用したコンパイラの診断メッセージの制御
サンプルを追加しました。 10.88 #pragma import symbol_name
コンパイラが UTF-8 または UTF-16 でエンコードされたソースファイルをどのように扱うのかを説明し、--locale オプションと --[no_]multibyte_chars オプションのデフォルト値を明記しました。
名前付きレジスタ変数の宣言に関するガイダンスを明確にしました。
#pragma [no_]exceptions_unwind が、--[no_]exceptions_unwind をオーバーライドすることを説明しました。
--message_locale オプションで、zh_CN 設定と ko_KR 設定がサポートされなくなりました。

表 A-3 発行 I と発行 J の相違点

変更点
関連するトピック
『コンパイラリファレンス』のいくつかの章を『armcc コンパイラユーザガイド』にも記載しました。今後は、『コンパイラリファレンス』は独立したマニュアルとしては提供されなくなります。
新しい Cortex-A12 プロセッサについて記載しました。
リテラルプールのコンパイラサポートに関するトピックを追加しました。 4.21 リテラルプールに対するコンパイラサポート.
--execute_only コマンドラインオプションを追加しました。
8.77 --execute_only.
--integer_literal_pools コマンドラインオプションを追加しました。
8.108 --integer_literal_pools, --no_integer_literal_pools.
--float_literal_pools コマンドラインオプションを追加しました。
8.82 --float_literal_pools、--no_float_literal_pools.
--string_literal_pools コマンドラインオプションを追加しました。
8.178 --string_literal_pools、--no_string_literal_pools.
--branch_tables コマンドラインオプションを追加しました。
8.18 --branch_tables、--no_branch_tables.
--diag_error=warning の使用法を明確にしました。 6.2 コンパイラ診断メッセージの重大度を変更するオプション.
-Onum がデバッグビューに及ぼす影響に関する情報を詳しくしました。 5.3 コンパイラ最適化レベルとデバッグビュー.
コンパイラが、__ldrex(d)__strrex(d) 組み込み関数のために生成される命令の間に、ロード命令とストア命令を生成する可能性があるというメモを追加しました。
ブロックスコープにはエイリアスを指定できないことを明確にしました。
__qsub() 組み込み関数を使用すると、コンパイラを最適化できる可能性があることについてのメモを追加しました。 10.134 __qsub コンパイラ組み込み関数.
環境変数の参照を ARMCCn_ から ARMCC5_ に変更しました。
さまざまなトピック。
ヒープ上に可変長配列が作成されることを明確にしました。
組み込み関数マニュアルのアクセス幅データテーブルについて、明確にしました。
さまざまなトピック。
-Onum マニュアル内の情報を明確にしました。 8.139 -Onum.
構造体内の __packed ビットフィールドに関する情報を明確にしました。 11.4 ARM C および C++ での構造体、共用体、列挙型、ビットフィールド.
Cortex-M4.fp のために列挙された暗示的 FPU を FPv4-SP に修正しました。 5.53 プロセッサおよび暗黙の浮動小数点ユニット(FPU).
欠けていた __TARGET_FPU_ バリアントを追加しました。 10.161 定義済みマクロ.
__memory_changed 組み込み関数マニュアルを明確にしました。 10.126 __memory_changed コンパイラ組み込み関数.
__cdp 組み込み関数マニュアルを明確にしました。 10.107 __cdp コンパイラ組み込み関数.
--reassociate_saturation オプションの説明を明確にしました。 8.159 --reassociate_saturation、--no_reassociate_saturation.

表 A-4 発行 H と発行 I の相違点

変更点 関連するトピック
新トピック。 8.124 --loop_optimization_level=opt.
トピック --ltcg を削除しました。 --ltcg(このトピックは、発行 I から削除されました)。
同等の組み込み関数がない NEON 命令に関する情報を追加しました。 18.36 同等のコンパイラ組み込み関数のない NEON 命令.
特殊なライセンスを必要とする --vectorize に関するメモを削除しました。 8.192 --vectorize、--no_vectorize.
廃止予定のマニュアル『ARM コンパイラツールチェーンおよび GNU ライブラリでの Linux アプリケーションのビルド』へのリンクを削除しました。 さまざまなトピック。
廃止予定の -S 引数ではなく --asm 引数を使用するサンプルを更新しました。 8.14 --asm_dir=directory_name.
--depend_dir--depend の間の対話を正しく表示するサンプルを更新しました。 8.52 --depend_dir=directory_name.
--multifile-o の間の対話を明確にし、ソースファイル数、コード構造、およびコンパイル時間の間の関係を明確にしました。 8.134 --multifile, --no_multifile.
__irq キーワードに関する情報を更新しました。 10.11 __irq.
__attribute__((alias)) 関数と変数属性を明確にしました。
ビットフィールドコンテナにおけるパディングの上書きに関するメモを追加しました。 11.4 ARM C および C++ での構造体、共用体、列挙型、ビットフィールド.
診断メッセージ番号範囲の重複が原因で問題が発生する可能性があることに関するメモを削除しました。これは、今回のリリースで、影響を受けるメッセージの番号の割り振りが見直されて、問題が解決したためです。
新しい --loop_optimization_level オプションをコンパイラオプションのリストに追加しました。 2.2 コンパイラコマンドラインオプションのグループ別一覧.
変更した C3nnn メッセージ番号を C4nnn に更新しました。
-O2 を使用するコマンドラインオプションのサンプルを修正しました。 2.4 コンパイラコマンドラインオプションの順序.
LTCG に関する言及をすべて削除しました。
ベアメタルに対して NEON と FPU を有効にすることに関する情報を追加しました。
プラグマを使用して診断メッセージを制御することに関する情報を追加しました。 6.3 プラグマを使用したコンパイラの診断メッセージの制御.
該当する場合、16 ビット Thumb と 32 ビット Thumb が独立した命令セットであることを暗示する用語を変更しました。 さまざまなトピック。

表 A-5 発行 G と発行 H の相違点

変更点 関連するトピック
使用法のサブトピックを追加しました。
Cortex-M0+ のサポートについて記載しました。
--no_rtti_data を使用した RTTI データの生成に関する説明を変更しました。
副作用のある関数のさまざまな取り扱いを副作用のない関数と対比して、スケジューリングのバリアを設定する組み込み関数別に明確にしました。
診断メッセージ番号範囲の重複が原因で問題が発生する可能性があることに関するメモを追加しました。
スタック消費量の推定/測定に関する情報を追加しました。 5.11 C および C++ のスタックの使用.
インラインアセンブラでどの LDM 命令がサポートされていないのかを明確にしました。 7.12 C および C++ コードのインラインアセンブラの命令の制限.
Cortex-M0+ のサポートについて記載しました。 5.53 プロセッサおよび暗黙の浮動小数点ユニット(FPU).
トピックを 2 つ追加しました。

表 A-6 発行 F と発行 G の相違点

変更点
関連するトピック
アドレスが取得されるフィールドでの __packed#pragma パックの違いを明確にしました。
コンパイラは、プラグマ STDC CX_LIMITED_RANGESTDC FENV_ACCESS、および STDC FP_CONTRACT を認識しても、これらをサポートしないことに言及しました。
必要に応じて、16 ビット Thumb または 32 ビット Thumb ではなく、代わりに Thumb または Thumb-2 テクノロジについて言及しました。
さまざまなトピック。
armcc -E によって暗黙のインクルードが無効になることを注記しました。
__TARGET_FPU_xx にある VFPv4 に対する 2 つのエントリを追加しました。
C55x 組み込み関数サポートに関する制約条件を追加しました。
GNU モードは C/C++ 標準への準拠にも影響することに言及しました。
副作用のある式を推奨しない使用法セクションの一部について言及し、テキストを明確にしました。
物理レジスタに直接アクセスしない参照を削除しました。
Cortex-A7 を追加しました。
複数の weak 定義がある場合の __weak キーワードの「使用法」セクションを変更しました。
--fpmode=std または --fpmode=fast オプションと併用した NaN は、定義されていない動作を生成できることに言及しました。
関数属性の「使用法」セクションを追加しました。
Thumb または Thumb-2 テクノロジを優先して 32 ビット Thumb の使用を削減しました。
さまざまなトピック。
アドレスが取得されるフィールドでの __packed#pragma パックの違いを明確にしました。 5.40 パックされていない struct、__packed struct、個々の __packed フィールドを使用した struct の比較と、__packed struct と #pragma でパックされた struct の比較.
必要に応じて、16 ビット Thumb または 32 ビット Thumb ではなく、代わりに Thumb または Thumb-2 テクノロジについて言及しました。
さまざまなトピック。
VFPv4 についての 3 つのエントリを追加しました。 5.44 ベクタ浮動小数点(VFP)アーキテクチャ.
Cortex-A7 を追加しました。
ゼロによる整数除算に関連するトピックを改訂しました。

表 A-7 発行 E と発行 F の相違点

変更点
関連するトピック
--device オプションが廃止される予定であるというメモを追加しました。
--device=name
armcc がサポートしている gcc の最大バージョンに関するメモを追加しました。
降格エラーも -J で非表示になることに言及しました。
--licretry オプションの説明を変更しました。
--protect_stack オプションを追加しました。
--version_number オプションの説明を変更しました。
--vsn オプションの説明を変更しました。
__ARMCC_VERSION 形式の説明を変更しました。
適切な場合、
  • Thumb-1 を 16 ビット Thumb に変更しました。
  • Thumb-2 を 32 ビット Thumb に変更
  • Thumb-2EE を ThumbEE に変更しました。
さまざまなトピック。
ARMCCnn_CCOPT 環境変数と ARMCCnnINC 環境変数をそれぞれ ARMCCn_CCOPTARMCCnINC に変更しました。
さまざまなトピック。

表 A-8 発行 D と発行 E の相違点

変更点
関連するトピック
--reassociate_saturation の使用法の記述を改善しました。
オペコードとレジスタのエンコーディングの詳細を追加しました。
--allow_fpreg_for_nonfpdata--no_allow_fpreg_for_nonfpdata のオプションを追加しました。
--conditionalize--no_conditionalize のオプションを追加しました。
SC000 を --cpu オプションのテーブルに追加しました。
SC300 と SC000 を --compatible オプションのテーブルに追加しました。
--depend=filename を変更し、複数ファイルの場合、生成される依存関係ファイルにはすべてのソースファイルからの依存関係ラインが含まれることを記述しました。
__global_reg 記憶域クラス指定子と共に使用した場合、volatile は無視されるという注意を追加しました。
ゼロによる整数除算に関連するトピックの説明を改訂しました。
インラインアセンブラで VFPv2 命令をサポートすることについて言及しました。インラインアセンブラで、VFPv3 以上で追加された命令をサポートしないことについて言及しました。
インラインアセンブラの制限の説明を変更しました。
インラインアセンブラでのコプロセッサ命令の使用は推奨されないため、インラインアセンブラでコプロセッサ命令を使用する例を削除しました。インラインアセンブラで VFP 命令を使用する新しい例を追加しました。 7.11 C および C++ コードのインラインアセンブラのベクタ浮動小数点(VFP)の制限.
インラインアセンブラと組み込みアセンブラの相違点を示す VFP および NEON の行を追加しました。
適切な場合、
  • Thumb に 16 ビットの接頭辞を付けました。
  • Thumb-1 を 16 ビット Thumb に変更しました。
  • Thumb-2 を 32 ビット Thumb に変更しました。
さまざまなトピック。
ARMCCnn_CCOPT 環境変数と ARMCCnnINC 環境変数をそれぞれ ARMCCn_CCOPTARMCCnINC に変更しました。 さまざまなトピック。

表 A-9 発行 C と発行 D の相違点

変更点
関連するトピック
コンパイラ組み込み関数の概要の表とペ―ジ番号を追加しました。
構文とコンパイラ組み込み関数の短縮表現を示す表を追加しました。コンパイラ組み込み関数のプロトタイプの軽度なエラーを修正しました。
--profile オプションを削除しました。
ビルトイン GNU アトミックメモリアクセス関数のリストを追加しました。
CPU のリストに Cortex-A15 と Cortex-R7 を追加しました。
オプションを --implicit_using_std から --using_std に変更しました。
各 ARM アーキテクチャバージョンで Thumb アーキテクチャバージョンの表に v7E-M を追加しました。
レジスタの中には一部のアーキテクチャで利用できないものがある旨のメモを追加しました。
--echo オプションを追加しました。
--use_frame_pointer オプションを追加しました。
--depend_single_line オプションと --no_depend_single_line オプションを追加しました。
ARMCCnn* に対する ARMCC41* 環境変数を変更しました。
さまざまなトピック。
ARM コンパイラ v4.1 から ARM コンパイラ 4.1 以降に変更しました。
--library_interface=none オプションを追加しました。
--preprocess_assembly オプションを追加しました。
-Warmcc,--gcc_fallback オプションを追加しました。
--remove_unneeded_entities オプションの説明を変更しました。
変数リストを使用するように --apcs オプションを変更しました。
ARM コンパイラツールチェーンと DS-5 を使用した場合にオプションが不要なことを追記しました。
  • --reinitialize_workdir(このトピックは、発行 J から削除されました)。
  • --workdir=directory(このトピックは、発行 J から削除されました)。
  • --project=filename, --no_project(このトピックは、発行 J から削除されました)。
コマンドラインオプションと検索パスへのリンクを追加しました。
検索パスとして ../include を追加しました。
__cdp のサンプルの変数宣言で const unsigned int を追加しました。また、第 2 オペコードは 3 ビットである必要があるため、ops の値を 0xAB から 0xA3 に変更しました。
ARM および 32 ビット Thumb をサポートするプロセッサ用にコンパイルした場合、__irq 関数は ARM コードまたは Thumb コードにコンパイルするというメモを変更しました。--arm#pragma armARM、Thumb、および ThumbEE 命令セットへのリンクを追加しました。
ARMv6-M および ARMv7-M 以外のアーキテクチャでのみ PC が LR-4 に設定されることに言及しました。さらに、ARMv6-M と ARMv7-M、__irq は、コンパイルされた出力に影響を与えないというメモを追加しました。
廃止の --ltcg に関するメモを追加しました。『コンパイラの使用』の ltcg のトピックへのリンクも追加しました。
 
FPv4_SP を FPv4-SP に変更しました。
ARM 用語集をその他の情報に追加しました。
表記規則とフィードバック
--visibility_inlines_hidden から #pragma GCC visibility を削除しました。
mask および flags ビットについての詳細を追加しました。『コンパイラの使用』の <fenv.h> のトピックについてのメモとリンクも追加しました。「好ましい」を「推奨」に変更しました。
使用法のセクションで、クラス、構造体、共用体、および列挙型について言及しました。この属性を関数と変数に適用できるという記述も追加しました。
--vfp--fpu に変更しました。
複数のソースファイルを指定する場合の --depend オプションの説明を修正しました。
GCC フォールバックの使用に関するトピックを追加しました。 2.14 アプリケーションをビルドする場合の GCC フォールバックの使用.
プロファイラによる最適化に関するトピックを削除しました。 章 4 コンパイラの機能.
ARM プロファイラへの参照を削除しました。 5.9 コードメトリック.
Eclipse Workbench IDE および ARM プロファイラへの参照を削除しました。 5.10 コードサイズとデータサイズの測定用コードメトリック.
C および C++ のスタックの使用に関するトピックを以下のトピックに含めました。
  • スタック消費量の推定方法。
  • スタック消費量を減らす方法。
  • デバッガを使用したスタック消費量の推定。
--info=summary スタックを --info=summarystack に変更しました。また、ARM プロファイラへの参照を削除しました。
関数呼び出しへの分岐をフレーズし直しました。
5.11 C および C++ のスタックの使用.
プロファイラによる最適化についてのメモを削除しました。 5.20 インライン関数.
--profile プロファイラの参照を削除しました。 5.23 インライン関数と、リンク時における未使用のアウトオブライン関数の削除.
ARMCCnn* に対する ARMCC41* 環境変数を変更しました。『ARM コンパイラツールチェーンの概要』の「ツールチェーン環境変数」というトピックへのリンクを追加しました。 さまざまなトピック。
ARM コンパイラ 4.1 から ARM コンパイラ 4.1 以降に変更しました。
Vista に関する言及を削除しました。 4.24 プリコンパイルヘッダ(PCH)ファイル.
Solaris に関する言及を削除しました。
onwards から later に変更し、ARM Compiler 4.1 について言及しました。
FLEXlm ライセンスに関する言及を削除しました。 2.18 コンパイルビルド時間.
コマンドラインで -J が指定されていない場合、コンパイラは ARMCCnnINCARMINC../include の順に検索することを言及しました。 2.10 コンパイラコマンドラインオプションと検索パス.
ARMINC を検索パスのリストに追加しました。 2.9 コンパイラによるヘッダファイルの検索に影響を与える要因.
コンパイラコマンドラインオプションと検索パスへのリンクを追加しました。 2.12 ARMCC5INC 環境変数.
ARMCCnnINC が初期化される可能性があることについての説明を変更しました。 2.12 ARMCC5INC 環境変数.
「コロン(UNIXの場合)…で区切ります」部分を ARMCCnnINC のトピックに移動しました。 2.12 ARMCC5INC 環境変数.
-I-J の両方が指定されている場合に、検索順序を指定しました。 2.10 コンパイラコマンドラインオプションと検索パス.
廃止の --ltcg に関するメモを追加しました。 5.24 関数の自動インライン展開とマルチファイルのコンパイル.
__asmasm のインラインアセンブラ定義には複数の文字列をインクルードできます。

表 A-10 発行 B と発行 C の相違点

変更点
関連するトピック
標準 C90 を C90 に変更するなど、「サポートされるモード」列を更新しました。複合リテラルに GNU C++ を追加しました。可変個引数マクロに C90、C99、C++ を追加しました。__alignof__ の起点を GCC 固有に変更しました。void ポインタ算術演算から GNU C++ を削除しました。
標準 C99 機能のリストからモード(C90 とC++)の記述を削除しました。
ISO 標準に属さない機能のリストから asm キーワードを削除しました。asm キーワードは標準 C++ の一部であることが削除の理由です。asm キーワードは個別に記述されています。
列名を「拡張対象」から「起源」に変更しました。__attribute__* についてのエントリの「起源」列で GCC 固有について言及しました。
ダブルワード境界の整列を 4 ではなく 8 の倍数に変更しました。 5.31 自然なデータ境界整列のメリット.

表 A-11 発行 A と発行 B の相違点

変更点
関連するトピック
コンパイラで、at 属性を不完全型での宣言に使用するとエラーが発生します。
入力パラメータの記述。このコンパイラ組み込み関数は上級ユーザを対象にしているというユーザガイダンス。
戻り値は、符号なし範囲 0 < x < 2 sat  -1 にサチュレートします。
概要と使用法の記述。
--ignore_missing_headers は、依存関係生成オプションが指定されている場合のみ有効です。
rvct30rvct30_c90rvct31rvct31_c90rvct40rvct40_c90 の明確な説明。
ARM Linux 変換オプションを指定して --show_cmdline を使用する場合は、-Warmcc を使用する必要があります。
--show_cmdline が有用な場合。
--default_definition_visibility=visibility が、extern 変数および関数定義のデフォルトの ELF シンボルの可視性を制御することを明確化。
__declspec(dllimport) は、DLL ライブラリへのリンク時に、ダイナミックシンボルテーブルからシンボルをインポートします(文の明確化のみ)。
新トピック。
APSRPSRDSPMVFR1MVFR0FPINSTFPINST2 が追加されました。
追加の GNU 組み込み関数。
キャストする場合の __packed の使用に対する制限を明確化。
Cortex-M4 プロセッサなど、ARM v7E-M アーキテクチャが追加されました。
__TARGET_FEATURE_NEON が追加されました。
ARM コンパイラがサポートする GNU コンパイラ拡張機能である、新しい関数属性。
デフォルトオプションは最適化レベルによって異なります。
次の 2 つがコンパイル可能になったため、「キーワード __align は、変数名のすぐ前に置かれます」は、削除されました。
__align(n) static int x;
static __align(n) int x;
C および C++ 言語に対する GNU 拡張機能。
制限の明確化。
デフォルトオプションは、どの最適化レベルでも同じです。
最適化レベルは、マルチファイルのコンパイルに依存しません。
オプションは、ベクトル化の用途に限定する必要はありません。
ドキュメントから削除されました。技術情報記事として利用可能です。詳細については、「14.1 サポートされている GNU 拡張機能」を参照して下さい。
asm キーワード、case の範囲、共用体のキャスト、文字エスケープシーケンス、複合リテラル、条件、指定済みのイニシャライザ、拡張左辺値、イニシャライザ、インライン関数、値としてのラベル、ポインタ算術演算、ステートメント式、無名のフィールド、長さがゼロの配列。
文の明確化。
文の明確化。
モジュロ 64 からモジュロ 264 の 4 つの組み込み関数のモジュロ結果の値を変更しました。
__ssub16 intrinsic の val オプションの両方に対して加算から減算に変更しました。
新トピック。 4.35 最適化レベルの影響を受けるデフォルトのコンパイラオプション.
新トピック。 4.19 ビットバンド領域の外に配置されたビットバンドオブジェクトをコンパイラが処理する方法.
ファイル名の接尾文字 .i.ii.a.lib.so を追加。 2.7 コンパイラで認識されるファイル名の接尾文字.
接尾文字 .S の使用に関する注意事項。 2.7 コンパイラで認識されるファイル名の接尾文字.
接尾文字 .sx の説明。 2.7 コンパイラで認識されるファイル名の接尾文字.
armlink および armasm 実行可能ファイルの検索条件。 2.3 コンパイラのデフォルトの動作.
promise.c のサンプルコード。 3.19 __promise(expr) によるコンパイラへのループ繰り返し回数の指定.
新トピック。 5.82 未初期化データがゼロで初期化されないようにする方法.
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.