ARM® コンパイラツールチェーン アセンブラの使用

バージョン 5.03


List of Topics

表記規則とフィードバック
アセンブラの概要
ARM コンパイラツールチェーンのアセンブラについて
アセンブラの主な機能
アセンブラの操作方法
アセンブラのパス 2 で省略できるディレクティブ
ARM アーキテクチャの概要
ARM アーキテクチャについて
ARM、Thumb、および ThumbEE の命令セット
ARM、Thumb、および ThumbEE 状態の切り替え
プロセッサモード、および特権モードと非特権モードでのソフトウェア実行
ARMv6-M および ARMv7-M のプロセッサモード
NEON テクノロジ
VFP コプロセッサ
ARM レジスタ
汎用レジスタ
レジスタへのアクセス
事前宣言されている主要なレジスタ名
事前宣言されている拡張レジスタ名
事前宣言されている XScale レジスタ名
事前宣言されているコプロセッサ名
プログラムカウンタ
アプリケーションプログラムステータスレジスタ
Q フラグ
カレントプログラムステータスレジスタ
セーブドプログラム状態レジスタ(SPSR)
命令セットの概要
メディア処理命令
インラインバレルシフタへのアクセス
アセンブリ言語モジュールの構造
アセンブリ言語のソース行の構文
リテラル
ELF セクションと AREA ディレクティブ
ARM アセンブリ言語モジュールのサンプル
ARM アセンブリ言語の記述
統一アセンブラ言語
サブルーチン呼び出し
レジスタへのイミディエート値のロード
MOV および MVN を使用したイミディエート値のロード
MOV32 を使用したレジスタへの 32 ビット値のロード
LDR Rd, =const を使用したレジスタへの 32 ビットイミディエート値のロード
リテラルプール
レジスタへのアドレスのロード
ADR を使用したレジスタへのアドレスのロード
ADRL を使用したレジスタへのアドレスのロード
LDR Rd, =label を使用したレジスタへのアドレスのロード
レジスタのロードとストアを実行する他の方法
複数レジスタ ロード/ストア命令
ARM と Thumb で利用できる複数ロード/ストア命令
LDM および STM を使用したスタックの実装
ネストされたサブルーチンのスタック操作
LDM および STM によるブロックコピー
メモリアクセス
読み出し-変更-書き込みプロシージャ
オプションのハッシュ
マクロの使用
Test-and-Branch(テスト-分岐)マクロのサンプル
符号なし整数除算マクロのサンプル
命令とディレクティブの再配置
シンボルバージョン
Frame ディレクティブ
例外テーブルと unwind テーブル
RVCTv2.1 以降のアセンブリ言語に関する変更点
条件コード
条件付き命令
ARM 状態での条件付き実行
Thumb 状態での条件付き実行
ALU ステータスフラグの更新
条件コードの接尾文字
条件コードの意味
条件付き実行を使用するメリット
条件付き実行を使用するメリットの実例
実行速度の最適化
アセンブラの使用
アセンブラのコマンドライン構文
アセンブラコマンドの一覧(グループ別)
環境変数を使用したコマンドラインオプションの指定
stdin を使用したアセンブラへのソースコードの入力
組み込み変数および定数
armasm のバージョン
診断メッセージ
インターロック診断
IT ブロック生成
Thumb 分岐ターゲットのワード境界整列
Thumb コードサイズの診断
ARM 命令と Thumb 命令の移植性の診断
命令の幅
第 2 パスアセンブラ診断
条件付きアセンブリ
C プリプロセッサを使用する
アドレス境界調整
Thumb での命令の幅の選択
シンボル、リテラル、式、および演算子
シンボルの命名規則
変数
数値定数
アセンブリ時の変数代入
レジスタ相対式と PC 相対式
ラベル
PC 相対アドレスのラベル
レジスタ相対アドレスのラベル
絶対アドレスのラベル
数値のローカルラベル
数値のローカルラベルの構文
文字列式
文字列リテラル
数値式
数値リテラル
浮動小数点リテラル
論理式
論理リテラル
単項演算子
バイナリ演算子
乗算演算子
文字列操作演算子
シフト演算子
加算、減算、および論理演算子
関係演算子
ブール演算子
演算子の優先順位
armasm と C 言語における演算子の優先順位の違い
NEON と VFP プログラミング
NEON と VFP 向けのアーキテクチャサポート
半精度拡張
融合型積和演算拡張
拡張レジスタバンクのマッピング
レジスタバンクの NEON ビュー
拡張レジスタバンクの VFP ビュー
VFP レジスタおよび NEON レジスタへの値のロード
NEON 命令および VFP 命令の条件付き実行
浮動小数点の例外
NEON データ型および VFP データ型
NEON ベクタ
Normal NEON 命令
Long NEON 命令
Wide NEON 命令
Narrow NEON 命令
サチュレート NEON 命令
NEON スカラ
拡張表記
{0,1} 上の多項式算術演算
NEON/VFP システムレジスタ
flush-to-zero モード
flush-to-zero モードをいつ使用すべきか
flush-to-zero モードの使用による影響
flush-to-zero モードの影響を受けない演算
VFP ベクタモード
VFP 拡張レジスタバンクのベクタ
VFP ベクタのラップアラウンド
VFP ベクタのストライド
ベクタの長さに関する制限
スカラ演算、ベクタ演算、および混合演算の制御
VFP ディレクティブとベクタ表記
UAL 以前の VFP ニーモニック
ベクタ表記
VFPASSERT SCALAR
VFPASSERT VECTOR
『アセンブラの使用』に対する改訂

List of Tables

1. ARM プロセッサ モード
2. 事前宣言されている主要なレジスタ
3. 事前宣言されている拡張レジスタ
4. 事前宣言されている XScale レジスタ
5. 事前宣言されているワイヤレス MMX レジスタ
6. 事前宣言されているコプロセッサレジスタ
7. 命令グループ
8. ARM 状態のイミディエート値(8 ビット)
9. MOV 命令に使用できる ARM 状態のイミディエート値
10. 32 ビット Thumb のイミディエート値
11. MOV 命令に使用できる 32 ビット Thumb のイミディエート値
12. スタック指向接尾文字および同等のアドレッシングモード接尾文字
13. 複数ロード/ストア命令の接尾文字
14. 以前の ARM アセンブリ言語からの変更点
15. 要件の緩和
16. UAL 以前の Thumb 構文と UAL 構文の相違点
17. 条件コードの接尾文字
18. 条件コード
19. 条件分岐のみの場合
20. すべての命令を条件付きで実行する場合
21. 組み込み変数
22. 組み込みブール定数
23. 定義済みマクロ
24. {TARGET_ARCH_ARM} と {TARGET_ARCH_THUMB} の関連
25. コマンドラインオプション
26. armcc における等価のコマンドラインオプション
27. 文字列を返す単項演算子
28. 数値または論理値を返す単項演算子
29. 乗算演算子
30. 文字列操作演算子
31. シフト演算子
32. 加算、減算、および論理演算子
33. 関係演算子
34. ブール演算子
35. armasm における演算子の優先順位
36. C における演算子の優先順位
37. NEON データ型
38. VFP データ型
39. NEON サチュレーションの範囲
40. UAL 以前の VFP ニーモニック
41. FCONST で使用できる浮動小数点値
42. 発行 H と発行 I の相違点
43. 発行 G と発行 H の相違点
44. 発行 F と発行 G の相違点
45. 発行 E と発行 F の相違点
46. 発行 C と発行 D の相違点
47. 発行 B と発行 C の相違点
48. 発行 A と発行 B の相違点

著作権

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

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

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

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

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

機密保持ステータス

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

製品ステータス

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

Revision History
Revision A2010 年 5 月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 リリースマニュアルの更新 1
Revision H2012 年 7 月 27 日ARM コンパイラツールチェーン v5.02 リリース
Revision I2013 年 1 月 31 日ARM コンパイラツールチェーン v5.03 リリース
Copyright © 2010-2013 ARM. All rights reserved.ARM DUI 0473IJ
Non-ConfidentialID102113