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

バージョン 6.01


List of Topics

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

List of Tables

1. ARM プロセッサ モード
2. AArch32 状態で事前宣言されているコアレジスタ
3. AArch32 状態で事前宣言されている拡張レジスタ
4. A32 命令グループ
5. AArch64 状態で事前宣言されているコアレジスタ
6. AArch64 状態で事前宣言されている拡張レジスタ
7. A64 命令グループ
8. UAL アセンブリ言語と A64 アセンブリ言語の構文の違い
9. A32 状態のイミディエート値(8 ビット)
10. MOV 命令に使用できる A32 状態のイミディエート値
11. 32 ビット T32 イミディエート値
12. MOV 命令に使用できる 32 ビット T32 イミディエート値
13. スタック指向接尾文字および同等のアドレッシングモード接尾文字
14. 複数ロード/ストア命令の接尾文字
15. 条件コードの接尾文字
16. 条件コード
17. 条件分岐のみの場合
18. すべての命令を条件付きで実行する場合
19. 組み込み変数
20. 組み込みブール定数
21. 定義済みマクロ
22. 文字列を返す単項演算子
23. 数値または論理値を返す単項演算子
24. 乗算演算子
25. 文字列操作演算子
26. シフト演算子
27. 加算、減算、および論理演算子
28. 関係演算子
29. ブール演算子
30. armasm における演算子の優先順位
31. C における演算子の優先順位
32. A32/T32 と A64 の構文およびニーモニックの相違点
33. Advanced SIMD データ型
34. 浮動小数点データ型
35. Advanced SIMD サチュレーションの範囲

著作権

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

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

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

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

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

機密保持ステータス

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

製品ステータス

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

Revision History
Revision A2014 年 3 月 14 日ARM コンパイラ v6.00 リリース
Revision B2014 年 12 月 15 日ARM コンパイラ v6.01 リリース
Copyright © 2014 ARM. All rights reserved.ARM DUI 0801BJ
Non-ConfidentialID121814