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

バージョン 5.06


目次

序章
本書について
本書の構成
用語集
表記規則
ご意見、ご感想
その他の情報
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 armasm のコマンドライン構文
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 プログラミング
8.1 NEON のアーキテクチャサポート
8.2 NEON の半精度拡張機能
8.3 NEON の融合型積和演算拡張
8.4 NEON での拡張レジスタバンクのマッピング
8.5 拡張レジスタバンクの NEON ビュー
8.6 NEON レジスタへの値のロード
8.7 NEON 命令の条件付き実行
8.8 NEON での浮動小数点の例外
8.9 NEON データ型
8.10 NEON における拡張された表記拡張機能
8.11 NEON ベクタ
8.12 Normal、Long、Wide、および Narrow の NEON 演算
8.13 サチュレート NEON 命令
8.14 NEON スカラ
8.15 {0,1} 上の多項式算術演算
8.16 NEON システムレジスタ
8.17 NEON における flush-to-zero モード
8.18 flush-to-zero モードの影響を受けない NEON 演算
8.19 NEON で flush-to-zero モードをいつ使用すべきか
8.20 NEON での flush-to-zero モードの使用による影響
9 VFP プログラミング
9.1 VFP のアーキテクチャサポート
9.2 VFP 用の半精度拡張機能
9.3 VFP 用の融合型積和演算拡張
9.4 VFP での拡張レジスタバンクのマッピング
9.5 拡張レジスタバンクの VFP ビュー
9.6 VFP レジスタへの値のロード
9.7 VFP 命令の条件付き実行
9.8 VFP での浮動小数点の例外
9.9 VFP データ型
9.10 VFP における拡張された表記拡張機能
9.11 VFP システムレジスタ
9.12 flush-to-zero モード
9.13 VFP で flush-to-zero モードをいつ使用すべきか
9.14 VFP での flush-to-zero モードの使用による影響
9.15 flush-to-zero モードの影響を受けない VFP 演算
9.16 VFP ベクタモード
9.17 VFP 拡張レジスタバンクのベクタ
9.18 VFP ベクタのラップアラウンド
9.19 VFP ベクタのストライド
9.20 ベクタの長さに関する制限
9.21 スカラ演算、ベクタ演算、および混合演算の制御
9.22 VFP ディレクティブとベクタ表記の概要
9.23 UAL 以前の VFP 構文とニーモニック
9.24 ベクタ表記
9.25 VFPASSERT SCALAR
9.26 VFPASSERT VECTOR
10 アセンブラコマンドラインオプション
10.1 --16
10.2 --32
10.3 --apcs=qualifier…qualifier
10.4 --arm
10.5 --arm_only
10.6 --bi
10.7 --bigend
10.8 --brief_diagnostics、--no_brief_diagnostics
10.9 --checkreglist
10.10 --compatible=name
10.11 --cpreproc
10.12 --cpreproc_opts=option[,option,…]
10.13 --cpu=list
10.14 --cpu=name
10.15 --debug
10.16 --depend=dependfile
10.17 --depend_format=string
10.18 --diag_error=tag[,tag,…]
10.19 --diag_remark=tag[,tag,…]
10.20 --diag_style={arm|ide|gnu}
10.21 --diag_suppress=tag[,tag,…]
10.22 --diag_warning=tag[,tag,…]
10.23 --dllexport_all
10.24 --dwarf2
10.25 --dwarf3
10.26 --errors=errorfile
10.27 --execstack、--no_execstack
10.28 --execute_only
10.29 --exceptions、--no_exceptions
10.30 --exceptions_unwind、--no_exceptions_unwind
10.31 --fpmode=model
10.32 --fpu=list
10.33 --fpu=name
10.34 -g
10.35 --help
10.36 -idir[,dir, …]
10.37 --keep
10.38 --length=n
10.39 --li
10.40 --library_type=lib
10.41 --licretry
10.42 --list=file
10.43 --list=
10.44 --littleend
10.45 -m
10.46 --maxcache=n
10.47 --md
10.48 --no_code_gen
10.49 --no_esc
10.50 --no_hide_all
10.51 --no_regs
10.52 --no_terse
10.53 --no_warn
10.54 -o filename
10.55 --pd
10.56 --predefine "directive"
10.57 --reduce_paths、--no_reduce_paths
10.58 --regnames
10.59 --regnames=callstd
10.60 --regnames=all
10.61 --report-if-not-wysiwyg
10.62 --show_cmdline
10.63 --split_ldm
10.64 --thumb
10.65 --thumbx
10.66 --unaligned_access、--no_unaligned_access
10.67 --unsafe
10.68 --untyped_local_labels
10.69 --version_number
10.70 --via=filename
10.71 --vsn
10.72 --width=n
10.73 --xref
11 ARM 命令と Thumb 命令
11.1 ARM 命令と Thumb 命令の概要
11.2 命令の幅指定子
11.3 フレキシブル第 2 オペランド(Operand2)
11.4 定数としての Operand2 の構文
11.5 シフトが任意に実行されるレジスタとしての Operand2 の構文
11.6 シフト演算
11.7 サチュレート命令
11.8 条件コードの接尾文字
11.9 ADC
11.10 ADD
11.11 ADR(PC 相対)
11.12 ADR(レジスタ相対)
11.13 ADRL 疑似命令
11.14 AND
11.15 ASR
11.16 B
11.17 BFC
11.18 BFI
11.19 BIC
11.20 BKPT
11.21 BL
11.22 BLX
11.23 BX
11.24 BXJ
11.25 CBZ、CBNZ
11.26 CDP、CDP2
11.27 CLREX
11.28 CLZ
11.29 CMP、CMN
11.30 CPS
11.31 CPY 疑似命令
11.32 DBG
11.33 DMB
11.34 DSB
11.35 EOR
11.36 ERET
11.37 HVC
11.38 ISB
11.39 IT
11.40 LDC および LDC2
11.41 LDM
11.42 LDR(イミディエートオフセット)
11.43 LDR(PC 相対)
11.44 LDR(レジスタオフセット)
11.45 LDR(レジスタ相対)
11.46 LDR 疑似命令
11.47 LDR、非特権モード
11.48 LDREX
11.49 LSL
11.50 LSR
11.51 MAR
11.52 MCR および MCR2
11.53 MCRR および MCRR2
11.54 MIA、MIAPH、MIAxy
11.55 MLA
11.56 MLS
11.57 MOV
11.58 MOV32 疑似命令
11.59 MOVT
11.60 MRA
11.61 MRC および MRC2
11.62 MRRC および MRRC2
11.63 MRS(PSR 汎用レジスタ)
11.64 MRS(システムコプロセッサレジスタから ARM レジスタへ)
11.65 MSR(ARM レジスタからシステムコプロセッサレジスタへ)
11.66 MSR(PSR への汎用レジスタ)
11.67 MUL
11.68 MVN
11.69 NEG 疑似命令
11.70 NOP
11.71 ORN(Thumb のみ)
11.72 ORR
11.73 PKHBT、PKHTB
11.74 PLD、PLDW、PLI
11.75 POP
11.76 PUSH
11.77 QADD
11.78 QADD8
11.79 QADD16
11.80 QASX
11.81 QDADD
11.82 QDSUB
11.83 QSAX
11.84 QSUB
11.85 QSUB8
11.86 QSUB16
11.87 RBIT
11.88 REV
11.89 REV16
11.90 REVSH
11.91 RFE
11.92 ROR
11.93 RRX
11.94 RSB
11.95 RSC
11.96 SADD8
11.97 SADD16
11.98 SASX
11.99 SBC
11.100 SBFX
11.101 SDIV
11.102 SEL
11.103 SETEND
11.104 SEV
11.105 SHADD8
11.106 SHADD16
11.107 SHASX
11.108 SHSAX
11.109 SHSUB8
11.110 SHSUB16
11.111 SMC
11.112 SMLAxy
11.113 SMLAD
11.114 SMLAL
11.115 SMLALD
11.116 SMLALxy
11.117 SMLAWy
11.118 SMLSD
11.119 SMLSLD
11.120 SMMLA
11.121 SMMLS
11.122 SMMUL
11.123 SMUAD
11.124 SMULxy
11.125 SMULL
11.126 SMULWy
11.127 SMUSD
11.128 SRS
11.129 SSAT
11.130 SSAT16
11.131 SSAX
11.132 SSUB8
11.133 SSUB16
11.134 STC および STC2
11.135 STM
11.136 STR(イミディエートオフセット)
11.137 STR(レジスタオフセット)
11.138 STR、非特権モード
11.139 STREX
11.140 SUB
11.141 SUBS PC、lr
11.142 SVC
11.143 SWP と SWPB
11.144 SXTAB
11.145 SXTAB16
11.146 SXTAH
11.147 SXTB
11.148 SXTB16
11.149 SXTH
11.150 SYS
11.151 TBB、TBH
11.152 TEQ
11.153 TST
11.154 UADD8
11.155 UADD16
11.156 UASX
11.157 UBFX
11.158 UDIV
11.159 UHADD8
11.160 UHADD16
11.161 UHASX
11.162 UHSAX
11.163 UHSUB8
11.164 UHSUB16
11.165 UMAAL
11.166 UMLAL
11.167 UMULL
11.168 UND 疑似命令
11.169 UQADD8
11.170 UQADD16
11.171 UQASX
11.172 UQSAX
11.173 UQSUB8
11.174 UQSUB16
11.175 USAD8
11.176 USADA8
11.177 USAT
11.178 USAT16
11.179 USAX
11.180 USUB8
11.181 USUB16
11.182 UXTAB
11.183 UXTAB16
11.184 UXTAH
11.185 UXTB
11.186 UXTB16
11.187 UXTH
11.188 WFE
11.189 WFI
11.190 YIELD
12 NEON 命令
12.1 NEON 命令の概要
12.2 NEON と VFP に共通の命令の概要
12.3 要素と構造体のロード/ストア命令で提供されるインターリーブ
12.4 ロードとストア命令、要素と構造体の命令における境界調整の制約
12.5 VABA および VABAL
12.6 VABD および VABDL
12.7 VABS
12.8 VACLE、VACLT、VACGE、および VACGT
12.9 VADD
12.10 VADDHN
12.11 VADDL および VADDW
12.12 VAND(イミディエート)
12.13 VAND(レジスタ)
12.14 VBIC(イミディエート)
12.15 VBIC(レジスタ)
12.16 VBIF
12.17 VBIT
12.18 VBSL
12.19 VCEQ(イミディエート #0)
12.20 VCEQ(レジスタ)
12.21 VCGE(イミディエート #0)
12.22 VCGE(レジスタ)
12.23 VCGT(イミディエート #0)
12.24 VCGT(レジスタ)
12.25 VCLE(イミディエート #0)
12.26 VCLE(レジスタ)
12.27 VCLS
12.28 VCLT(イミディエート #0)
12.29 VCLT(レジスタ)
12.30 VCLZ
12.31 VCNT
12.32 VCVT(固定小数点または整数と浮動小数点間)
12.33 VCVT(半精度浮動小数点数と単精度浮動小数点数間の変換)
12.34 VDUP
12.35 VEOR
12.36 VEXT
12.37 VFMA、VFMS
12.38 VHADD
12.39 VHSUB
12.40 VLDn(1 レーンへの 1 つの n 要素構造体)
12.41 VLDn(全レーンへの 1 つの n 要素構造体)
12.42 VLDn(複数の n 要素構造体)
12.43 VLDM
12.44 VLDR
12.45 VLDR(ポストインクリメントとプレデクリメント)
12.46 VLDR 疑似命令
12.47 VMAX および VMIN
12.48 VMLA
12.49 VMLA(スカラによる)
12.50 VMLAL(スカラによる)
12.51 VMLAL
12.52 VMLS(スカラによる)
12.53 VMLS
12.54 VMLSL
12.55 VMLSL(スカラによる)
12.56 VMOV(浮動小数点)
12.57 VMOV(イミディエート)
12.58 VMOV(レジスタ)
12.59 VMOV(2 本の ARM レジスタと 1 本の 64 ビット拡張レジスタ間)
12.60 VMOV(ARM レジスタと NEON スカラの間)
12.61 VMOVL
12.62 VMOVN
12.63 VMOV2
12.64 VMRS
12.65 VMSR
12.66 VMUL
12.67 VMUL(スカラによる)
12.68 VMULL
12.69 VMULL(スカラによる)
12.70 VMVN(レジスタ)
12.71 VMVN(イミディエート)
12.72 VNEG
12.73 VORN(レジスタ)
12.74 VORN(イミディエート)
12.75 VORR(レジスタ)
12.76 VORR(イミディエート)
12.77 VPADAL
12.78 VPADD
12.79 VPADDL
12.80 VPMAX および VPMIN
12.81 VPOP
12.82 VPUSH
12.83 VQABS
12.84 VQADD
12.85 VQDMLAL および VQDMLSL(ベクタまたはスカラによる)
12.86 VQDMULH(ベクタまたはスカラによる)
12.87 VQDMULL(ベクタまたはスカラによる)
12.88 VQMOVN および VQMOVUN
12.89 VQNEG
12.90 VQRDMULH(ベクタまたはスカラによる)
12.91 VQRSHL(符号付き変数による)
12.92 VQRSHRN および VQRSHRUN(イミディエートによる)
12.93 VQSHL(符号付き変数による)
12.94 VQSHL および VQSHLU(イミディエートによる)
12.95 VQSHRN および VQSHRUN(イミディエートによる)
12.96 VQSUB
12.97 VRADDHN
12.98 VRECPE
12.99 VRECPS
12.100 VREV16、VREV32、VREV64
12.101 VRHADD
12.102 VRSHL(符号付き変数による)
12.103 VRSHR(イミディエートによる)
12.104 VRSHRN(イミディエートによる)
12.105 VRSQRTE
12.106 VRSQRTS
12.107 VRSRA(イミディエートによる)
12.108 VRSUBHN
12.109 VSHL(イミディエートによる)
12.110 VSHL(符号付き変数による)
12.111 VSHLL(イミディエートによる)
12.112 VSHR(イミディエートによる)
12.113 VSHRN(イミディエートによる)
12.114 VSLI
12.115 VSRA(イミディエートによる)
12.116 VSRI
12.117 VSTM
12.118 VSTn(複数の n 要素構造体)
12.119 VSTn(1 レーンへの 1 つの n 要素構造体)
12.120 VSTR
12.121 VSTR(ポストインクリメントとプレデクリメント)
12.122 VSUB
12.123 VSUBHN
12.124 VSUBL および VSUBW
12.125 VSWP
12.126 VTBL および VTBX
12.127 VTRN
12.128 VTST
12.129 VUZP
12.130 VZIP
13 VFP 命令
13.1 VFP 命令の概要
13.2 VABS(浮動小数点)
13.3 VADD(浮動小数点)
13.4 VCMP、VCMPE
13.5 VCVT(単精度と倍精度の間)
13.6 VCVT(浮動小数点と整数間の変換)
13.7 VCVT(浮動小数点と固定小数点間)
13.8 VCVTB、VCVTT(半精度拡張)
13.9 VDIV
13.10 VFMA、VFMS、VFNMA、VFNMS(浮動小数点)
13.11 VLDM(浮動小数点)
13.12 VLDR(浮動小数点)
13.13 VLDR(ポストインクリメントとプレデクリメント、浮動小数点)
13.14 VLDR 疑似命令
13.15 VMLA(浮動小数点)
13.16 VMLS(浮動小数点)
13.17 VMOV(浮動小数点)
13.18 VMOV(1 本の ARM レジスタと単精度 VFP の間)
13.19 VMOV(2 本の ARM レジスタと 1 本または 2 本の拡張レジスタ間)
13.20 VMOV(ARM レジスタと倍精度の半分の VFP レジスタの間)
13.21 VMRS
13.22 VMSR
13.23 VMUL(浮動小数点)
13.24 VNEG(浮動小数点)
13.25 VNMLA(浮動小数点)
13.26 VNMLS(浮動小数点)
13.27 VNMUL(浮動小数点)
13.28 VPOP(浮動小数点)
13.29 VPUSH(浮動小数点)
13.30 VSQRT
13.31 VSTM(浮動小数点)
13.32 VSTR(浮動小数点)
13.33 VSTR(ポストインクリメントとプレデクリメント、浮動小数点)
13.34 VSUB(浮動小数点)
14 ワイヤレス MMX テクノロジの命令
14.1 ワイヤレス MMX テクノロジの命令について
14.2 ワイヤレス MMX テクノロジをサポートする WRN ディレクティブおよび WCN ディレクティブ
14.3 Frame ディレクティブとワイヤレス MMX テクノロジ
14.4 ワイヤレス MMX ロード/ストア命令
14.5 ワイヤレス MMX テクノロジの命令と XScale の命令
14.6 ワイヤレス MMX の命令
14.7 ワイヤレス MMX の疑似命令
15 ディレクティブリファレンス
15.1 ディレクティブの一覧(アルファベット順)
15.2 アセンブリ制御ディレクティブについて
15.3 Frame ディレクティブについて
15.4 ALIAS
15.5 ALIGN
15.6 AREA
15.7 ARM または CODE32
15.8 ASSERT
15.9 ATTR
15.10 CN
15.11 CODE16
15.12 COMMON
15.13 CP
15.14 DATA
15.15 DCB
15.16 DCD、DCDU
15.17 DCDO
15.18 DCFD、DCFDU
15.19 DCFS、DCFSU
15.20 DCI
15.21 DCQ、DCQU
15.22 DCW、DCWU
15.23 END
15.24 ENDFUNC、ENDP
15.25 ENTRY
15.26 EQU
15.27 EXPORT、GLOBAL
15.28 EXPORTAS
15.29 FIELD
15.30 FRAME ADDRESS
15.31 FRAME POP
15.32 FRAME PUSH
15.33 FRAME REGISTER
15.34 FRAME RESTORE
15.35 FRAME RETURN ADDRESS
15.36 FRAME SAVE
15.37 FRAME STATE REMEMBER
15.38 FRAME STATE RESTORE
15.39 FRAME UNWIND ON
15.40 FRAME UNWIND OFF
15.41 FUNCTION、PROC
15.42 GBLA、GBLL、GBLS
15.43 GET、INCLUDE
15.44 IF、ELSE、ENDIF、ELIF
15.45 IMPORT、EXTERN
15.46 INCBIN
15.47 INFO
15.48 KEEP
15.49 LCLA、LCLL、LCLS
15.50 LTORG
15.51 MACRO、MEND
15.52 MAP
15.53 MEXIT
15.54 NOFP
15.55 OPT
15.56 QN、DN、SN
15.57 RELOC
15.58 REQUIRE
15.59 REQUIRE8、PRESERVE8
15.60 RLIST
15.61 RN
15.62 ROUT
15.63 SETA、SETL、SETS
15.64 SPACE または FILL
15.65 THUMB
15.66 THUMBX
15.67 TTL、SUBT
15.68 WHILE、WEND
16 via ファイルの構文
16.1 via ファイルの概要
16.2 via ファイルの構文規則
A アセンブラドキュメントに対する改訂
A.1 『armasm ユーザガイド』に対する改訂

図の一覧

2-1 汎用レジスタとプログラムステータスレジスタの構成
8-1 NEON 拡張レジスタバンク
9-1 VFP 拡張レジスタバンク
9-2 VFPv2 レジスタバンク
9-3 VFPv3 レジスタバンク
11-1 ASR #3
11-2 LSR #3
11-3 LSL #3
11-4 ROR #3
11-5 RRX
12-1 3 要素構造体からなる配列のインターリーブの解除
12-2 imm = 3 の場合のダブルワード VEXT 演算
12-3 VPADAL 演算の例(データ型 S16 の場合)
12-4 VPADD 演算の例(データ型 I16 の場合)
12-5 ダブルワード VPADDL 演算の例(データ型 S16 の場合)
12-6 クワッドワード VSHL.I64 Qd, Qm, #1 の演算
12-7 クワッドワード VSLI.64 Qd, Qm, #1 の演算
12-8 ダブルワード VSRI.64 Dd, Dm, #2 の演算
12-9 ダブルワード VTRN.8 演算
12-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 NEON サチュレーションの範囲
9-1 VFP データ型指定子
9-2 UAL 以前の VFP ニーモニック
9-3 FCONST で使用できる浮動小数点値
10-1 互換性のあるプロセッサまたはアーキテクチャの組み合わせ
10-2 サポートされている ARM アーキテクチャ
10-3 診断メッセージの重大度
10-4 GNU-stack セクションに対するコマンドラインオプションと AREA ディレクティブの指定
11-1 ARM 命令と Thumb 命令の概要
11-2 条件コードの接尾文字
11-3 PC 相対オフセット
11-4 レジスタ相対オフセット
11-5 B 命令の使用可否と範囲
11-6 BL 命令の使用可否と分岐の範囲
11-7 BLX 命令の使用可否と分岐の範囲
11-8 BX 命令の使用可否と分岐の範囲
11-9 BXJ 命令の使用可否と分岐の範囲
11-10 オフセットとアーキテクチャ、LDR、ワード、ハーフワード、バイト
11-11 PC 相対オフセット
11-12 オプションとアーキテクチャ、LDR(レジスタオフセット)
11-13 レジスタ相対オフセット
11-14 オフセットとアーキテクチャ、LDR(ユーザモード)
11-15 オフセットとアーキテクチャ、STR、ワード、ハーフワード、バイト
11-16 オプションとアーキテクチャ、STR (レジスタオフセット)
11-17 オフセットとアーキテクチャ、STR (ユーザモード)
11-18 expr の範囲とエンコーディング
12-1 NEON 命令の概要
12-2 NEON と VFP に共通の命令の概要
12-3 VBIC(イミディエート)におけるイミディエート値のパターン
12-4 VLDn のパラメータの有効な組み合わせ(1 レーンへの 1 つの n 要素構造体)
12-5 VLDn のパラメータの有効な組み合わせ(全レーンへの 1 つの n 要素構造体)
12-6 VLDn のパラメータの有効な組み合わせ(複数の n 要素構造体)
12-7 VMOV(イミディエート)の使用可能なイミディエート値
12-8 VMVN(イミディエート)の使用可能なイミディエート値
12-9 VORR(イミディエート)におけるイミディエート値のパターン
12-10 VQRSHRN と VQRSHRUN(イミディエートによる)の使用可能なイミディエート範囲
12-11 VQSHL と VQSHLU(イミディエートによる)の使用可能なイミディエート範囲
12-12 VQSHRN と VQSHRUN(イミディエートによる)の使用可能なイミディエート範囲
12-13 VRECPE に有効範囲外の入力を指定した場合の結果
12-14 VRECPS に有効範囲外の入力を指定した場合の結果
12-15 VRSHR(イミディエートによる)で使用可能なイミディエート範囲
12-16 VRSHRN(イミディエートによる)で使用可能なイミディエート範囲
12-17 VRSQRTE の有効範囲外の入力を指定した場合の結果
12-18 VRSQRTS の有効範囲外の入力を指定した場合の結果
12-19 VRSRA(イミディエートによる)で使用可能なイミディエート範囲
12-20 VSHL(イミディエートによる)で使用可能なイミディエート範囲
12-21 VSHLL(イミディエートによる)で使用可能なイミディエート範囲
12-22 VSHR(イミディエートによる)で使用可能なイミディエート範囲
12-23 VSHRN(イミディエートによる)で使用可能なイミディエート範囲
12-24 VSRA(イミディエートによる)で使用可能なイミディエート範囲
12-25 VSTn のパラメータの有効な組み合わせ(複数の n 要素構造体)
12-26 VSTn のパラメータの有効な組み合わせ(1 レーンへの 1 つの n 要素構造体)
12-27 ダブルワード VUZP.8 演算
12-28 クワッドワード VUZP.32 演算
12-29 ダブルワード VZIP.8 演算
12-30 クワッドワード VZIP.32 演算
13-1 VFP 命令の概要
14-1 ワイヤレス MMX テクノロジの命令
14-2 ワイヤレス MMX テクノロジの疑似命令
15-1 ディレクティブのリスト
15-2 OPT ディレクティブの設定
A-1 発行 K と発行 L の相違点
A-2 発行 J と発行 K の相違点
A-3 発行 I と発行 J の相違点
A-4 発行 H と発行 I の相違点
A-5 発行 G と発行 H の相違点
A-6 発行 F と発行 G の相違点
A-7 発行 E と発行 F の相違点
A-8 発行 D と発行 E の相違点
A-9 発行 C と発行 D の相違点
A-10 発行 B と発行 C の相違点
A-11 発行 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 リリース
L 29 7 月 2015 非機密扱い ARM コンパイラ v5.06 リリース

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-2015], 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-2015], 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 DUI0473LJ
Copyright © 2010-2015 ARM.All rights reserved.