ARM® コンパイラ armasm ユーザガイド

バージョン 5.05


目次

序章
本書について
本書の構成
用語集
表記規則
ご意見、ご感想
その他の情報
1 アセンブラの概要
1.1 ARM コンパイラツールチェーンのアセンブラについて
1.2 アセンブラの主な機能
1.3 アセンブラの操作方法
1.4 アセンブラのパス 2 で省略できるディレクティブ
2 ARM アーキテクチャの概要
2.1 ARM アーキテクチャについて
2.2 ARM、Thumb、および ThumbEE の命令セット
2.3 ARM、Thumb、および ThumbEE 状態の切り替え
2.4 プロセッサモード、および特権モードと非特権モードでのソフトウェア実行
2.5 ARMv6-M および ARMv7-M のプロセッサモード
2.6 NEON テクノロジ
2.7 VFP ハードウェア
2.8 ARM レジスタ
2.9 汎用レジスタ
2.10 レジスタへのアクセス
2.11 事前宣言されている主要なレジスタ名
2.12 事前宣言されている拡張レジスタ名
2.13 事前宣言されている XScale レジスタ名
2.14 事前宣言されているコプロセッサ名
2.15 プログラムカウンタ
2.16 アプリケーションプログラムステータスレジスタ
2.17 Q フラグ
2.18 カレントプログラムステータスレジスタ
2.19 セーブドプログラムステータスレジスタ
2.20 ARM 命令セットと Thumb 命令セットの概要
2.21 インラインバレルシフタへのアクセス
3 アセンブリ言語モジュールの構造
3.1 アセンブリ言語のソース行の構文
3.2 リテラル
3.3 ELF セクションと AREA ディレクティブ
3.4 ARM アセンブリ言語モジュールのサンプル
4 ARM アセンブリ言語の記述
4.1 統合アセンブラ言語について
4.2 サブルーチン呼び出しでのレジスタの使用方法
4.3 イミディエート値のロード
4.4 MOV および MVN を使用したイミディエート値のロード
4.5 MOV32 を使用したイミディエート値のロード
4.6 LDR Rd, =const を使用したイミディエート値のロード
4.7 リテラルプール
4.8 レジスタへのアドレスのロード
4.9 ADR を使用したレジスタへのアドレスのロード
4.10 ADRL を使用したレジスタへのアドレスのロード
4.11 LDR Rd, =label を使用したレジスタへのアドレスのロード
4.12 レジスタのロードとストアを実行する他の方法
4.13 複数レジスタ ロード/ストア命令
4.14 ARM と Thumb での複数レジスタのロード/ストア命令
4.15 LDM および STM を使用したスタックの実装
4.16 ネストされたサブルーチンのスタック操作
4.17 LDM および STM によるブロックコピー
4.18 メモリアクセス
4.19 読み出し-変更-書き込み操作
4.20 イミディエート定数付きのオプションのハッシュ
4.21 マクロについて
4.22 Test-and-Branch(テスト-分岐)マクロのサンプル
4.23 符号なし整数除算マクロのサンプル
4.24 命令とディレクティブの再配置
4.25 シンボルバージョン
4.26 Frame ディレクティブ
4.27 例外テーブルと unwind テーブル
4.28 RVCTv2.1 以降のアセンブリ言語に関する変更点
5 条件コード
5.1 条件付き命令
5.2 ARM 状態での条件付き実行
5.3 Thumb 状態での条件付き実行
5.4 条件フラグの更新
5.5 条件コードの接尾文字
5.6 整数と浮動小数点コードの条件コードの意味の比較
5.7 条件付き実行を使用するメリット
5.8 条件付き実行を使用するメリットの実例
5.9 実行速度の最適化
6 アセンブラの使用
6.1 アセンブラのコマンドライン構文
6.2 環境変数を使用したコマンドラインオプションの指定
6.3 via ファイルの概要
6.4 via ファイルの構文規則
6.5 stdin を使用したアセンブラへのソースコードの入力
6.6 組み込み変数および定数
6.7 ソースコードでの armasm のバージョンの指定
6.8 診断メッセージ
6.9 インターロック診断
6.10 自動 IT ブロック生成
6.11 Thumb 分岐ターゲットのワード境界整列
6.12 Thumb コードサイズの診断
6.13 ARM 命令と Thumb 命令の移植性の診断
6.14 命令の幅の診断
6.15 2 つのパスアセンブラ診断
6.16 条件付きアセンブリ
6.17 C プリプロセッサを使用する
6.18 アドレス境界調整
6.19 Thumb での命令の幅の選択
7 シンボル、リテラル、式、および演算子
7.1 シンボルの命名規則
7.2 変数
7.3 数値定数
7.4 アセンブリ時の変数代入
7.5 レジスタ相対式と PC 相対式
7.6 ラベル
7.7 PC 相対アドレスのラベル
7.8 レジスタ相対アドレスのラベル
7.9 絶対アドレスのラベル
7.10 数値のローカルラベル
7.11 数値のローカルラベルの構文
7.12 文字列式
7.13 文字列リテラル
7.14 数値式
7.15 数値リテラルの構文
7.16 浮動小数点リテラルの構文
7.17 論理式
7.18 論理リテラル
7.19 単項演算子
7.20 バイナリ演算子
7.21 乗算演算子
7.22 文字列操作演算子
7.23 シフト演算子
7.24 加算、減算、および論理演算子
7.25 関係演算子
7.26 ブール演算子
7.27 演算子の優先順位
7.28 アセンブリ言語と C 言語における演算子の優先順位の違い
8 NEON と VFP プログラミング
8.1 NEON と VFP 向けのアーキテクチャサポート
8.2 半精度拡張
8.3 融合型積和演算拡張
8.4 拡張レジスタバンクのマッピング
8.5 レジスタバンクの NEON ビュー
8.6 拡張レジスタバンクの VFP ビュー
8.7 VFP レジスタおよび NEON レジスタへの値のロード
8.8 NEON 命令および VFP 命令の条件付き実行
8.9 浮動小数点の例外
8.10 NEON データ型および VFP データ型
8.11 NEON ベクタ
8.12 Normal、Long、Wide、および Narrow の NEON 演算
8.13 サチュレート NEON 命令
8.14 NEON スカラ
8.15 拡張表記
8.16 {0,1} 上の多項式算術演算
8.17 NEON/VFP システムレジスタ
8.18 flush-to-zero モード
8.19 flush-to-zero モードをいつ使用すべきか
8.20 flush-to-zero モードの使用による影響
8.21 flush-to-zero モードの影響を受けない演算
8.22 VFP ベクタモード
8.23 VFP 拡張レジスタバンクのベクタ
8.24 VFP ベクタのラップアラウンド
8.25 VFP ベクタのストライド
8.26 ベクタの長さに関する制限
8.27 スカラ演算、ベクタ演算、および混合演算の制御
8.28 VFP ディレクティブとベクタ表記の概要
8.29 UAL 以前の VFP 構文とニーモニック
8.30 ベクタ表記
8.31 VFPASSERT SCALAR
8.32 VFPASSERT VECTOR
9 アセンブラコマンドラインオプション
9.1 --16
9.2 --32
9.3 --apcs=qualifier…qualifier
9.4 --arm
9.5 --arm_only
9.6 --bi
9.7 --bigend
9.8 --brief_diagnostics、--no_brief_diagnostics
9.9 --checkreglist
9.10 --compatible=name
9.11 --cpreproc
9.12 --cpreproc_opts=options
9.13 --cpu=list
9.14 --cpu=name
9.15 --debug
9.16 --depend=dependfile
9.17 --depend_format=string
9.18 --device=name
9.19 --diag_error=tag[,tag,…]
9.20 --diag_remark=tag[,tag,…]
9.21 --diag_style={arm|ide|gnu}
9.22 --diag_suppress=tag[,tag,…]
9.23 --diag_warning=tag[,tag,…]
9.24 --dllexport_all
9.25 --dwarf2
9.26 --dwarf3
9.27 --errors=errorfile
9.28 --execstack、--no_execstack
9.29 --execute_only
9.30 --exceptions、--no_exceptions
9.31 --exceptions_unwind、--no_exceptions_unwind
9.32 --fpmode=model
9.33 --fpu=list
9.34 --fpu=name
9.35 -g
9.36 --help
9.37 -idir{,dir, …}
9.38 --keep
9.39 --length=n
9.40 --li
9.41 --library_type=lib
9.42 --licretry
9.43 --list=file
9.44 --list=
9.45 --littleend
9.46 -m
9.47 --maxcache=n
9.48 --md
9.49 --no_code_gen
9.50 --no_esc
9.51 --no_hide_all
9.52 --no_regs
9.53 --no_terse
9.54 --no_warn
9.55 -o filename
9.56 --pd
9.57 --predefine "directive"
9.58 --reduce_paths、--no_reduce_paths
9.59 --regnames=none
9.60 --regnames=callstd
9.61 --regnames=all
9.62 --report-if-not-wysiwyg
9.63 --show_cmdline
9.64 --split_ldm
9.65 --thumb
9.66 --thumbx
9.67 --unaligned_access、--no_unaligned_access
9.68 --unsafe
9.69 --untyped_local_labels
9.70 --version_number
9.71 --via=filename
9.72 --vsn
9.73 --width=n
9.74 --xref
10 ARM 命令と Thumb 命令
10.1 ARM 命令と Thumb 命令の概要
10.2 命令の幅指定子
10.3 フレキシブル第 2 オペランド(Operand2)
10.4 定数としての Operand2 の構文
10.5 シフトが任意に実行されるレジスタとしての Operand2 の構文
10.6 シフト演算
10.7 サチュレート命令
10.8 条件コード
10.9 ADC
10.10 ADD
10.11 ADR(PC 相対)
10.12 ADR(レジスタ相対)
10.13 ADRL 疑似命令
10.14 AND
10.15 ASR
10.16 B
10.17 BFC
10.18 BFI
10.19 BIC
10.20 BKPT
10.21 BL
10.22 BLX
10.23 BX
10.24 BXJ
10.25 CBZ、CBNZ
10.26 CDP、CDP2
10.27 CLREX
10.28 CLZ
10.29 CMP、CMN
10.30 CPS
10.31 CPY 疑似命令
10.32 DBG
10.33 DMB
10.34 DSB
10.35 EOR
10.36 ERET
10.37 HVC
10.38 ISB
10.39 IT
10.40 LDC および LDC2
10.41 LDM
10.42 LDR(イミディエートオフセット)
10.43 LDR(PC 相対)
10.44 LDR(レジスタオフセット)
10.45 LDR(レジスタ相対)
10.46 LDR 疑似命令
10.47 LDR、非特権モード
10.48 LDREX
10.49 LSL
10.50 LSR
10.51 MAR
10.52 MCR および MCR2
10.53 MCRR および MCRR2
10.54 MIA、MIAPH、MIAxy
10.55 MLA
10.56 MLS
10.57 MOV
10.58 MOV32 疑似命令
10.59 MOVT
10.60 MRA
10.61 MRC および MRC2
10.62 MRRC および MRRC2
10.63 MRS(PSR 汎用レジスタ)
10.64 MRS(システムコプロセッサレジスタから ARM レジスタへ)
10.65 MSR(ARM レジスタからシステムコプロセッサレジスタへ)
10.66 MSR(PSR への汎用レジスタ)
10.67 MUL
10.68 MVN
10.69 NEG 疑似命令
10.70 NOP
10.71 ORN(Thumb のみ)
10.72 ORR
10.73 PKHBT、PKHTB
10.74 PLD、PLDW、PLI
10.75 POP
10.76 PUSH
10.77 QADD
10.78 QADD8
10.79 QADD16
10.80 QASX
10.81 QDADD
10.82 QDSUB
10.83 QSAX
10.84 QSUB
10.85 QSUB8
10.86 QSUB16
10.87 RBIT
10.88 REV
10.89 REV16
10.90 REVSH
10.91 RFE
10.92 ROR
10.93 RRX
10.94 RSB
10.95 RSC
10.96 SADD8
10.97 SADD16
10.98 SASX
10.99 SBC
10.100 SBFX
10.101 SDIV
10.102 SEL
10.103 SETEND
10.104 SEV
10.105 SHADD8
10.106 SHADD16
10.107 SHASX
10.108 SHSAX
10.109 SHSUB8
10.110 SHSUB16
10.111 SMC
10.112 SMLAxy
10.113 SMLAD
10.114 SMLAL
10.115 SMLALD
10.116 SMLALxy
10.117 SMLAWy
10.118 SMLSD
10.119 SMLSLD
10.120 SMMLA
10.121 SMMLS
10.122 SMMUL
10.123 SMUAD
10.124 SMULxy
10.125 SMULL
10.126 SMULWy
10.127 SMUSD
10.128 SRS
10.129 SSAT
10.130 SSAT16
10.131 SSAX
10.132 SSUB8
10.133 SSUB16
10.134 STC および STC2
10.135 STM
10.136 STR(イミディエートオフセット)
10.137 STR(レジスタオフセット)
10.138 STR、非特権モード
10.139 STREX
10.140 SUB
10.141 SUBS PC、lr
10.142 SVC
10.143 SWP と SWPB
10.144 SXTAB
10.145 SXTAB16
10.146 SXTAH
10.147 SXTB
10.148 SXTB16
10.149 SXTH
10.150 SYS
10.151 TBB、TBH
10.152 TEQ
10.153 TST
10.154 UADD8
10.155 UADD16
10.156 UASX
10.157 UBFX
10.158 UDIV
10.159 UHADD8
10.160 UHADD16
10.161 UHASX
10.162 UHSAX
10.163 UHSUB8
10.164 UHSUB16
10.165 UMAAL
10.166 UMLAL
10.167 UMULL
10.168 UND 疑似命令
10.169 UQADD8
10.170 UQADD16
10.171 UQASX
10.172 UQSAX
10.173 UQSUB8
10.174 UQSUB16
10.175 USAD8
10.176 USADA8
10.177 USAT
10.178 USAT16
10.179 USAX
10.180 USUB8
10.181 USUB16
10.182 UXTAB
10.183 UXTAB16
10.184 UXTAH
10.185 UXTB
10.186 UXTB16
10.187 UXTH
10.188 WFE
10.189 WFI
10.190 YIELD
11 NEON および VFP 命令
11.1 NEON 命令の概要
11.2 NEON と VFP に共通の命令の概要
11.3 VFP 命令の概要
11.4 要素と構造体のロード/ストア命令で提供されるインターリーブ
11.5 ロードとストア命令、要素と構造体の命令における境界調整の制約
11.6 VABA および VABAL
11.7 VABD および VABDL
11.8 VABS
11.9 VABS(浮動小数点)
11.10 VACLE、VACLT、VACGE、および VACGT
11.11 VADD(浮動小数点)
11.12 VADD
11.13 VADDHN
11.14 VADDL および VADDW
11.15 VAND(イミディエート)
11.16 VAND(レジスタ)
11.17 VBIC(イミディエート)
11.18 VBIC(レジスタ)
11.19 VBIF
11.20 VBIT
11.21 VBSL
11.22 VCEQ(イミディエート #0)
11.23 VCEQ(レジスタ)
11.24 VCGE(イミディエート #0)
11.25 VCGE(レジスタ)
11.26 VCGT(イミディエート #0)
11.27 VCGT(レジスタ)
11.28 VCLE(イミディエート #0)
11.29 VCLE(レジスタ)
11.30 VCLS
11.31 VCLT(イミディエート #0)
11.32 VCLT(レジスタ)
11.33 VCLZ
11.34 VCMP、VCMPE
11.35 VCNT
11.36 VCVT(固定小数点または整数と浮動小数点間)
11.37 VCVT(半精度浮動小数点数と単精度浮動小数点数間の変換)
11.38 VCVT(単精度と倍精度の間)
11.39 VCVT(浮動小数点と整数間の変換)
11.40 VCVT(浮動小数点と固定小数点間)
11.41 VCVTB、VCVTT(半精度拡張)
11.42 VDIV
11.43 VDUP
11.44 VEOR
11.45 VEXT
11.46 VFMA、VFMS
11.47 VFMA、VFMS、VFNMA、VFNMS
11.48 VHADD
11.49 VHSUB
11.50 VLDn(1 レーンへの 1 つの n 要素構造体)
11.51 VLDn(全レーンへの 1 つの n 要素構造体)
11.52 VLDn(複数の n 要素構造体)
11.53 VLDM
11.54 VLDR
11.55 VLDR(ポストインクリメントとプレデクリメント)
11.56 VLDR 疑似命令
11.57 VMAX および VMIN
11.58 VMLA
11.59 VMLA(スカラによる)
11.60 VMLA(浮動小数点)
11.61 VMLAL(スカラによる)
11.62 VMLAL
11.63 VMLS(スカラによる)
11.64 VMLS
11.65 VMLS(浮動小数点)
11.66 VMLSL
11.67 VMLSL(スカラによる)
11.68 VMOV(浮動小数点)
11.69 VMOV(イミディエート)
11.70 VMOV(レジスタ)
11.71 VMOV(1 本の ARM レジスタと単精度 VFP の間)
11.72 VMOV(2 本の ARM レジスタと拡張レジスタ間)
11.73 VMOV(ARM レジスタと NEON スカラの間)
11.74 VMOVL
11.75 VMOVN
11.76 VMOV2
11.77 VMRS
11.78 VMSR
11.79 VMUL
11.80 VMUL(浮動小数点)
11.81 VMUL(スカラによる)
11.82 VMULL
11.83 VMULL(スカラによる)
11.84 VMVN(レジスタ)
11.85 VMVN(イミディエート)
11.86 VNEG(浮動小数点)
11.87 VNEG
11.88 VNMLA(浮動小数点)
11.89 VNMLS(浮動小数点)
11.90 VNMUL(浮動小数点)
11.91 VORN(レジスタ)
11.92 VORN(イミディエート)
11.93 VORR(レジスタ)
11.94 VORR(イミディエート)
11.95 VPADAL
11.96 VPADD
11.97 VPADDL
11.98 VPMAX および VPMIN
11.99 VPOP
11.100 VPUSH
11.101 VQABS
11.102 VQADD
11.103 VQDMLAL および VQDMLSL(ベクタまたはスカラによる)
11.104 VQDMULH(ベクタまたはスカラによる)
11.105 VQDMULL(ベクタまたはスカラによる)
11.106 VQMOVN および VQMOVUN
11.107 VQNEG
11.108 VQRDMULH(ベクタまたはスカラによる)
11.109 VQRSHL(符号付き変数による)
11.110 VQRSHRN および VQRSHRUN(イミディエートによる)
11.111 VQSHL(符号付き変数による)
11.112 VQSHL および VQSHLU(イミディエートによる)
11.113 VQSHRN および VQSHRUN(イミディエートによる)
11.114 VQSUB
11.115 VRADDHN
11.116 VRECPE
11.117 VRECPS
11.118 VREV16、VREV32、VREV64
11.119 VRHADD
11.120 VRSHL(符号付き変数による)
11.121 VRSHR(イミディエートによる)
11.122 VRSHRN(イミディエートによる)
11.123 VRSQRTE
11.124 VRSQRTS
11.125 VRSRA(イミディエートによる)
11.126 VRSUBHN
11.127 VSHL(イミディエートによる)
11.128 VSHL(符号付き変数による)
11.129 VSHLL(イミディエートによる)
11.130 VSHR(イミディエートによる)
11.131 VSHRN(イミディエートによる)
11.132 VSLI
11.133 VSQRT
11.134 VSRA(イミディエートによる)
11.135 VSRI
11.136 VSTM
11.137 VSTn(複数の n 要素構造体)
11.138 VSTn(1 レーンへの 1 つの n 要素構造体)
11.139 VSTR
11.140 VSTR(ポストインクリメントとプレデクリメント)
11.141 VSUB(浮動小数点)
11.142 VSUB
11.143 VSUBHN
11.144 VSUBL および VSUBW
11.145 VSWP
11.146 VTBL および VTBX
11.147 VTRN
11.148 VTST
11.149 VUZP
11.150 VZIP
12 ワイヤレス MMX テクノロジの命令
12.1 ワイヤレス MMX テクノロジの命令について
12.2 ワイヤレス MMX テクノロジをサポートする WRN ディレクティブおよび WCN ディレクティブ
12.3 Frame ディレクティブとワイヤレス MMX テクノロジ
12.4 ワイヤレス MMX ロード/ストア命令
12.5 ワイヤレス MMX テクノロジの命令と XScale の命令
12.6 ワイヤレス MMX の命令
12.7 ワイヤレス MMX の疑似命令
13 ディレクティブリファレンス
13.1 ディレクティブの一覧(アルファベット順)
13.2 アセンブリ制御ディレクティブについて
13.3 Frame ディレクティブについて
13.4 ALIAS
13.5 ALIGN
13.6 AREA
13.7 ARM または CODE32
13.8 ASSERT
13.9 ATTR
13.10 CN
13.11 CODE16
13.12 COMMON
13.13 CP
13.14 DATA
13.15 DCB
13.16 DCD、DCDU
13.17 DCDO
13.18 DCFD、DCFDU
13.19 DCFS、DCFSU
13.20 DCI
13.21 DCQ、DCQU
13.22 DCW、DCWU
13.23 END
13.24 ENDFUNC、ENDP
13.25 ENTRY
13.26 EQU
13.27 EXPORT、GLOBAL
13.28 EXPORTAS
13.29 FIELD
13.30 FRAME ADDRESS
13.31 FRAME POP
13.32 FRAME PUSH
13.33 FRAME REGISTER
13.34 FRAME RESTORE
13.35 FRAME RETURN ADDRESS
13.36 FRAME SAVE
13.37 FRAME STATE REMEMBER
13.38 FRAME STATE RESTORE
13.39 FRAME UNWIND ON
13.40 FRAME UNWIND OFF
13.41 FUNCTION、PROC
13.42 GBLA、GBLL、GBLS
13.43 GET、INCLUDE
13.44 IF、ELSE、ENDIF、ELIF
13.45 IMPORT、EXTERN
13.46 INCBIN
13.47 INFO
13.48 KEEP
13.49 LCLA、LCLL、LCLS
13.50 LTORG
13.51 MACRO、MEND
13.52 MAP
13.53 MEXIT
13.54 NOFP
13.55 OPT
13.56 QN、DN、SN
13.57 RELOC
13.58 REQUIRE
13.59 REQUIRE8、PRESERVE8
13.60 RLIST
13.61 RN
13.62 ROUT
13.63 SETA、SETL、SETS
13.64 SPACE または FILL
13.65 THUMB
13.66 THUMBX
13.67 TTL、SUBT
13.68 WHILE、WEND
A アセンブラドキュメントに対する改訂
A.1 『armasm ユーザガイド』に対する改訂

図の一覧

2-1 汎用レジスタとプログラムステータスレジスタの構成
8-1 拡張レジスタバンク
8-2 VFPv2 レジスタバンク
8-3 VFPv3 レジスタバンク
10-1 ASR #3
10-2 LSR #3
10-3 LSL #3
10-4 ROR #3
10-5 RRX
11-1 3 要素構造体からなる配列のインターリーブの解除
11-2 imm = 3 の場合のダブルワード VEXT 演算
11-3 VPADAL 演算の例(データ型 I16 の場合)
11-4 VPADD 演算の例(データ型 I16 の場合)
11-5 ダブルワード VPADDL 演算の例(データ型 S16 の場合)
11-6 クワッドワード VSHL.64 Qd, Qm, #1 の演算
11-7 クワッドワード VSLI.64 Qd, Qm, #1 の演算
11-8 ダブルワード VSRI.64 Dd, Dm, #2 の演算
11-9 ダブルワード VTRN.8 演算
11-10 ダブルワード VTRN.32 演算

表の一覧

2-1 ARM プロセッサ モード
2-2 事前宣言されている主要なレジスタ
2-3 事前宣言されている拡張レジスタ
2-4 事前宣言されている XScale レジスタ
2-5 事前宣言されているワイヤレス MMX レジスタ
2-6 事前宣言されているコプロセッサレジスタ
2-7 命令グループ
4-1 ARM 状態のイミディエート値(8 ビット)
4-2 MOV 命令に使用できる ARM 状態のイミディエート値
4-3 32 ビット Thumb のイミディエート値
4-4 MOV 命令に使用できる 32 ビット Thumb のイミディエート値
4-5 スタック指向接尾文字および同等のアドレシングモード接尾文字
4-6 複数ロード/ストア命令の接尾文字
4-7 以前の ARM アセンブリ言語からの変更点
4-8 要件の緩和
4-9 UAL 以前の Thumb 構文と UAL 構文の相違点
5-1 条件コードの接尾文字
5-2 条件コード
5-3 条件分岐のみの場合
5-4 すべての命令を条件付きで実行する場合
6-1 組み込み変数
6-2 組み込みブール定数
6-3 定義済みマクロ
6-4 {TARGET_ARCH_ARM} と {TARGET_ARCH_THUMB} の関連
6-5 コマンドラインオプション
6-6 armcc における等価のコマンドラインオプション
7-1 文字列を返す単項演算子
7-2 数値または論理値を返す単項演算子
7-3 乗算演算子
7-4 文字列操作演算子
7-5 シフト演算子
7-6 加算、減算、および論理演算子
7-7 関係演算子
7-8 ブール演算子
7-9 ARM アセンブリ言語における演算子の優先順位
7-10 C における演算子の優先順位
8-1 NEON データ型指定子
8-2 VFP データ型指定子
8-3 NEON サチュレーションの範囲
8-4 UAL 以前の VFP ニーモニック
8-5 FCONST で使用できる浮動小数点値
9-1 互換性のあるプロセッサまたはアーキテクチャの組み合わせ
9-2 サポートされている ARM アーキテクチャ
9-3 診断メッセージの重大度
9-4 GNU-stack セクションに対するコマンドラインオプションと AREA ディレクティブの指定
10-1 ARM 命令と Thumb 命令の概要
10-2 条件コードの接尾文字
10-3 PC 相対オフセット
10-4 レジスタ相対オフセット
10-5 B 命令の使用可否と範囲
10-6 BL 命令の使用可否と分岐の範囲
10-7 BLX 命令の使用可否と分岐の範囲
10-8 BX 命令の使用可否と分岐の範囲
10-9 BXJ 命令の使用可否と分岐の範囲
10-10 オフセットとアーキテクチャ、LDR、ワード、ハーフワード、バイト
10-11 PC 相対オフセット
10-12 オプションとアーキテクチャ、LDR(レジスタオフセット)
10-13 レジスタ相対オフセット
10-14 オフセットとアーキテクチャ、LDR(ユーザモード)
10-15 オフセットとアーキテクチャ、STR、ワード、ハーフワード、バイト
10-16 オプションとアーキテクチャ、STR (レジスタオフセット)
10-17 オフセットとアーキテクチャ、STR (ユーザモード)
10-18 expr の範囲とエンコーディング
11-1 NEON 命令の概要
11-2 NEON と VFP に共通の命令の概要
11-3 VFP 命令の概要
11-4 VBIC(イミディエート)におけるイミディエート値のパターン
11-5 VLDn のパラメータの有効な組み合わせ(1 レーンへの 1 つの n 要素構造体)
11-6 VLDn のパラメータの有効な組み合わせ(全レーンへの 1 つの n 要素構造体)
11-7 VLDn のパラメータの有効な組み合わせ(複数の n 要素構造体)
11-8 VMOV(イミディエート)の使用可能なイミディエート値
11-9 VMVN(イミディエート)の使用可能なイミディエート値
11-10 VORR(イミディエート)におけるイミディエート値のパターン
11-11 VQRSHRN と VQRSHRUN(イミディエートによる)の使用可能なイミディエート範囲
11-12 VQSHL と VQSHLU(イミディエートによる)の使用可能なイミディエート範囲
11-13 VQSHRN と VQSHRUN(イミディエートによる)の使用可能なイミディエート範囲
11-14 VRECPE に有効範囲外の入力を指定した場合の結果
11-15 VRECPS に有効範囲外の入力を指定した場合の結果
11-16 VRSHR(イミディエートによる)で使用可能なイミディエート範囲
11-17 VRSHRN(イミディエートによる)で使用可能なイミディエート範囲
11-18 VRSQRTE の有効範囲外の入力を指定した場合の結果
11-19 VRSQRTS の有効範囲外の入力を指定した場合の結果
11-20 VRSRA(イミディエートによる)で使用可能なイミディエート範囲
11-21 VSHL(イミディエートによる)で使用可能なイミディエート範囲
11-22 VSHLL(イミディエートによる)で使用可能なイミディエート範囲
11-23 VSHR(イミディエートによる)で使用可能なイミディエート範囲
11-24 VSHRN(イミディエートによる)で使用可能なイミディエート範囲
11-25 VSRA(イミディエートによる)で使用可能なイミディエート範囲
11-26 VSTn のパラメータの有効な組み合わせ(複数の n 要素構造体)
11-27 VSTn のパラメータの有効な組み合わせ(1 レーンへの 1 つの n 要素構造体)
11-28 ダブルワード VUZP.8 演算
11-29 クワッドワード VUZP.32 演算
11-30 ダブルワード VZIP.8 演算
11-31 クワッドワード VZIP.32 演算
12-1 ワイヤレス MMX テクノロジの命令
12-2 ワイヤレス MMX テクノロジの疑似命令
13-1 ディレクティブのリスト
13-2 OPT ディレクティブの設定
A-1 発行 J と発行 K の相違点
A-2 発行 I と発行 J の相違点
A-3 発行 H と発行 I の相違点
A-4 発行 G と発行 H の相違点
A-5 発行 F と発行 G の相違点
A-6 発行 E と発行 F の相違点
A-7 発行 D と発行 E の相違点
A-8 発行 C と発行 D の相違点
A-9 発行 B と発行 C の相違点
A-10 発行 A と発行 B の相違点

リリース情報

ドキュメント履歴
発行 日付 機密保持ステータス 変更点
A 5 月 2010 非機密扱い ARM コンパイラ v4.1 リリース
B 30 9 月 2010 非機密扱い ARM コンパイラ v4.1 のアップデート 1
C 28 1 月 2011 非機密扱い ARM コンパイラ v4.1 パッチ 3 のアップデート 2
D 30 4 月 2011 非機密扱い ARM コンパイラ v5.0 リリース
E 29 7 月 2011 非機密扱い ARM コンパイラ v5.0 のアップデート 1
F 30 9 月 2011 非機密扱い ARM コンパイラ v5.01 リリース
G 29 2 月 2012 非機密扱い ARM コンパイラ v5.01 リリースのマニュアルアップデート 1
H 27 7 月 2012 非機密扱い ARM コンパイラ v5.02 リリース
I 31 1 月 2013 非機密扱い ARM コンパイラ v5.03 リリース
J 27 11 月 2013 非機密扱い ARM コンパイラ v5.04 リリース
K 10 9 月 2014 非機密扱い ARM コンパイラ v5.05 リリース

Non-Confidential Proprietary Notice

This document is protected by copyright and other related rights and the practice or implementation of the information contained in this document may be protected by one or more patents or pending patent applications. No part of this document may be reproduced in any form by any means without the express prior written permission of ARM. No license, express or implied, by estoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.
Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use the information for the purposes of determining whether implementations infringe any third party patents.
THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, ARM makes no representation with respect to, and has undertaken no analysis to identify or understand the scope and content of, third party patents, copyrights, trade secrets, or other rights.
This document may include technical inaccuracies or typographical errors.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure of this document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof is not exported, directly or indirectly, in violation of such export laws. Use of the word “partner” in reference to ARM’s customers is not intended to create or refer to any partnership relationship with any other company. ARM may make changes to this document at any time and without notice.
If any of the provisions contained in these terms conflict with any of the provisions of any signed written agreement covering this document with ARM, then the signed written agreement prevails over and supersedes the conflicting provisions of these terms. This document may be translated into other languages for convenience, and you agree that if there is any conflict between the English version of this document and any translation, the terms of the English version of the Agreement shall prevail.
Copyright © [2010-2014], ARM Limited or its affiliates. All rights reserved.
ARM Limited. Company 02557590 registered in England.
110 Fulbourn Road, Cambridge, England CB1 9NJ.
LES-PRE-20349

非機密著作権情報

本書は、著作権などの権利により保護されており、本書に含まれる手順または実装に関する情報は 1 つ以上の特許または申請中の特許により保護されている可能性があります。本書のいかなる部分も、ARM から事前に書面による明示的な承諾なく、 何らかの形式や方法で無断複製することは許可されていません。 特に記載がない限り、明示的であるか黙示的であるかを問わず、また禁反言やその他いかなる知的財産権のライセンスを許諾するものではありません。
本書の情報には、実装により、いかなる第三者の特許も侵害されないことを確認する目的で情報を使用せず、第三者にもそれを許可しないと承諾することを条件としてアクセスすることができます。
本書は、「現状」のまま提供されます。ARM は、明示的、黙示的、または制定法上のいずれを問わず、いかなる表明も保証も行いません。これには、本書に関連した商品性、品質基準、非侵害、または特定目的への適合性に関する黙示的保証を含むが、 これに限定されません。疑義を避けるため、ARM は第三者の特許、著作権、営業機密、または他の権利の範囲および内容に関して、いかなる表明も行わず、識別や理解のための分析も行いません。
本書には、技術的に不正確な箇所および誤記が含まれる場合があります。
法により禁止されていない限りにおいて、ARM は本書の使用により生じた直接的、間接的、特別、付随的、懲罰的、または結果的損害などを含むすべての損害に対して、たとえそのような損害の可能性が事前に告知されていた場合でも、その原因および責任理論の如何に関わらず一切の責任を 負わないものとします。
本書には、商品のみが含まれています。本書の使用、複製、または開示が関連するあらゆる輸出法および輸出規制に完全に準拠し、本書が全体であれ一部であれ、該当する輸出法に違反して直接的または間接的に輸出されることがないことを保証する 責任を負うものとします。ARM のお客様に関連して「パートナー」という言葉が使用されている場合でも、他会社と提携関係を設立することや、言及することを意図するものではありません。ARM は、通知することなくいつでも本書を変更することができます。
本契約のいずれかの規定と、ARM と締結された本書の内容を含む署名済みの書面契約の間に矛盾がある場合、署名済みの書面契約を本契約の規定より優先するものとします。本書は、 便宜上、他言語に翻訳される場合がありますが、本書の英語版と翻訳との間に矛盾がある場合、契約書の英語版に含まれる規定を優先することに同意するものとします。
記号 ( ® または ™ ) が付いた言葉およびロゴは、ARM Limited や関連会社の EU またはその他の国における登録商標および商標です。All rights reserved.本書に記載されている他の製品名は、各社の所有する商標です。ARM の 商標の使用に関する次のガイドラインに従ってください。 http://www.arm.com/about/trademark-usage-guidelines.php
Copyright © [2010-2014], ARM Limited or its affiliates. All rights reserved.
ARM Limited. Company 02557590 registered in England.
110 Fulbourn Road, Cambridge, England CB1 9NJ.
LES-PRE-20349

機密保持ステータス

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

製品ステータス

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

Web アドレス

非機密扱いPDF file icon PDF 版ARM DUI0473KJ
Copyright © 2010-2014 ARM.All rights reserved.