ARM® コンパイラツールチェーン コンパイラリファレンス

バージョン 5.01


List of Topics

表記規則とフィードバック
はじめに
ARM コンパイラについて
ソース言語モード
ISO C90
ISO C99
ISO C++
言語の拡張と言語への準拠
言語拡張機能
言語標準の準拠
C ライブラリと C++ ライブラリ
コンパイラのコマンドラインオプション
-Aopt
--allow_fpreg_for_nonfpdata、--no_allow_fpreg_for_nonfpdata
--allow_null_this、--no_allow_null_this
--alternative_tokens、--no_alternative_tokens
--anachronisms、--no_anachronisms
--apcs=qualifer...qualifier
--arm
--arm_linux
--arm_linux_config_file=path
--arm_linux_configure
--arm_linux_paths
--arm_only
--asm
--asm_dir=directory_name
--autoinline、--no_autoinline
--bigend
--bitband
--brief_diagnostics、--no_brief_diagnostics
--bss_threshold=num
-c
-C
--c90
--c99
--code_gen、--no_code_gen
--compatible=name
--compile_all_input、--no_compile_all_input
--conditionalize、--no_conditionalize
--configure_cpp_headers=path
--configure_extra_includes=paths
--configure_extra_libraries=paths
--configure_gas=path
--configure_gcc=path
--configure_gcc_version=version
--configure_gld=path
--configure_sysroot=path
--cpp
--cpu=list
--cpu=name
--create_pch=filename
-Dname[(parm-list)][=def]
--data_reorder、--no_data_reorder
--debug、--no_debug
--debug_macros、--no_debug_macros
--default_definition_visibility=visibility
--default_extension=ext
--dep_name、--no_dep_name
--depend=filename
--depend_dir=directory_name
--depend_format=string
--depend_single_line、--no_depend_single_line
--depend_system_headers、--no_depend_system_headers
--depend_target=target
--device=list
--device=name
--diag_error=tag[,tag,...]
--diag_remark=tag[,tag,...]
--diag_style={arm|ide|gnu}
--diag_suppress=tag[,tag,...]
--diag_suppress=optimizations
--diag_warning=tag[,tag,...]
--diag_warning=optimizations
--dllexport_all、--no_dllexport_all
--dllimport_runtime、--no_dllimport_runtime
--dollar、--no_dollar
--dwarf2
--dwarf3
-E
--echo
--emit_frame_directives、--no_emit_frame_directives
--enum_is_int
--errors=filename
--exceptions、--no_exceptions
--exceptions_unwind、--no_exceptions_unwind
--execstack、--no_execstack
--export_all_vtbl、--no_export_all_vtbl
--export_defs_implicitly、--no_export_defs_implicitly
--extended_initializers、--no_extended_initializers
--feedback=filename
--force_new_nothrow、--no_force_new_nothrow
--forceinline
--fp16_format=format
--fpmode=model
--fpu=list
--fpu=name
--friend_injection、--no_friend_injection
-g
--global_reg=reg_name[,reg_name,...]
--gnu
--gnu_defaults
--gnu_instrument、--no_gnu_instrument
--gnu_version=version
--guiding_decls、--no_guiding_decls
--help
--hide_all、--no_hide_all
-Idir[,dir,...]
--ignore_missing_headers
--implicit_include、--no_implicit_include
--implicit_include_searches、--no_implicit_include_searches
--implicit_key_function、--no_implicit_key_function
--implicit_typename、--no_implicit_typename
--import_all_vtbl
--info=totals
--inline、--no_inline
--interface_enums_are_32_bit
--interleave
-Jdir[,dir,...]
--kandr_include
-Lopt
--library_interface=lib
--library_type=lib
--licretry
--link_all_input、--no_link_all_input
--list
--list_dir=directory_name
--list_macros
--littleend
--locale=lang_country
--long_long
--loose_implicit_cast
--lower_ropi、--no_lower_ropi
--lower_rwpi、--no_lower_rwpi
--ltcg
-M
--md
--message_locale=lang_country[.codepage]
--min_array_alignment=opt
--mm
--multibyte_chars、--no_multibyte_chars
--multifile, --no_multifile
--multiply_latency=cycles
--narrow_volatile_bitfields
--nonstd_qualifier_deduction、--no_nonstd_qualifier_deduction
-o filename
-Onum
--old_specializations、--no_old_specializations
--old_style_preprocessing
-Ospace
-Otime
--output_dir=directory_name
-P
--parse_templates、--no_parse_templates
--pch
--pch_dir=dir
--pch_messages、--no_pch_messages
--pch_verbose、--no_pch_verbose
--pending_instantiations=n
--phony_targets
--pointer_alignment=num
--preinclude=filename
--preprocess_assembly
--preprocessed
--project=filename、--no_project
--protect_stack、--no_protect_stack
--reassociate_saturation、--no_reassociate_saturation
--reduce_paths、--no_reduce_paths
--reinitialize_workdir
--relaxed_ref_def、--no_relaxed_ref_def
--remarks
--remove_unneeded_entities、--no_remove_unneeded_entities
--restrict、--no_restrict
--retain=option
--rtti、--no_rtti
--rtti_data、--no_rtti_data
-S
--shared
--show_cmdline
--signed_bitfields、--unsigned_bitfields
--signed_chars、--unsigned_chars
--split_ldm
--split_sections
--strict、--no_strict
--strict_warnings
--sys_include
--thumb
--translate_g++
--translate_gcc
--translate_gld
--trigraphs、--no_trigraphs
--type_traits_helpers、--no_type_traits_helpers
-Uname
--unaligned_access、--no_unaligned_access
--use_frame_pointer
--use_gas
--use_pch=filename
--using_std、--no_using_std
--vectorize、--no_vectorize
--version_number
--vfe、--no_vfe
--via=filename
--visibility_inlines_hidden
--vla、--no_vla
--vsn
-W
-Warmcc,option[,option,...]
-Warmcc,--gcc_fallback
--wchar、--no_wchar
--wchar16
--wchar32
--whole_program
--workdir=directory
--wrap_diagnostics、--no_wrap_diagnostics
言語拡張機能
プリプロセッサ拡張機能
#assert
#include_next
#unassert
#warning
C90 で使用可能な C99 言語機能
// コメント
構造体への添字の付加
フレキシブル配列メンバ
C++ および C90 で使用可能な C99 言語機能
可変個引数マクロ
long long
restrict
16 進浮動小数点数
標準の C 言語の拡張機能
定数式
配列とポインタの拡張機能
block-scope 関数の宣言
識別子内のドル記号
トップレベルの宣言
有用な再宣言
外部エンティティ
関数のプロトタイプ
標準の C++ 言語の拡張機能
? 演算子
クラスメンバの宣言
friend
読み出し/書き込み定数
スカラ型定数
非メンバ関数テンプレートの特殊化
型変換
標準 C および標準 C++ 言語の拡張機能
レジスタ変数のアドレス
関数の引数
匿名クラス、匿名構造体、匿名共用体
アセンブララベル
空の宣言
16 進数浮動小数点定数
不完全な列挙型
整数型の拡張機能
ラベルの定義
long float
非スタティックローカル変数
構造体、共用体、列挙型、ビットフィールドの拡張機能
C および C++ 言語に対する GNU 拡張機能
コンパイラ固有の機能
キーワードと演算子
__align
__alignof__
__ALIGNOF__
__asm
__forceinline
__global_reg
__inline
__int64
__INTADDR__
__irq
__packed
__pure
__smc
__softfp
__svc
__svc_indirect
__svc_indirect_r7
__value_in_regs
__weak
__writeonly
__declspec 属性
__declspec(dllexport)
__declspec(dllimport)
__declspec(noinline)
__declspec(noreturn)
__declspec(nothrow)
__declspec(notshared)
__declspec(thread)
関数属性
__attribute__((alias)) 関数属性
__attribute__((always_inline)) 関数属性
__attribute__((const)) 関数属性
__attribute__((constructor[(priority)])) 関数属性
__attribute__((deprecated)) 関数属性
__attribute__((destructor[(priority)])) 関数属性
__attribute__((format_arg(string-index))) 関数属性
__attribute__((malloc)) 関数属性
__attribute__((noinline)) 関数属性
__attribute__((no_instrument_function)) 関数属性
__attribute__((nomerge)) 関数属性
__attribute__((nonnull)) 関数属性
__attribute__((noreturn)) 関数属性
__attribute__((notailcall)) 関数属性
__attribute__((pcs("calling_convention")))
__attribute__((pure)) 関数属性
__attribute__((section("name"))) 関数属性
__attribute__((unused)) 関数属性
__attribute__((used)) 関数属性
__attribute__((visibility("visibility_type"))) 関数属性
__attribute__((weak)) 関数属性
__attribute__((weakref("target"))) 関数属性
型属性
__attribute__((bitband)) 型属性
__attribute__((aligned)) 型属性
__attribute((packed)) 型属性
__attribute__((transparent_union)) 型属性
変数属性
__attribute__((alias)) 変数属性
__attribute__((at(address))) 変数属性
__attribute__((aligned)) 変数属性
__attribute__((deprecated)) 変数属性
__attribute__((noinline)) 定数変数属性
__attribute__((packed)) 変数属性
__attribute__((section("name"))) 変数属性
__attribute__((transparent_union)) 変数属性
__attribute__((unused)) 変数属性
__attribute__((used)) 変数属性
__attribute__((visibility("visibility_type"))) 変数属性
__attribute__((weak)) 変数属性
__attribute__((weakref("target"))) 変数属性
__attribute__((zero_init)) 変数属性
プラグマ
#pragma anon_unions、#pragma no_anon_unions
#pragma arm
#pragma arm section [section_type_list]
#pragma diag_default tag[,tag,...]
#pragma diag_error tag[,tag,...]
#pragma diag_remark tag[,tag,...]
#pragma diag_suppress tag[,tag,...]
#pragma diag_warning tag[, tag, ...]
#pragma exceptions_unwind、#pragma no_exceptions_unwind
#pragma GCC system_header
#pragma hdrstop
#pragma import symbol_name
#pragma import(__use_full_stdio)
#pragma import(__use_smaller_memcpy)
#pragma inline、#pragma no_inline
#pragma no_pch
#pragma Onum
#pragma once
#pragma Ospace
#pragma Otime
#pragma pack(n)
#pragma pop
#pragma push
#pragma softfp_linkage、#pragma no_softfp_linkage
#pragma thumb
#pragma unroll [(n)]
#pragma unroll_completely
#pragma weak symbol、#pragma weak symbol1 = symbol2
命令のコンパイラ組み込み関数
__breakpoint コンパイラ組み込み関数
__cdp コンパイラ組み込み関数
__clrex コンパイラ組み込み関数
__clz コンパイラ組み込み関数
__current_pc コンパイラ組み込み関数
__current_sp コンパイラ組み込み関数
__disable_fiq コンパイラ組み込み関数
__disable_irq コンパイラ組み込み関数
__enable_fiq コンパイラ組み込み関数
__enable_irq コンパイラ組み込み関数
__fabs コンパイラ組み込み関数
__fabsf コンパイラ組み込み関数
__force_stores コンパイラ組み込み関数
__ldrex コンパイラ組み込み関数
__ldrexd コンパイラ組み込み関数
__ldrt コンパイラ組み込み関数
__memory_changed コンパイラ組み込み関数
__nop
__pld コンパイラ組み込み関数
__pldw コンパイラ組み込み関数
__pli コンパイラ組み込み関数
__promise コンパイラ組み込み関数
__qadd コンパイラ組み込み関数
__qdbl コンパイラ組み込み関数
__qsub コンパイラ組み込み関数
__rbit コンパイラ組み込み関数
__rev コンパイラ組み込み関数
__return_address コンパイラ組み込み関数
__ror コンパイラ組み込み関数
__schedule_barrier コンパイラ組み込み関数
__semihost コンパイラ組み込み関数
__sev コンパイラ組み込み関数
__sqrt コンパイラ組み込み関数
__sqrtf コンパイラ組み込み関数
__ssat コンパイラ組み込み関数
__strex コンパイラ組み込み関数
__strexd コンパイラ組み込み関数
__strt コンパイラ組み込み関数
__swp コンパイラ組み込み関数
__usat コンパイラ組み込み関数
__wfe コンパイラ組み込み関数
__wfi コンパイラ組み込み関数
__yield コンパイラ組み込み関数
ARMv6 SIMD コンパイラ組み込み関数
ETSI の基本操作
C55x コンパイラ組み込み関数
VFP ステータスコンパイラ組み込み関数
__vfp_status コンパイラ組み込み関数
FMA(Fused Multiply Add)コンパイラ組み込み関数
名前付きレジスタ変数
GNU 組み込み関数
コンパイラによる事前定義
C および C++ の実装に関する詳細
C および C++ の実装に関する詳細
文字セットと識別子
基本データ型
基本データ型の演算
構造体、共用体、列挙型、ビットフィールド
C++ の実装に関する詳細
::operator new 関数の使用
仮配列
C++ 関数での旧方式の C パラメータ
アナクロニズム
テンプレートのインスタンス生成
ネームスペース
C++ の例外処理
Extern インライン関数
ARMv6 SIMD 命令のコンパイラ組み込み関数
ARMv6 SIMD コンパイラ組み込み関数(接頭文字別)
ARMv6 SIMD 組み込み関数、要約説明、バイトレーン、影響を受けるフラグ
ARMv6 SIMD コンパイラ組み込み関数、互換性のあるプロセッサおよびアーキテクチャ
ARMv6 SIMD 命令の組み込み関数と APSR GE フラグ
__qadd16 コンパイラ組み込み関数
__qadd8 コンパイラ組み込み関数
__qasx コンパイラ組み込み関数
__qsax コンパイラ組み込み関数
__qsub16 コンパイラ組み込み関数
__qsub8 コンパイラ組み込み関数
__sadd16 コンパイラ組み込み関数
__sadd8 コンパイラ組み込み関数
__sasx コンパイラ組み込み関数
__sel コンパイラ組み込み関数
__shadd16 コンパイラ組み込み関数
__shadd8 コンパイラ組み込み関数
__shasx コンパイラ組み込み関数
__shsax コンパイラ組み込み関数
__shsub16 コンパイラ組み込み関数
__shsub8 コンパイラ組み込み関数
__smlad コンパイラ組み込み関数
__smladx コンパイラ組み込み関数
__smlald コンパイラ組み込み関数
__smlaldx コンパイラ組み込み関数
__smlsd コンパイラ組み込み関数
__smlsdx コンパイラ組み込み関数
__smlsld コンパイラ組み込み関数
__smlsldx コンパイラ組み込み関数
__smuad コンパイラ組み込み関数
__smusd コンパイラ組み込み関数
__smusdx コンパイラ組み込み関数
__smuadx コンパイラ組み込み関数
__ssat16 コンパイラ組み込み関数
__ssax コンパイラ組み込み関数
__ssub16 コンパイラ組み込み関数
__ssub8 コンパイラ組み込み関数
__sxtab16 コンパイラ組み込み関数
__sxtb16 コンパイラ組み込み関数
__uadd16 コンパイラ組み込み関数
__uadd8 コンパイラ組み込み関数
__uasx コンパイラ組み込み関数
__uhadd16 コンパイラ組み込み関数
__uhadd8 コンパイラ組み込み関数
__uhasx コンパイラ組み込み関数
__uhsax コンパイラ組み込み関数
__uhsub16 コンパイラ組み込み関数
__uhsub8 コンパイラ組み込み関数
__uqadd16 コンパイラ組み込み関数
__uqadd8 コンパイラ組み込み関数
__uqasx コンパイラ組み込み関数
__uqsax コンパイラ組み込み関数
__uqsub16 コンパイラ組み込み関数
__uqsub8 コンパイラ組み込み関数
__usad8 コンパイラ組み込み関数
__usada8 コンパイラ組み込み関数
__usax コンパイラ組み込み関数
__usat16 コンパイラ組み込み関数
__usub16 コンパイラ組み込み関数
__usub8 コンパイラ組み込み関数
__uxtab16 コンパイラ組み込み関数
__uxtb16 コンパイラ組み込み関数
via ファイルの構文
via ファイルの概要
via ファイルの構文
GNU 言語拡張機能の概要の表
標準 C の実装定義
実装定義
変換
環境
識別子
文字
整数
浮動小数点
配列とポインタ
レジスタ
構造体、共用体、列挙型、ビットフィールド
修飾子
式の評価
プリプロセッシングディレクティブ
ライブラリ関数
ISO C 標準で定義されていない動作
標準 C++ の実装定義
整数変換
純仮想関数の呼び出し
サポートされている主な言語機能
標準 C++ ライブラリの実装定義
C および C++ コンパイラの実装に関する制限
C++ ISO/IEC 標準に関する制限
整数値に関する制限
浮動小数点数に関する制限
NEON サポートの使用
はじめに
ベクタのデータ型
NEON コンパイラ組み込み関数の概要
組み込み関数
加算
乗算
減算
比較
絶対差
最大 / 最小
対加算
最大値の畳み込み
最小値の畳み込み
逆数 / 平方根
符号付き変数によるシフト
定数によるシフト
シフトして挿入
単一ベクタまたはレーンのロード
単一ベクタまたはレーンのストア
N 要素構造体のロード
ベクタからのレーンの抽出とレジスタへの挿入
リテラルからの単一のベクタレーンのロード
リテラルビットパターンからのベクタの初期化
すべてのレーンを同じ値に設定
ベクタの結合
ベクタの分割
ベクタの変換
テーブル検索
拡張テーブル検索のコンパイラ組み込み関数
スカラ値での演算
ベクタ抽出
ベクタ要素の反転(エンディアン方式のスワップ)
その他の単一オペランドの算術演算
論理演算
転置操作
ベクタの再解釈キャスト操作
『コンパイラリファレンス』に対する改訂

List of Tables

1. --asm オプションを使用したコンパイル
2. 互換性のあるプロセッサまたはアーキテクチャの組み合わせ
3. サポートされている ARM アーキテクチャ
4. ---interleave オプションを使用したコンパイル
5. -o オプションを使用したコンパイル
6. -o オプションを使用しないコンパイル
7. 定数値のイニシャライザの動作(ISO 標準 C との比較)
8. ARM コンパイラによってサポートされているキーワード拡張
9. コンパイラでサポートされる __declspec 属性および同等属性
10. コンパイラでサポートされる関数属性および同等キーワード(または属性)
11. コンパイラによってサポートされている型属性および同等キーワード
12. コンパイラによってサポートされている変数属性および同等キーワード
13. コンパイラでサポートされるプラグマ
14. ARM コンパイラによってサポートされている命令のコンパイラ組み込み関数
15. __ldrex コンパイラ組み込み関数によってサポートされるアクセス幅
16. __ldrex コンパイラ組み込み関数によってサポートされるアクセス幅
17. __ldrt コンパイラ組み込み関数によってサポートされるアクセス幅
18. __strex コンパイラ組み込み関数によってサポートされるアクセス幅
19. __strexd コンパイラ組み込み関数によってサポートされるアクセス幅
20. __strt コンパイラ組み込み関数によってサポートされるアクセス幅
21. __swp コンパイラ組み込み関数によってサポートされるアクセス幅
22. ARM Compilation Tools でサポートされる ETSI の基本操作
23. ARM Compilation Tools で公開されている ETSI ステータスフラグ
24. コンパイルツールでサポートされている TI C55x コンパイラ組み込み関数
25. FPSCR フラグの変更
26. ARM アーキテクチャベースのプロセッサで使用可能な名前付きレジスタ
27. 浮動小数点ハードウェアを持つターゲットで使用可能な名前付きレジスタ
28. 定義済みマクロ
29. Thumb アーキテクチャバージョンと ARM アーキテクチャバージョンの関連
30. 組み込み変数
31. 文字エスケープコード
32. データ型のサイズと境界整列
33. ARMv6 SIMD intrinsics by prefix
34. ARMv6 SIMD 組み込み関数、要約説明、バイトレーン、影響を受けるフラグ
35. ARMv6 SIMD 組み込み関数、互換性のあるプロセッサおよびアーキテクチャ
36. ARMv6 SIMD 命令の組み込み関数と APSR GE フラグ
37. サポートされている GNU 拡張機能
38. サポートされている主な言語機能
39. 実装に関する制限
40. 整数の範囲
41. 浮動小数点数に関する制限
42. 浮動小数点数に関するその他の特性
43. ベクタのデータ型
44. NEON コンパイラ組み込み関数の概要
45. 発行 F と発行 G の相違点
46. 発行 E と発行 F の相違点
47. 発行 D と発行 E の相違点
48. 発行 C と発行 D の相違点
49. 発行 B と発行 C の相違点
50. 発行 A と発行 B の相違点

著作権

 ™ または  ® のマークが付いた言葉およびロゴは、この著作権情報で別段に規定されている場合を除き、ARM の EU またはその他の国における登録商標および商です。 本書に記載されている他の製品名は、各社の所有する商標です。

本書に記載されている情報の全部または一部、ならびに本書で紹介する製品は、著作権所有者の文書による事前の許可を得ない限り、転用・複製ることを禁じます。

本書に記載されている製品は、今後も継続的に開発・改良の対象となります。 本書に含まれる製品およびその利用方法についての情報は、ARM が用者の利益のために提供するものです。 したがって当社では、製品の市販性または利用の適切性を含め、暗示的・明示的に関係なく一切の責任負いません。

本書は、本製品の利用者をサポートすることだけを目的としています。 本書に記載されている情報の使用、情報の誤りまたは省略、あるいは本製品の誤使用によって発生したいかなる損失・損傷についても、ARM は一切責任を負いません。

ARM という用語が使用されている場合、"ARM または必要に応じてその子会社" を指します。

本書の一部の情報は、『IEEE 754 - 1985 IEEE Standard for Binary Floating-Point Arithmetic』に基づいています。 記載されている方法による配置と使用から生じる責任または義務を IEEE では一切放棄しています。

機密保持ステータス

本書は非機密扱いであり、本書を使用、複製、および開示する権利は、ARM および ARM が本書を提供した当事者との間で締結した契約の条項に基づいたライセンスの制限により異なります。

製品ステータス

本書の情報は最終版であり、開発済み製品に対応しています。

Revision History
Revision A2010 年 5 月 28 日ARM コンパイラツールチェーン v4.1 リリース
Revision B2010 年 9 月 30 日ARM コンパイラツールチェーン v4.1 のアップデート 1
Revision C2011 年 1 月 28 日ARM コンパイラツールチェーン v4.1 パッチ 3 のアップデート 2
Revision D2011 年 4 月 30 日ARM コンパイラツールチェーン v5.0 リリース
Revision E2011 年 7 月 29 日ARM コンパイラツールチェーン v5.0 のアップデート 1
Revision F2011 年 9 月 30 日ARM コンパイラツールチェーン v5.01 リリース
Revision G2012 年 2 月 29 日ARM コンパイラツールチェーン v5.01 リリースマニュアルの更新
Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0491GJ
Non-ConfidentialID051612