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

バージョン 6.00


List of Topics

表記規則とフィードバック
armasm の概要
ARM コンパイラツールチェーンのアセンブラについて
アセンブラの主な機能
アセンブラの操作方法
アセンブラのパス 2 で省略できるディレクティブ
ARM アーキテクチャの概要
ARM アーキテクチャについて
A64、A32、および T32 命令セット
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 および浮動小数点向けのアーキテクチャサポート
A32 状態での拡張レジスタバンクのマッピング
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 モードの使用による影響
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 リリース
Copyright © 2014 ARM. All rights reserved.ARM DUI 0801AJ
Non-ConfidentialID061814