140
IAR アセンブラ リファレンスガイド ルネサス製 RX マイクロコンピュータファミリ対象

IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

  • Upload
    hadan

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

ARX-1

IAR アセンブラリファレンスガイド

ルネサス製

RX マイクロコンピュータファミリ対象

Page 2: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

ARX-1

版権事項Copyright 2009 IAR Systems AB.

IAR Systems AB が事前に書面で同意した場合を除き、このドキュメントを複製することはできません。 このドキュメントに記載するソフトウェアは、正当な権限の範囲内でインストール、使用、およびコピーすることができます。

免責事項このドキュメントの内容は、予告なく変更されることがあります。 また、IAR Systems 社では、このドキュメントの内容に関して一切責任を負いません。 記載内容には万全を期していますが、万一、誤りや不備がある場合でもIAR Systems 社はその責任を負いません。

IAR Systems 社、その従業員、その下請企業、またはこのドキュメントの作成者は、特殊な状況で、直接的、間接的、または結果的に発生した損害、損失、費用、課金、権利、請求、逸失利益、料金、またはその他の経費に対して一切責任を負いません。

商標IAR Systems、IAR Embedded Workbench、C-SPY、visualSTATE、From Idea to Target、IAR KickStart Kit、IAR PowerPac、IAR YellowSuite、IAR Advanced Development Kit、IAR、および IAR Systems のロゴタイプは、IAR Systems ABが所有権を有する商標または登録商標です。 J-Link は IAR Systems AB にライセンス供与されている商標です。

Microsoft および Windows は、Microsoft Corporation の登録商標です。

ルネサスは、ルネサス Technology Corporation の登録商標です。 RX と RX は、ルネサス Technology Corporation の商標です。

その他の製品名はすべて、各製品名の所有者の商標または登録商標です。

改版情報

初版 : 2009 年 5 月

部品番号 : ARX-1-J

本ガイドは、RX 用 IAR Embedded Workbench のバージョン 1.x に適用する。

内部参照: AFE2、R8、IJOA。

Page 3: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

目次表 ............................................................................................................................... ix

はじめに ............................................................................................................... xi

本ガイドの対象者 ......................................................................................xi

本ガイドの使用方法 .................................................................................xi

このガイドの概要 .....................................................................................xii

その他のドキュメント ............................................................................xii

表記規則 ......................................................................................................xiii

表記規則 ...........................................................................................xiii

命名規約 ...........................................................................................xiv

RX 用 IAR アセンブラの概要 .................................................................. 1

アセンブラプログラミングの概要 ........................................................ 1

イントロダクション .......................................................................... 1

モジュール方式のプログラミング ........................................................ 2

外部インタフェースの詳細 ..................................................................... 3

アセンブラ呼出し構文 ...................................................................... 3

オプションの受渡し .......................................................................... 3

環境変数 .............................................................................................. 4

エラーリターンコード ...................................................................... 4

ソースフォーマット .................................................................................. 5

RX アーキテクチャについて ................................................................. 5

アセンブラ命令 .................................................................................. 5

ビッグエンディアンアプリケーションでの

コードおよびデータ .......................................................................... 6

式、オペランド、演算子 ......................................................................... 6

整数定数 .............................................................................................. 6

ASCII 文字定数 .................................................................................. 7

浮動小数点定数 .................................................................................. 7

TRUE および FALSE ......................................................................... 8

シンボル .............................................................................................. 8

ラベル .................................................................................................. 9

ARX-1

iii

Page 4: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

iv

レジスタシンボル .............................................................................. 9

定義済シンボル ................................................................................ 10

絶対式および再配置可能式 ............................................................ 12

式の制限 ............................................................................................ 12

リストファイルのフォーマット .......................................................... 13

ヘッダ ................................................................................................ 13

ボディ ................................................................................................ 13

概要 .................................................................................................... 13

シンボルとクロスリファレンスの表 ............................................ 13

プログラミングのヒント ....................................................................... 14

特殊機能レジスタへのアクセス .................................................... 14

C 形式のプリプロセッサディレクティブを使用する ................ 14

アセンブラオプション .............................................................................. 15

コマンドラインアセンブラオプションの設定 ............................... 15

パラメータの指定 ............................................................................ 16

アセンブラオプションの概要 .............................................................. 17

アセンブラオプションの概要 .............................................................. 18

アセンブラ演算子 ......................................................................................... 33

演算子の優先順位 ..................................................................................... 33

アセンブラ演算子の概要 ....................................................................... 34

括弧演算子 1 .................................................................................... 34

関数演算子 2 .................................................................................... 34

単項演算子 3 .................................................................................... 34

乗算型算術演算子 4 ........................................................................ 34

加算型算術演算子 5 ........................................................................ 35

シフト演算子 6 ................................................................................ 35

比較演算子 7 .................................................................................... 35

等価演算子 8 .................................................................................... 35

論理演算子 9-14 .............................................................................. 35

条件演算子 15 .................................................................................. 36

ARX-1

IAR アセンブラ

リファレンスガイド

Page 5: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

目次

アセンブラ演算子の説明 ....................................................................... 36

アセンブラディレクティブ ................................................................... 49

アセンブラディレクティブの概要 ...................................................... 49

モジュール制御ディレクティブ .......................................................... 53

構文 .................................................................................................... 54

パラメータ ........................................................................................ 54

説明 .................................................................................................... 55

シンボル制御ディレクティブ .............................................................. 57

構文 .................................................................................................... 57

パラメータ ........................................................................................ 57

説明 .................................................................................................... 58

例 ........................................................................................................ 59

セグメント制御ディレクティブ .......................................................... 59

構文 .................................................................................................... 60

パラメータ ........................................................................................ 61

説明 .................................................................................................... 61

例 ........................................................................................................ 64

値割当てディレクティブ ....................................................................... 67

構文 .................................................................................................... 67

パラメータ ........................................................................................ 67

説明 .................................................................................................... 67

例 ........................................................................................................ 68

条件付きアセンブリディレクティブ ................................................. 70

構文 .................................................................................................... 71

パラメータ ........................................................................................ 71

説明 .................................................................................................... 71

例 ........................................................................................................ 72

マクロ処理ディレクティブ ................................................................... 73

構文 .................................................................................................... 73

パラメータ ........................................................................................ 73

説明 .................................................................................................... 74

例 ........................................................................................................ 77

ARX-1

v

Page 6: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

vi

リスト制御ディレクティブ ................................................................... 80

構文 .................................................................................................... 80

説明 .................................................................................................... 81

例 ........................................................................................................ 82

C 形式のプリプロセッサディレクティブ ........................................ 84

構文 .................................................................................................... 85

パラメータ ........................................................................................ 85

説明 .................................................................................................... 85

例 ........................................................................................................ 88

データ定義ディレクティブまたは割当てディレクティブ ......... 89

構文 .................................................................................................... 90

パラメータ ........................................................................................ 90

説明 .................................................................................................... 91

例 ........................................................................................................ 91

アセンブラ制御ディレクティブ .......................................................... 92

構文 .................................................................................................... 92

パラメータ ........................................................................................ 93

説明 .................................................................................................... 93

例 ........................................................................................................ 93

関数ディレクティブ ................................................................................ 94

構文 .................................................................................................... 95

パラメータ ........................................................................................ 95

説明 .................................................................................................... 95

呼出しフレーム情報ディレクティブ ................................................. 96

構文 .................................................................................................... 97

パラメータ ........................................................................................ 98

説明 .................................................................................................... 99

簡易規則 .......................................................................................... 103

CFI 式 .............................................................................................. 105

例 ...................................................................................................... 107

ARX-1

IAR アセンブラ

リファレンスガイド

Page 7: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

目次

プラグマディレクティブ ....................................................................... 111

プラグマディレクティブの一覧 ........................................................ 111

プラグマディレクティブの詳細 ........................................................ 111

診断 ....................................................................................................................... 113

メッセージフォーマット ..................................................................... 113

重要度 ......................................................................................................... 113

重要度の設定 .................................................................................. 114

インターナルエラー ...................................................................... 114

索引 ....................................................................................................................... 115

ARX-1

vii

Page 8: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

viii

ARX-1

IAR アセンブラ

リファレンスガイド

Page 9: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

表1: このガイドの表記規則 ...................................................................................... xiii

2: このガイドで使用されている命名規約 .......................................................... xiv

3: アセンブラの環境変数 ......................................................................................... 4

4: アセンブラのエラーリターンコード ................................................................. 4

5: 整数定数のフォーマット ..................................................................................... 7

6: ASCII 文字定数のフォーマット ......................................................................... 7

7: 浮動小数点定数 ..................................................................................................... 8

8: 定義済レジスタシンボル ..................................................................................... 9

9: 定義済シンボル ................................................................................................... 10

10: シンボルとクロスリファレンスの表 ............................................................. 14

11: アセンブラオプションの概要 ......................................................................... 17

12: 依存関係のリストの生成 (--dependencies) ..................................................... 20

13: 条件付きリストオプション (-l) ....................................................................... 26

14: ファイルへのプリプロセッサ出力の転送 (--preprocess) ............................. 29

15: アセンブラディレクティブの概要 ................................................................. 49

16: モジュール制御ディレクティブ ..................................................................... 53

17: シンボル制御ディレクティブ ......................................................................... 57

18: セグメント制御ディレクティブ ..................................................................... 59

19: 値割当てディレクティブ ................................................................................. 67

20: 条件付きアセンブリディレクティブ ............................................................. 70

21: マクロ処理ディレクティブ ............................................................................. 73

22: リスト制御ディレクティブ ............................................................................. 80

23: C 形式のプリプロセッサディレクティブ ..................................................... 84

24: データ定義ディレクティブまたは割当てディレクティブ ......................... 89

25: アセンブラ制御ディレクティブ ..................................................................... 92

26: 呼出しフレーム情報ディレクティブ ............................................................. 96

27: CFI 式の単項演算子 ........................................................................................ 105

28: CFI 式の 2 項演算子 ........................................................................................ 106

29: CFI 式の 3 項演算子 ........................................................................................ 107

30: バックトレース行と列付きのサンプルコード ........................................... 108

31: プラグマディレクティブの一覧 ................................................................... 111

ARX-1

ix

Page 10: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

x

ARX-1

IAR アセンブラ

リファレンスガイド

Page 11: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

はじめにRX 用 IAR アセンブラリファレンスガイドへようこそ。 このガイドは、

お客様の要件に応じてアプリケーションを開発するために RX 用 IARアセンブラをご利用頂くのに役立つ、詳細なリファレンス情報を提供

します。

本ガイドの対象者本ガイドは、アセンブラ言語を使用して RX マイクロコントローラ用アプリケーションの一部または全部を開発する予定があり、アセンブラの使用方法に関する詳細情報を必要とするユーザを対象としています。 また、以下について十分な知識があるユーザを対象としています。

● RX マイクロコントローラのアーキテクチャおよび命令セット。 RX マイクロコントローラの情報については、ルネサスの提供するマニュアルを参照してください

● アセンブラ言語でのプログラミングに関する基礎知識

● 組込みシステム用アプリケーションの開発

● ホストコンピュータのオペレーティングシステム

本ガイドの使用方法アセンブラを初めて使用する場合、本書の「RX 用 IAR アセンブラの概要」をお読みください。

中級者や上級者の場合、概要の後に続くリファレンス情報を中心にお読みいただけます。

IAR システムズのツールキットを初めて使用する場合は、まず『IAR Embedded Workbench® IDE ユーザガイド』の前半を確認することをお勧めします。 これらの章には、製品についての概要や、初心者向けのチュートリアルが用意されています。

ARX-1

xi

Page 12: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

xii

このガイドの概要

このガイドの概要本ガイドの構成および各章の概要を以下に示します。

● 「RX 用 IAR アセンブラの概要」では、プログラミング情報を提供します。 また、ソースコードのフォーマットや、アセンブラリストのフォーマットについても説明しています。

● 「アセンブラオプション」では、まずコマンドラインでアセンブラオプションを設定する方法と、環境変数の使用方法について説明します。 続いて、アセンブラオプションについてアルファベット順に簡単に説明し、各オプションの詳細なリファレンス情報を提供します。

● 「アセンブラ演算子」では、アセンブラ演算子の概要を優先順に説明し、各演算子の詳細なリファレンス情報を提供します。

● 「アセンブラディレクティブ」では、アセンブラディレクティブについてアルファベット順に簡単に説明し、各ディレクティブの詳細なリファレンス情報を、機能別にグループ分けして提供します。

● 「プラグマディレクティブ」では、アセンブラで使用できるプラグマディレクティブについて説明します。

● 「診断」では、診断メッセージのフォーマットと重要度について説明します。

その他のドキュメントIAR システムズの RX マイクロコントローラ用開発ツールについては、それぞれのガイドとオンラインヘルプファイルで詳しく説明しています。 知りたい情報に対応するドキュメントを以下に示します。

● IAR C-SPY® デバッガでの IAR Embedded Workbench® IDE の使用については、『IAR Embedded Workbench® IDE ユーザガイド』を参照してください。

● RXIARC/C++ アセンブラを使用したプログラミングについては、『RX IAR C/C++ コンパイラ リファレンスガイド』を参照してください。

● IAR XLINK リンカ、IAR XAR ライブラリビルダ、IAR XLIB ライブラリアンの使用方法については、『IAR リンカおよびライブラリツールリファレンスガイド』を参照してください。

● IAR DLIB ライブラリの使用方法については、オンラインヘルプシステムを参照してください。

これらのガイドはすべて、ハイパーテキスト PDF または HTML フォーマットでインストール用メディアに収録されています。 印刷物として提供されるガイドもあります。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 13: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

はじめに

表記規則 本ガイドでプログラミング言語 C と記述されている場合、特に記述がない限りC++ も含まれます。

製品インストール先のディレクトリ ( 例 : rx\doc) の記述がある場合、その場所までのフルパス ( 例 : c:\Program Files\IAR Systems\Embedded Workbench 5.n\rx\doc) を意味します。

表記規則

このガイドでは、次の表記規則を使用します。

スタイル 用途

コンピュータ • ソースコードの例、ファイルパス。

• コマンドライン上のテキスト。

• 2 進数、16 進数、8 進数。

パラメータ パラメータとして使用される実際の値を表すプレースホルダ。た

とえば、filename.hの場合、filenameはファイルの名前を表

します。

[オプション ] コマンドのオプション部分。

a|b|c コマンド内の選択可能な部分。

{a|b|c} コマンドの必須部分に選択肢があることを示します。

太字 画面に表示されるメニュー名、メニューコマンド、ボタン、およ

びダイアログボックス。

斜体 • 本ガイドや他のガイドへのクロスリファレンスを示します。

• 強調。

… 3 点リーダは、その前の項目を任意の回数繰り返せることを示し

ます。

IAR Embedded Workbench IDE 固有の内容を示します。

コマンドラインインタフェース固有の内容を示します。

開発やプログラミングについてのヒントを示します。

警告を示します。

表 1: このガイドの表記規則

ARX-1

xiii

Page 14: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

xiv

表記規則

命名規約

以下の命名規約は、このガイドに記述されている IAR システムズの製品およびツールで使用されています。

ブランド名 一般名称

RX 用 IAR Embedded Workbench® IAR Embedded Workbench®

RX 用 IAR Embedded Workbench® IDE IDE

RX 用 IAR C-SPY® デバッガ C-SPY、デバッガ

IAR C-SPY® シミュレータ シミュレータ

RX 用 IAR C/C++ コンパイラ コンパイラ

RX 用 IAR アセンブラ アセンブラ

IAR XLINK リンカ XLINK、リンカ

IAR XAR ライブラリビルダ ライブラリビルダ

IAR XLIB ライブラリアン ライブラリアン

IAR DLIB ライブラリ DLIB ライブラリ

表 2: このガイドで使用されている命名規約

ARX-1

IAR アセンブラ

リファレンスガイド

Page 15: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要この章には、以下のセクションがあります。

● アセンブラプログラミングの概要

● モジュール方式のプログラミング

● 外部インタフェースの詳細

● ソースフォーマット

● アセンブラ命令

● 式、オペランド、演算子

● リストファイルのフォーマット

● プログラミングのヒント

アセンブラプログラミングの概要アプリケーション全体をアセンブラ言語で記述するのではない場合でも、正確なタイミングや特殊な命令シーケンスを要求する RX マイクロコントローラのメカニズムを使用する場合など、コードの一部をアセンブラで記述する必要が生じることがあります。

効率的なアセンブラアプリケーションを記述するためには、RX マイクロコントローラのアーキテクチャと命令セットを理解しておく必要があります。 命令ニーモニックの構文については、ルネサスハードウェアのマニュアルを参照してください。

イントロダクション

アセンブラアプリケーションの開発を始めるにあたって、以下の情報が参考になります。

● チュートリアルを一通り行う。特に、『IAR Embedded Workbench® IDE ユーザガイド』に付属している C 言語とアセンブラモジュールの結合についてのチュートリアルは役に立ちます。

● 『RX IAR C/C++ コンパイラ リファレンスガイド』で、アセンブラ言語インタフェースについての説明を参照する。C 言語とアセンブラモジュールを結合する場合に役に立ちます。

● IAR Embedded Workbench IDE では、アセンブラプロジェクトのテンプレートをベースに新しいプロジェクトを作成できます。

ARX-1

1

Page 16: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

2

モジュール方式のプログラミング

モジュール方式のプログラミング優れたソフトウェア設計においてモジュール方式プログラミングが大きな役割を果たすということは広く知られています。 単体構造にするのではなく、複数の小型モジュールを集めてコードを構成すると、アプリケーションコードを論理的な構造に体系化できます。これによりコードがわかりやすくなるうえ、次のような効果があります。

● プログラム開発の効率化

● モジュールの再利用

● 保守の容易さ

IAR の開発ツールでは、ソフトウェアをモジュール構造にするためのさまざまな機能をご用意しています。

一般的に、アセンブラコードはアセンブラソースファイルに記述します。 それぞれのソースファイルには、モジュール制御ディレクティブを使用して 1 つ以上のアセンブラモジュールを定義します。 それぞれのモジュールは名称と型を持ちます。型は、PROGRAMまたは LIBRARY となります。 リンカには常にPROGRAMモジュールが含まれています。一方、LIBRARYモジュールは、他のモジュールが当該モジュール内のパブリックシンボルを参照する場合、リンク先のコードのみに含まれています。 各モジュールを複数のサブルーチンに分割できます。

セグメントとは、メモリ内の物理位置にマッピングされるデータやコードを含む論理エンティティです。 セグメントにコードとデータを配置するには、セグメント制御ディレクティブを使用します。 セグメントは、絶対セグメントと再配置可能セグメントのどちらにもできます。 絶対セグメントはメモリ内で常に固定アドレスを持ちますが、再配置可能セグメントのアドレスはリンク時に解決されます。 セグメントにより、コードやデータをメモリ内でどのように配置するか制御できます。 各セグメントは、複数のセグメントパートから構成されます。 セグメントパートとはリンク可能な 小単位であり、リンカではこれを使用して、参照するユニットのみをインクルードすることができます。

大規模なプロジェクトに取り組んでいると、さまざまなアプリケーションで使用される複数の便利なルーチンがすぐに蓄積されます。 小さなオブジェクトファイルが大量に蓄積されるのを回避するためには、このようなルーチンが含まれるモジュールをライブラリオブジェクトに集めます。 IAR Embedded Workbench IDE では、1 つのライブラリに多くのオブジェクトファイルを集めるためにライブラリプロジェクトを設定できます。 例については、『IAR Embedded Workbench® IDE ユーザガイド』のチュートリアルを参照してください。

まとめると、ソフトウェアの設計にはモジュール方式のプログラミングが役に立ちます。また、モジュール構造は以下の方法で作成できます。

● モジュールディレクティブを使用して、多くの小型モジュールを ( ソースファイルごとに 1 つ、またはファイルごとに複数個 ) 作成する。

● 各モジュールで、アセンブラソースコードを小さなサブルーチンに分割する (C レベルでの関数に相当 )。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 17: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要

● アセンブラソースコードを segment に分割し、 終的にメモリ内でコードやデータをどのように配置するか正確に制御できるようにする。

● ルーチンをライブラリに集める。つまり、オブジェクトファイルの数を減らし、モジュールが条件付きでリンクされるようにする。

外部インタフェースの詳細このセクションでは、アセンブラが環境とどのようにやりとりするかについて説明します。

アセンブラは、IAR Embedded Workbench IDE またはコマンドラインから使用できます。 IAR Embedded Workbench IDE からのアセンブラの使用については、『IAR Embedded Workbench® IDE ユーザガイド』を参照してください。

アセンブラ呼出し構文

アセンブラの呼出し構文は次のとおりです。

arx [options][sourcefile][options]

たとえば、prog.s54というソースファイルをアセンブルする場合は、以下のコマンドを使用して、デバッグ情報を含むオブジェクトファイルを生成します。

arx prog --debug

デフォルトで、RX 用 IAR アセンブラは、ソースファイルのファイル名拡張子 s54、asm、msaを認識します。 アセンブラ出力のファイル名拡張子はデフォルトで r54です。

通常、コマンドラインでのオプションの順序とソースファイル名の前後のどちらに入力するかは、重要ではありません。 ただし、例外が 1 つあります。 -Iオプションを使用する場合には、ディレクトリの検索はコマンドラインに指定した順序で行われます。

コマンドラインから引数なしでアセンブラを実行する場合、アセンブラのバージョン番号と利用可能なすべてのオプション ( 簡単な説明を含む ) がstdoutに転送され、画面に表示されます。

オプションの受渡し

オプションをアセンブラに受け渡すには、次の 3 つの方法があります。

● コマンドラインから直接渡す方法

コマンドラインでは、arxコマンドの後にオプションを指定します。「アセンブラ呼出し構文」(3 ページ ) を参照してください。

● 環境変数経由で渡す方法

アセンブラは、自動的に環境変数の値を各コマンドラインの後に付加します。「環境変数」(4 ページ ) を参照してください。

ARX-1

3

Page 18: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

4

外部インタフェースの詳細

● -fオプションを使用してテキストファイル経由で渡す方法 (「-f」(25 ページ )を参照 )。

オプションの構文、オプションの概要、各オプションの詳細な説明に関する一般的なガイドラインについては、アセンブラオプションを参照してください。

環境変数

アセンブラオプションは、ASMRX環境変数でも指定できます。 アセンブラはこの変数の値を各コマンドラインに自動的に付加することにより、各アセンブリで必要なオプションを指定するための便利な方法を提供します。

RX 用 IAR アセンブラでは、以下の環境変数を使用できます。

たとえば、次の環境変数を設定すると、常に temp.lstという名称のリストファイルが生成されます。

set ASMRX=-l temp.lst

IAR XLINK リンカおよび IAR XLIB ライブラリアンで使用される環境変数については、『IAR リンカおよびライブラリツールリファレンスガイド』を参照してください。

エラーリターンコード

RX 用 IAR アセンブラをバッチファイル内から使用する場合、次に行うステップを決定するために、アセンブリが成功したかどうかを判断しなければならない場合があります。 このため、アセンブラはこれらのエラーリターンコードを返します。

環境変数 説明

ASMRX コマンドラインのオプションを指定します。set ASMRX=-L -ws

ARX_INC インフルードファイルを検索するディレクトリを指定し

ます。例:set ARX_INC=c:\myinc\

表 3: アセンブラの環境変数

リターンコード 説明

0 アセンブリは成功しましたが、警告が発生している場合があります。

1 オプション --warnings_affect_exit_codeが使用された場合、

警告が発生しています。

2 致命的ではないエラーまたは致命的なアセンブリエラーが発生して

おり、アセンブラが異常終了しました。

3 クラッシュの原因となるエラーが発生しました。

表 4: アセンブラのエラーリターンコード

ARX-1

IAR アセンブラ

リファレンスガイド

Page 19: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要

ソースフォーマットアセンブラソース行のフォーマットは次のとおりです。

[label [:]] [operation] [operands] [; comment]

ここで、コンポーネントは次のとおりです。

コンポーネントは空白またはタブで区切ります。

ソース行は 1 行あたり 2047 文字以内にします。

タブ文字 ASCII 09Hは、一般的な慣行に従って、列 8、16、24 などに拡張されています。 これにより、リストファイルでのソースコード出力およびデバッグ情報に影響があります。 タブはエディタによって設定が異なる可能性があるため、ソースファイルでタブを使用しないでください。

RX アーキテクチャについて

アセンブラ命令

RX 用 IAR アセンブラでは、チップメーカのハードウェアマニュアルに記述されているアセンブラ命令の構文がサポートされています。 これはアライメントに関する RX アーキテクチャの要件に適合しています。

label ラベルの定義。アドレスを表現するシンボルです。 ラベル

の開始位置を 初の列にする場合 ( つまり、行の左端から

開始する場合 )、:( コロン ) はオプションです。

operation アセンブラ命令またはディレクティブ。 開始位置は、 初

の列にしないでください。左側に空白を含める必要があり

ます。

operands アセンブラ命令またはディレクティブには、オペランドを

含めないか、1 つまたは複数のオペランドを使用すること

ができます。 オペランドはコンマで区切ります。 オペランド

は次の可能性があります。

• 数値またはアドレスを示す定数

• 数値またはアドレスを示すシンボル名

( この場合、文字もラベルと呼びます )• 浮動小数点定数

• レジスタ

• 定義済シンボル

• プログラムロケーションカウンタ (PLC)• 式

comment コメント。前に ;( セミコロン ) を付けます。

C または C++ のコメントも許可されます。

ARX-1

5

Page 20: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

6

式、オペランド、演算子

ビッグエンディアンアプリケーションでのコードおよびデータ

ビッグエンディアンアプリケーションをアセンブルしている場合、リンカがコードとデータを区別できる必要があります。 これには、アセンブリ命令CODEと DATAを使用します。 データとして読み取られるすべてのオブジェクトの前には DATAディレクティブを付け、その他の行の前には CODEディレクティブを付ける必要があります。

アセンブラにデフォルトモードはありません。また、これらのディレクティブを省略してもアセンブリエラーメッセージは発生しませんが、リンクが成功することはありません。

式、オペランド、演算子式は、式オペランドと演算子から構成されています。

アセンブラでは、算術演算や論理演算などさまざまな式を使用できます。 すべての演算子は、32 ビットの 2 の補数整数を使用します。 コードの生成のために値が使用される場合、範囲チェックが行われます。

式は左から右へと評価されます。ただし、演算子の優先度によってこの順番が上書きされた場合を除きます。「アセンブラ演算子」(33 ページ ) も参照してください。

式で有効なオペランドは以下のとおりです。

● データまたはアドレスの定数。浮動小数点定数を除きます。

● シンボル名。データとアドレスのどちらを表すこともできます。アドレスの場合、ラベルとも呼ばれます。

● プログラムロケーションカウンタ (PLC)、$( ドル )。

オペランドについては、後ほど詳しく説明します。

整数定数

IAR システムのすべてのアセンブラでは 32 ビットの 2 の補数内部演算を使用しているため、整数の ( 符号付き ) 範囲は -2147483648 ~ 2147483647 となります。

定数は一連の数字で記述し、オプションで先頭に -( マイナス ) 符号を付けて負の数を示します。

コンマと小数点は許可されません。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 21: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要

以下のような数値表現がサポートされます。

注記 : プレフィックスとサフィックスはいずれも、大文字または小文字で記述できます。

ASCII 文字定数

ASCII 定数は、任意の数の文字を半角または全角の引用符で囲みます。 ASCII文字列には、出力可能な文字と空白のみを使用できます。 引用符の文字自体にアクセスする場合、引用符を 2 つ並べて使用する必要があります。

浮動小数点定数

RX 用 IAR アセンブラは、浮動小数点値を定数として扱い、IEEE の単精度( 符号付き 32 ビット ) 浮動小数点フォーマット、倍精度フォーマット ( 符号付き 64 ビット )、、または小数フォーマットに変換します。

浮動小数点値は次のフォーマットで記述できます。

[+|-][digits].[digits][{E|e}[+|-]digits]

整数のタイプ 例

2 進数 1010b

8 進数 1234q

10 進数 1234, -1

16 進数 0FFFFh、0xFFFF

表 5: 整数定数のフォーマット

フォーマット 値

'ABCD' ABCD(4 文字 )

"ABCD" ABCD'\0'(5 文字、 後は ASCII の null)

'A''B' A'B

'A''' A'

''''(4 つの引用符 ) '

''(2 つの引用符 ) 空白文字列 ( 値なし )

""(2 つの二重引用符 ) 空白文字列 (1 つの ASCII null 文字 )

\' ' - 文字列内で引用符を使用する場合 (「I\'d love to」など )

\\ \ - 文字列内で \ を使用する場合

\" " - 文字列内で二重引用符を使用する場合

表 6: ASCII 文字定数のフォーマット

ARX-1

7

Page 22: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

8

式、オペランド、演算子

次の表は、有効な例の一部を示します。

空白とタブは、浮動小数点定数では使用できません。

注記 : 浮動小数点定数を式で使用しても、有用な結果とはなりません。

DQ15のように、小数フォーマットを使用すると、表示可能な範囲は -1.0 <= x < 1.0となります。 その範囲外の値はすべて、表現できる 大値または 小値が設定されます。

小数データの単語の長さが nである場合、小数値は x * 2^(n-1)という 2 の補数値として表現されます。

TRUE および FALSE

式では、ゼロ値は FALSE と見なされ、ゼロ以外の値は TRUE と見なされます。

条件付きの式では、FALSE の場合は値 0、TRUE の場合は 1 が返されます。

シンボル

ユーザ定義シンボルの長さは 大 255 文字であり、全ての文字が有効です。 シンボルの後に続く演算の種類に応じて、シンボルはデータシンボルまたはアドレスシンボルとなります ( アドレスシンボルはラベルと呼びます )。 命令の前のシンボルはラベルであり、EQUディレクティブなどの前のシンボルはデータシンボルです。 次のシンボルがあります。

● 絶対値 — アセンブル時に既知となります。

● 再配置可能 — リンク時に解決されます。

シンボルの先頭は、文字 a ~ z または A ~ Z、?( 疑問符 )、または _ ( 下線 )にする必要があります。 シンボルには数字 0 ~ 9 と $( ドル ) を使用できます。

命令、レジスタ、演算子、ディレクティブなどの組み込みシンボルでは、大文字 / 小文字は区別されません。 ユーザ定義のシンボルの場合、デフォルトでは大文字 / 小文字が区別されますが、ユーザシンボルの大文字 / 小文字を区別する (--case_insensitive) アセンブラオプションを使用してオン / オフを切り替えることができます。 詳細については、「--case_insensitive」(18 ページ )を参照してください。

モジュール間でシンボルをどのように共有するか制御するには、シンボル制御ディレクティブを使用します。 たとえば、1 つ以上のシンボルを他のモジュールで使用できるようにするには、PUBLICディレクティブを使用しま

フォーマット 値

10.23 1.023 x 101

1.23456E-24 1.23456 x 10-24

1.0E3 1.0 x 103

表 7: 浮動小数点定数

ARX-1

IAR アセンブラ

リファレンスガイド

Page 23: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要

す。 タイプが設定されていない外部シンボルをインポートするには、EXTERNディレクティブを使用します。

シンボルとラベルはバイトアドレスです。 その他の情報については、「ルックアップテーブルの生成」(91 ページ ) を参照してください。

ラベル

メモリロケーションに使用されるシンボルをラベルと呼びます。

プログラムロケーションカウンタ (PLC)

アセンブラは現在の命令の開始アドレスをトレースします。 これを、プログラムロケーションカウンタと呼びます。

プログラムロケーションカウンタをアセンブラのソースコードで参照する必要がある場合、$( ドル ) 符号を使用します。 次に例を示します。

BRA $ ; Loop forever

レジスタシンボル

以下の表に、既存の定義済レジスタシンボルを示します。

レジスタペアを指定するには、次の例のようにレジスタを連結します。

R4R3

レジスタペアに指定できるのは、連続したレジスタのみです。 上位の偶数レジスタを先頭に、下位の奇数レジスタを 後にします。

名称 サイズ 説明

R1~ R15 32 ビット 汎用レジスタ

SP/R0 32 ビット レジスタ R0、現在有効な SP

PSW 32 ビット ステータスレジスタ

PC 32 ビット プログラムカウンタ

USP 32 ビット ユーザモードのスタックポインタ

ISP 32 ビット スーパーバイザモードのスタックポインタ

FPSW 32 ビット 浮動小数点ステータスレジスタ

BPSW 32 ビット バックアップステータスレジスタ ( 高速割込み )

BPC 32 ビット バックアッププログラムカウンタ ( 高速割込み )

FINTV 32 ビット 高速割込みベクタレジスタ

INTB 32 ビット INTVECマスカブル割込みベクタベースレジスタ

表 8: 定義済レジスタシンボル

ARX-1

9

Page 24: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

10

式、オペランド、演算子

定義済シンボル

RX 用 IAR アセンブラには、アセンブラソースファイルで使用するシンボルのセットが定義されています。 シンボルは現在のアセンブリについての情報を提供するため、プリプロセッサディレクティブでテストしたり、アセンブルされたコードに含めることができます。 アセンブラから返された文字列は二重引用符に囲まれています。

以下の定義済シンボルがあります。

シンボル 値

__ARX__ コードが RX 用 IAR アセンブラでアセンブルされている

場合は 1に設定される整数です。

__BIG_ENDIAN__ --endianオプションの設定を示す整数です。 --endian=bと指定されている場合、このシンボルの値

は 1(TRUE) に定義されています。 --endian=lと指定さ

れている場合、このシンボルの値は 0(FALSE) に定義さ

れています。

__BUILD_NUMBER__ 現在使用中のアセンブラのビルド番号を示す一意の整数

です。 ビルド番号は、必ずしも後でリリースされたアセ

ンブラの方が遅い番号になるとは限りません。

__CODE_MODEL__ 使用中のコードモデルを示す整数です。 シンボルには

--code_modelオプションが反映され、__FAR__また

は __HUGE__に定義されます。 これらのシンボル名は、

__CODE_MODEL__シンボルの評価に使用できます。

__DATA_MODEL__ 使用中のデータモデルを示す整数です。 シンボルには

--data_modelオプションが反映され、__NEAR__、__FAR__、または __HUGE__に定義できます。

__DATE__ dd/Mmm/yyyy フォーマットで示す現在の日付 ( 文字列 )。

__DOUBLE__ オプション --doubleの設定に応じて、32または 64です。

__FILE__ 現在のソースファイルの名前 ( 文字列 )。

__IAR_SYSTEMS_ASM__ IAR アセンブラの識別子 ( 数字 )。現行値は 7 です。 将来

のバージョンでは、番号が大きくなる可能性がありま

す。 このシンボルを #ifdefで評価し、コードが IAR シ

ステムズのアセンブラでアセンブルされたものかどうか

を検出できます。

__LINE__ 現在のソースの行番号 ( 数字 )。

__LITTLE_ENDIAN__ --endianオプションの設定を示す整数です。 --endian=lと指定されている場合、このシンボルの値

は 1(TRUE) に定義されています。 --endian=bと指定さ

れている場合、このシンボルの値は 0(FALSE) に定義さ

れています。

表 9: 定義済シンボル

ARX-1

IAR アセンブラ

リファレンスガイド

Page 25: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要

シンボル値をコードに含める

複数のデータ定義ディレクティブで、コードにシンボル値を含めることができます。 これらのディレクティブは、値を定義するか、メモリを予約します。 コードにシンボル値を含めるには、適切なデータ定義ディレクティブでシンボルを使用します。

たとえば、プログラムに表示されるようにアセンブリ時間を文字列として含めるには、次のように指定します。

name timeOfAssembly extern printStr rseg CODE:CODE data ; select data mode ; (required for big-endian)

time dc8 __TIME__ ; String representing the ; time of assembly. code ; select code mode ; (required for big-endian) mov.l #time,R1 ; Load address of time ; string in R1. bsr printStr ; Call string output routine. end

条件付きアセンブリ用のシンボルをテストする

アセンブリ時にシンボルをテストするには、いずれかの条件付きアセンブリディレクティブを使用します。 これらのディレクティブを使用すると、アセンブリ時にアセンブリプロセスを制御できます。

たとえば、古いアセンブラバージョンと新しいアセンブラバージョンのどちらを使用しているかに応じて別々のコードをアセンブルするには、次のようにします。

#if (__VER__ > 300) ; New assembler version;;#else ; Old assembler version;

__SUBVERSION__ バージョン番号のバージョン文字を ASCII 文字として示

す整数です (4.21C の「C」など )。

__TIME__ hh:mm:ssフォーマットで示す現在の時刻 ( 文字列 )。

__VER__ 整数フォーマットのバージョン番号です。たとえば、

バージョン 4.17 は 417 として返されます ( 数字 )。

シンボル 値

表 9: 定義済シンボル ( 続き )

ARX-1

11

Page 26: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

12

式、オペランド、演算子

;#endif

詳細については、「条件付きアセンブリディレクティブ」(70 ページ ) を参照してください。

絶対式および再配置可能式

式を構成しているオペランドに応じて、式は絶対または再配置可能のいずれかになります。 絶対式とは、絶対シンボルまたは相殺し合う再配置可能シンボルのみを含む式のことです。

再配置可能 segment にシンボルが含まれている式は、segment のロケーションに依存しているため、アセンブリ時に解決することはできません。 これらは再配置可能式と呼ばれます。

このような式は、リンク時に IAR XLINK リンカによって評価され、解決されます。 式には制限はありません。任意のセグメントのシンボルや任意のシンボルの組み合わせに対して、任意の演算子を使用できます。

たとえば、プログラムで DATAおよび CODEsegment を以下のように定義できます。

name simpleExpressions rseg DATA:DATA extern size data ; select data mode ; (required for big-endian)first dc8 5 ; An absolute expression.

dc8 first ; Examples of some legal dc8 first + 1 ; relocatable expressions. dc8 first + 8 * size end

注記 : アセンブリ時に、範囲チェックは行われません。 範囲チェックはリンク時に行われ、値が長すぎる場合にはリンカエラーが発生します。

式の制限

式は、一部のアセンブラディレクティブに適用される制限に従って分類できます。 一例としては、IFなどの条件文で使用される式です。このような条件文では、アセンブリ時に式を評価する必要があるため、外部シンボルを含めることはできません。

次の式制限は、適用される各ディレクトリの説明で参照されています。

前方参照禁止

式で参照されるすべてのシンボルは既知である必要があり、前方参照は許可されません。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 27: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

RX 用 IAR アセンブラの概要

外部参照禁止

式では外部参照は許可されません。

絶対

式は絶対値に対して評価する必要があります。再配置可能値 (segment オフセット ) は許可されません。

固定

式は固定である必要があります。つまり、可変サイズの命令に依存させることはできません。 可変サイズの命令とは、オペランドの数値に応じてサイズが変動する可能性がある命令のことです。

リストファイルのフォーマットアセンブラリストファイルのフォーマットは次のとおりです。

ヘッダ

ヘッダセクションには、製品のバージョン情報、ファイルの作成日時、使用されたオプションが含まれています。

ボディ

リストのボディは、以下の情報フィールドで構成されています。

● ソースファイル内の行番号。 マクロで生成された行がリストされている場合、ソース行番号フィールドには .( ピリオド ) が含まれています。

● アドレスフィールドは、メモリ内のロケーションを示します。これはsegment の種類に応じて絶対にも相対にもできます。 表記法は 16 進法です。

● データフィールドは、ソース行によって生成されたデータを示します。 表記法は 16 進法です。 解決されなかった値は .....( ピリオド ) として表現されます。ここで、2 つのピリオドが 1 バイトを示します。 これらの未解決値はリンクプロセス中に解決されます。

● アセンブラソース行。

概要

ファイルのフッタには、生成されたエラーと警告の概要が記述されています。

シンボルとクロスリファレンスの表

[ クロスリファレンスを含む ] オプションを指定する場合、または LSTXRF+ディレクティブがソースファイルに含まれている場合、シンボルとクロスリファレンスの表が生成されます。

ARX-1

13

Page 28: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

14

プログラミングのヒント

表の各シンボルに対して、次の情報が記述されています。

プログラミングのヒントここでは、RX 用 IAR アセンブラのために効率的なコードを記述する方法についてのヒントを示します。 アセンブラおよび C/C++ ソースファイルの両方が含まれるプロジェクトについての情報は、『RX IAR C/C++ コンパイラ リファレンスガイド』を参照してください。

特殊機能レジスタへのアクセス

IAR システムの製品パッケージには、RX デバイス用の専用ヘッダファイルがいくつか付属しています (\rx\incディクレトリ )。 これらのヘッダファイルには、プロセッサ固有の特殊機能レジスタ (SFR) と割込みベクタ番号が定義されています。

ヘッダファイルは RX 用 IAR C/C++ コンパイラでも、他の RX デバイスの新規ヘッダファイルを作成するためのテンプレートとして使用します。

ヘッダファイルにアセンブラ固有の追加が必要である場合、ファイルのアセンブラ固有の部分にこれらを簡単に追加できます。

#ifdef __IAR_SYSTEMS_ASM__ ; Add your assembler-specific defines here.#endif

C 形式のプリプロセッサディレクティブを使用する

C 形式のプリプロセッサディレクティブは、他のアセンブラディレクティブの前に処理されます。 そのため、マクロでプロプロセッサディレクティブを使用しないでください。また、これらをアセンブラ形式のコメントと混在させないでください。 コメントの詳細については、「アセンブラ制御ディレクティブ」(92 ページ ) を参照してください。

情報 説明

シンボル シンボルのユーザ定義名。

モード ABS( 絶対 ) または REL( 相対 )。

セグメント このシンボルが相対的に定義されている segment の名前。

値 / オフセット 現在のモジュール内のシンボルの値 ( アドレス )。現在のセグメン

トパートの先頭に対して相対的です。

表 10: シンボルとクロスリファレンスの表

ARX-1

IAR アセンブラ

リファレンスガイド

Page 29: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプションこの章では、まずコマンドラインでオプションを設定する方法と、ア

センブラオプションの概要についてアルファベット順に説明します。 続いて、各アセンブラオプションに関する詳細なリファレンス情報を

提供します。

『IAR Embedded Workbench® IDE ユーザガイド』では、IAR Embedded Workbench® IDE でのアセンブラオプションの設定方法を説明し、使

用可能なオプションについてのリファレンス情報を提供しています。

コマンドラインアセンブラオプションの設定コマンドラインでアセンブラオプションを設定するには、コマンドラインを使用して arxコマンドの後で、ソースファイル名の前または後にこれらのオプションを指定します。 たとえば、prog.s54 というソースファイルをアセンブルする場合は、以下のコマンドを使用して、デバッグ情報を含むオブジェクトファイルを生成します。

arx prog --debug

一部のオプションではファイル名を指定できます。オプション文字の後に、スペースで区切って指定してください。 たとえば、prog.lst というファイルのリストを生成するには、以下のように入力します。

arx prog -l prog.lst

ほかに、ファイル名以外の文字列を指定できるオプションもあります。 文字列はオプション文字の後に指定しますが、スペースは不要です。 たとえば、以下のようにシンボルを定義します。

arx prog -DDEBUG=1

通常、コマンドラインでのオプションの順序とソースファイル名の前後のどちらに入力するかは、重要ではありません。 ただし、例外が 1 つあります。 -Iオプションを使用する場合には、ディレクトリの検索はコマンドラインに指定した順序で行われます。

コマンドラインオプションの名前は、省略形または完全形 ( あるいはその両方 ) にできます。

● オプション名の省略形は 1 文字で構成され、パラメータは付けても付けなくても構いません。 指定するには、-rのようにダッシュを付けて入力します。

ARX-1

15

Page 30: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

16

コマンドラインアセンブラオプションの設定

● オプション名の完全形は、複数の語をアンダースコアで連結した形で構成され、パラメータが付くこともあります。 このフォーマットで指定する場合は、--debugのようにダッシュを 2 個付けて入力します。

パラメータの指定

名前が省略形であるオプションにパラメータが必要である場合、オプションの直後に指定することも、次のコマンドライン引数として指定することもできます。

たとえば、インクルードファイルのパス \usr\includeを、次の 2 種類の方法で指定できます。

-I\usr\include

または

-I \usr\include

注 : ディレクトリの区切り文字として \ ではなく /を使用できます。 後のディレクトリ名の後にバックスラッシュを追加できますが、必須ではありません。

さらに、出力ファイルオプションにディレクトリ名をパラメータとして指定できます。 出力ファイルにはデフォルト名と拡張子が付きます。

名前が完全形であるオプションにパラメータが必要である場合、次のように、等号 (=) の直後に指定することも、次のコマンドライン引数として指定することもできます。

--diag_suppress=Pe0001

または

--diag_suppress Pe0001

複数の値が許容されるオプションは、繰り返し使用することも、値をコンマで区切って ( スペースなしで ) 指定することもできます。例えば、次のように指定します。

--diag_warning=Be0001,Be0002

現在のディレクトリは、以下のように、ピリオド (.) で指定します。

arx prog -l .

-( ダッシュ 1 つ ) で指定されたファイルは、標準入力または出力のどちらか適切な方です。

注 : オプションでパラメータを指定できる場合、パラメータの先頭をダッシュ (-) にしてその後に別の文字を続けることはできません。 代わりに、プレフィックスとしてダッシュを 2 つ並べる (--) ことができます。 以下の例では、標準出力にリストが生成されます。

arx prog -l ---

ARX-1

IAR アセンブラ

リファレンスガイド

Page 31: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

アセンブラオプションの概要以下の表に、コマンドラインで使用できるアセンブラオプションを示します。

コマンドラインオプション 説明

--case_insensitive 大文字 / 小文字が区別されないユーザシンボル

です

--code_model シンボル __CODE_MODEL__を定義します

-D プリプロセッサシンボルを定義します

--data_model シンボル __DATA_MODEL__を定義します

--debug デバッグ情報を生成します

--dependencies ファイル依存関係をリスト化します

--diag_error これらの診断をエラーとして処理します

--diag_remark これらの診断をリマークとして処理します

--diag_suppress 診断を無効化します

--diag_warning 診断を警告として処理します

--diagnostics_tables すべての診断メッセージをリスト化します

--dir_first 初の列でディレクティブを許可します

--double シンボル __DOUBLE__を定義します

--enable_multibytes マルチバイト文字サポートを有効化します

--endian シンボル __BIG_ENDIAN__および

__LITTLE_ENDIAN__を定義します

--error_limit アセンブラを停止させるエラー数を指定します

-f コマンドラインを拡張します

--header_context 参照されるすべてのソースファイルをリストし

ます

-I ヘッダファイルの検索パスを追加します

-l リストファイルを生成します

-M マクロの引用符

--mnem_first 初の列でニーモニックを許可します

--no_path_in_file_macros シンボル __FILE__および __BASE_FILE__

のリターン値からパスを削除します

--no_warnings すべての警告を無効化します

--no_wrap_diagnostics 診断メッセージのラッピングを無効化します

-o オブジェクトファイル名を設定します

表 11: アセンブラオプションの概要

ARX-1

17

Page 32: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

18

アセンブラオプションの概要

アセンブラオプションの概要以下のセクションでは、各アセンブラオプションに関する詳細なリファレンス情報を提供します。

[ 追加オプション ] ページを使用して特定のコマンドラインオプションを指定する場合、オプションの競合、オプションの重複、不適切なオプションの使用といった整合性問題のインスタントチェックは実行されません。

--case_insensitive --case_insensitive

このオプションは、ユーザシンボルで大文字 / 小文字を区別する場合に使用します。

デフォルトでは、大文字と小文字が区別されます。 つまり、LABEL と labelは異なるシンボルを示します。 --case_insensitiveを使用して、大文字と小文字の区別を無効にすることができます。この場合、LABELと labelは同一のシンボルを示します。

また、アセンブラディレクティブ CASEONと CASEOFFを使用してユーザ定義シンボルの大文字と小文字の区別を制御することもできます。 詳細については、「アセンブラ制御ディレクティブ」(92 ページ ) を参照してください。

注 : --case_insensitiveオプションは、プリプロセッサシンボルに影響を与えません。 プリプロセッサシンボルでは、IAR Embedded Workbench IDE とコマンドラインのどちらで定義されたのかを問わず、常に大文字と小文字が区別されます。 「プリプロセッサシンボルの定義と定義取消し」(86 ページ )を参照してください。

[プロジェクト]>[オプション]>[アセンブラ]>[言語]>[ユーザシンボルの大文字/小文字を区別する ]

--only_stdout 標準出力のみを使用します

--output オブジェクトファイル名を設定します

--preinclude ソースファイルを読み込む前にインクルード

ファイルをインクルードします

--preprocess ファイルへのプリプロセッサ出力

-r デバッガ情報を生成します

--remarks リマークを有効化します

--silent サイレント処理を設定します

--warnings_affect_exit_code 警告が終了コードに影響します

--warnings_are_errors すべての警告をエラーとして処理します

コマンドラインオプション 説明

表 11: アセンブラオプションの概要 ( 続き )

ARX-1

IAR アセンブラ

リファレンスガイド

Page 33: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

--code_model --code_model={far|f|huge|h}

このオプションは、シンボル __CODE_MODEL__の定義に使用します。 「定義済シンボル」(10 ページ ) を参照してください。

パラメータ

[ プロジェクト ]>[ オプション ]>[ 一般オプション ]>[ ターゲット ]>[ コードモデル ]

-D -Dsymbol[=value]

プリプロセッサで使用されるシンボルを、名前 symbol、値 valueで定義します。 値を指定しない場合、1 が使用されます。

-Dオプションを使用すると、ソースファイルではなくコマンドラインで値または選択を指定できます。

たとえば、シンボル TESTVERが定義されているかどうかに応じてプログラムのテストバージョンと製品バージョンのいずれかを生成するように、ソースコードを記述するとします。 この場合、以下のようなセクションを記述します。

#ifdef TESTVER... ; additional code lines for test version only#endif

次に、コマンドラインで必要となるバージョンを次のように選択します。

製品バージョン: arx progテストバージョン: arx prog -DTESTVER

また、頻繁に変更する必要のある変数をソースで使用するとします。 この場合、ソースではこの変数を定義せず、以下のように -Dを使用してコマンドラインで値を指定することができます。

arx prog -DFRAMERATE=3

[プロジェクト]>[オプション]>[アセンブラ]>[プリプロセッサ]>[シンボル定義]

--data_model --data_model={near|n|far|f|huge|h}

このオプションは、シンボル __DATA_MODEL__の定義に使用します。 「定義済シンボル」(10 ページ ) を参照してください。

far( デフォルト ) 定義済シンボル __CODE_MODEL__を __FAR__に設定します

huge 定義済シンボル __CODE_MODEL__を __HUGE__に設定します

ARX-1

19

Page 34: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

20

アセンブラオプションの概要

パラメータ

[ プロジェクト ]>[ オプション ]>[ 一般オプション ]>[ ターゲット ]>[ データモデル ]

--debug, -r --debug

-r

--debugオプションを使用して、IAR C-SPY®デバッガなどのシンボリックデバッガをプログラムで使用するためのデバッグ情報をアセンブラに生成させることができます。

オブジェクトファイルのサイズとリンク時間を削減するために、アセンブラはデフォルトではデバッグ情報を生成しません。

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 出力 ]>[ デバッグ情報の生成 ]

--dependencies --dependencies=[i][m] {filename|directory}

このオプションを使用すると、アセンブラで開かれる各ソースファイルがファイルに記述されます。 以下の修飾子があります。

filenameを指定すると、アセンブラは出力をそのファイルに保存します。

directoryを指定した場合、アセンブラは出力をそのディレクトリ内のファイル ( 拡張子 i) に保存します。 ファイル名は、アセンブルしたソースファイルの名前と同じになります。ただし、-oオプションで別の名前を指定した場合は、その名前が使用されます。

作業ディレクトリを指定するには、directoryをピリオド (.) に置換します。

near 定義済シンボル __DATA_MODEL__を __NEAR__に設定し

ます

far( デフォルト ) 定義済シンボル __DATA_MODEL__を __FAR__に設定し

ます

huge 定義済シンボル __DATA_MODEL__を __HUGE__に設定し

ます

オプション修飾子 説明

i ファイルの名前のみを含める ( デフォルト )

m makefile スタイル

表 12: 依存関係のリストの生成 (--dependencies)

ARX-1

IAR アセンブラ

リファレンスガイド

Page 35: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

--dependenciesや --dependencies=iを使用すると、開かれている各ソースファイルの名前とフルパス ( ある場合 ) が独立した行に出力されます。 次に例を示します。

c:\iar\product\include\stdio.h d:\myproject\include\foo.h

--dependencies=mを使用した場合は、makefile スタイルで出力されます。 各ソースファイルについて、makefile の依存関係規則を含む行が出力されます。 各行は、オブジェクトファイル名、コロン、空白文字、ソースファイル名で構成されます。 次に例を示します。

foo.r54: c:\iar\product\include\stdio.h foo.r54: d:\myproject\include\foo.h

例 1

ファイル listing.iにファイルの依存関係のリストを生成するには、以下のように記述します。

arx prog --dependencies=i listing

例 2

mypathというディレクトリ内の listing.iというファイルにファイルの依存関係のリストを生成するには、以下のように記述します。

arx prog --dependencies \mypath\listing

注 : ディレクトリの区切り文字として \ と /の両方を使用できます。

例 3

gmake での --dependenciesの使用例:

1 以下のように、ファイルのアセンブル規則を設定します。

%.r54 : %.c $(ASM) $(ASMFLAGS) $< --dependencies=m $*.d

すなわち、このコマンドを使用すると、オブジェクトファイルの生成に加えて、makefile スタイルで依存関係ファイルが生成されます ( この例では、拡張子に .dを使用 )。

2 以下のようにして、すべての依存関係ファイルを makefile に含めます。

-include $(sources:.c=.d)

-があるため、.dファイルがまだ存在しない 初の時点でも機能します。

このオプションは IAR Embedded Workbench IDE では使用できません。

ARX-1

21

Page 36: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

22

アセンブラオプションの概要

--diag_error --diag_error=tag,tag,...

このオプションは、診断メッセージをエラーとして分類する場合に使用します。

エラーは、アセンブラ言語の規則違反のうち、オブジェクトコードが生成されず、終了コードが 0 にならないものを示します。

以下の例では、As001の警告がエラーとして分類されます。

--diag_error=As001

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 診断 ]>[ エラーとして処理 ]

--diag_remark --diag_remark=tag,tag,...

このオプションは、診断メッセージをリマークとして分類する場合に使用します。

リマークは、 も軽微な診断メッセージです。生成されたコードに異常動作の原因となる可能性があるソースコード構造が存在することを示します。

以下の例では、As001の警告がリマークとして分類されます。

--diag_remark=As001

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 診断 ]>[ リマークとして処理 ]

--diag_suppress --diag_suppress=tag,tag,...

このオプションは、診断メッセージを無効にする場合に使用します。 以下の例では、As001と As002の警告が無効にされます。

--diag_suppress=As001,As002

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 診断 ]>[ 診断を無効化 ]

--diag_warning --diag_warning=tag,tag,...

このオプションは、診断メッセージを警告として分類する場合に使用します。

警告は、問題はあるが、アセンブリの途中終了の原因にはならないエラーや脱落を示します。

以下の例では、As001の警告がリマークとして分類されます。

--diag_warning=As028

[プロジェクト ]>[オプション ]>[アセンブラ ]>[診断 ]>[ワーニングとして処理 ]

ARX-1

IAR アセンブラ

リファレンスガイド

Page 37: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

--diagnostics_tables --diagnostics_tables {filename|directory}

このオプションは、すべての診断メッセージを指定ファイルに保存する場合に使用します。 これは、#pragmaディレクティブを使用して診断メッセージの重要度を無効化または変更したが、その理由を記述し忘れた場合などに非常に便利です。

このオプションは、他のオプションと併用できません。

filenameを指定すると、アセンブラはそのファイルに出力を保存します。

directoryを指定した場合、アセンブラは出力をそのディレクトリ内のファイル (diagnostics_tables.txtという名前 ) に保存します。 作業ディレクトリを指定するには、directoryをピリオド (.) に置換します。

例 1

すべての診断メッセージを diag.txtというファイルに保存する場合、以下のように指定します。

--diagnostics_tables diag

例 2

作業ディレクトリ内の diagnostics_tables.txtというファイルにテーブルを生成する場合、以下のように指定します。

--diagnostics_tables .

ディレクトリの区切り文字として \ と /の両方を使用できます。

このオプションは IAR Embedded Workbench IDE では使用できません。

--dir_first --dir_first

アセンブラのデフォルト動作では、 初の列で始まるすべての識別子はラベルとして処理されます。

このオプションは、 初の列で開始するディレクティブ名 ( 後のコロンを除く ) をディレクティブとして認識させる場合に使用します。

[プロジェクト]>[オプション]>[アセンブラ]>[言語]>[ 初の列でディレクティブを許可 ]

--double --double={32|64}

このオプションは、シンボル __DOUBLE__の定義に使用します。 「定義済シンボル」(10 ページ ) を参照してください。

ARX-1

23

Page 38: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

24

アセンブラオプションの概要

パラメータ

[ プロジェクト ]>[ オプション ]>[ 一般オプション ]>[ ターゲット ]>[double 型のサイズ ]

--enable_multibytes --enable_multibytes

デフォルトでは、マルチバイト文字をアセンブラのソースコードで使用することはできません。 このオプションを有効にすると、ソースコード内のマルチバイト文字は、ホストコンピュータのデフォルトのマルチバイト文字サポート設定に従って解釈されます。

マルチバイト文字は、コメント、文字列定数、文字定数で使用できます。 これらはそのまま生成コードに移動します。

[プロジェクト]>[オプション]>[アセンブラ]>[言語]>[マルチバイト文字サポートを有効にする ]

--endian --endian={b|big|l|little}

シンボル __BIG_ENDIAN__および __LITTLE_ENDIAN__を定義します 「定義済シンボル」(10 ページ ) を参照してください。

パラメータ

[ プロジェクト ]>[ オプション ]>[ 一般オプション ]>[ ターゲット ]>[ バイトオーダ ]

--error_limit --error_limit=n

--error_limitオプションは、アセンブラを停止させるエラー数を指定するために使用します デフォルトでは、エラー数の上限は 100 です。 nは正の数にする必要があります。0は無制限を示します。

このオプションは IAR Embedded Workbench IDE では使用できません。

32( デフォルト ) 定義済シンボル __DOUBLE__を 32に設定します

64 定義済シンボル __DOUBLE__を 64に設定します

b|big 定義済シンボル __BIG_ENDIAN__を 1に、__LITTLE_ENDIAN__

を 0に設定します

l|little

( デフォルト )定義済シンボル __BIG_ENDIAN__を 0に、__LITTLE_ENDIAN__

を 1に設定します

ARX-1

IAR アセンブラ

リファレンスガイド

Page 39: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

-f -f filename

指定されたファイルから読み込まれたテキストでコマンドラインを拡張します。 オプション自体とファイル名の間にはスペースが必要です。

-fオプションは、オプションの数が多く、コマンドラインに指定するよりファイルに配置する方が簡単である場合に特に便利です。

ファイル extend.xclからオプションを取得してアセンブラを実行するには、以下のように指定します。

arx prog -f extend.xcl

このオプションを設定するには、以下のように指定します。

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 追加オプション ]

--header_context --header_context

問題の原因を特定するために、どのソースファイルからどのヘッダファイルがインクルードされたかの確認が必要になる場合があります。 このオプションは、診断メッセージごとに、ソースでの問題の位置に加えて、その時点でのインクルードスタック全体を表示する場合に使用します。

このオプションは IAR Embedded Workbench IDE では使用できません。

-I -Ipath

このオプションは、#includeファイル検索プレフィックス path を追加することにより、プリプロセッサで使用するパスを指定するために使用します。

デフォルトでは、アセンブラは現在の作業ディレクトリか、ARX_INC環境変数で指定されたパスで #includeファイルを検索します。 -Iオプションは、現在の作業ディレクトリでファイルが見つからない場合に検索するディレクトリの名前をアセンブラに指定します。

以下に例を示します。

-Ic:\global\ -Ic:\thisproj\headers\

というオプションを使用し、

#include "asmlib.hdr"

とソースに記述すると、アセンブラはまず現在のディレクトリ内を検索してから、ディレクトリ c:\global\ を検索し、続いてディレクトリC:\thisproj\headers\ を検索します。 後に、アセンブラは ARX_INC環境変

ARX-1

25

Page 40: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

26

アセンブラオプションの概要

数に指定されたディレクトリを検索します ( ただし、この変数が設定されている場合 )。

[プロジェクト ]>[オプション ]>[アセンブラ ]>[プリプロセッサ ]>[追加インクルードディレクトリ ]

-l -l[a][d][e][m][o][x][N] {filename|directory}

デフォルトでは、アセンブラはリストを生成しません。 このオプションは、リストをファイルに生成する場合に使用します。

以下のタイプの情報を 1 つまたは複数インクルードすることができます。

filenameを指定すると、アセンブラはそのファイルに出力を保存します。

directoryを指定した場合、アセンブラは出力をそのディレクトリ内のファイル ( 拡張子 lst) に保存します。 ファイル名は、アセンブルしたソースファイルの名前と同じになります。ただし、-oオプションで別の名前を指定した場合は、その名前が使用されます。

作業ディレクトリを指定するには、directoryをピリオド (.) に置換します。

例 1

ファイル list.lstにリストを生成するには、以下のように記述します。

arx sourcefile -l list

例 2

mysource.s54というファイルをアセンブルし、作業ディレクトリ内のファイル mysource.lstにリストを生成するには、以下のように指定します。

arx mysource -l .

コマンドラインオプ

ション説明

-la アセンブルされた行のみ

-ld LSTOUTディレクティブは、リストファイルに行を記述するか

どうかを制御します。 -ldを使用して、この開始値をオフに切

り替えることができます

-le マクロ拡張なし

-lm マクロ定義

-lo 複数行コード

-lx クロスリファレンスをインクルードする

-lN 診断をインクルードしない

表 13: 条件付きリストオプション (-l)

ARX-1

IAR アセンブラ

リファレンスガイド

Page 41: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

注 : ディレクトリの区切り文字として \ と /の両方を使用できます。

関連オプションを設定するには、以下のように選択します。

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ リスト ]

-M -Mab

このオプションは、各マクロ引数の左側と右側の引用符として使用する文字( それぞれ aと b) を設定します。

デフォルトでは、これらの引用符は <と >です。 -Mオプションを使用して、他の表記法に合せて引用符を変更したり、マクロ引数に <や >自体を使用したりできます。

以下のオプションを使用するとします。

-M[]

ソースには以下のように記述します。

print [>]

これにより、>を引数として使用してマクロ printを呼び出すことができます。

注記 : ホスト環境によっては、以下のようにマクロの引用符付きで引用符を使用する必要がある場合もあります。

arx filename -M<>

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 言語 ]>[ マクロの引用符 ]

--mnem_first --mnem_first

アセンブラのデフォルト動作では、 初の列で始まるすべての識別子はラベルとして処理されます。

このオプションは、 初の列で開始するニーモニック名 ( 後のコロンを除く ) をニーモニックとして認識させる場合に使用します。

[プロジェクト]>[オプション]>[アセンブラ]>[言語]>[ 初の列でニーモニックを許可 ]

--no_path_in_file_macros --no_path_in_file_macros

このオプションは、定義済プリプロセッサシンボル __FILE__および__BASE_FILE__のリターン値からパスを除外する場合に使用します。

このオプションは IAR Embedded Workbench IDE では使用できません。

ARX-1

27

Page 42: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

28

アセンブラオプションの概要

--no_warnings --no_warnings

デフォルトでは、アセンブラ標準の警告メッセージを出力します。 このオプションは、すべての警告を無効にする場合に使用します。

このオプションは IAR Embedded Workbench IDE では使用できません。

--no_wrap_diagnostics --no_wrap_diagnostics

デフォルトでは、アセンブラ診断メッセージ中の長い行は、読みやすくするため複数行に分割されます。 このオプションは、診断メッセージのラインラッピングを無効にする場合に使用します。

このオプションは IAR Embedded Workbench IDE では使用できません。

-o, --output -o {filename|path}

--output {filename|path}

デフォルトでは、アセンブラで生成されたオブジェクトコード出力は、ソースファイルと同じ名前で、拡張子が oのファイルに配置されます。 このオプションは、オブジェクトコード出力用に別の出力ファイル名を明示的に指定する場合に使用します。このオプションにより、オブジェクトファイルに使用するファイル名が設定されます。

構文について詳しくは、「コマンドラインアセンブラオプションの設定」(15 ページ ) を参照してください。

[プロジェクト]>[オプション]>[一般オプション]>[出力]>[出力ディレクトリ]>[ オブジェクトファイル ]

--only_stdout --only_stdout

アセンブラは、通常は stderrに転送されるメッセージに対して stdoutも使用します。

このオプションは IAR Embedded Workbench IDE では使用できません。

--output, -o --output {filename|path}

-o {filename|path}

デフォルトでは、アセンブラで生成されたオブジェクトコード出力は、ソースファイルと同じ名前で、拡張子が oのファイルに配置されます。 このオプションは、オブジェクトコード出力用に別の出力ファイル名を明示的に指定する場合に使用します。このオプションにより、オブジェクトファイルに使用するファイル名が設定されます。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 43: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

構文について詳しくは、「コマンドラインアセンブラオプションの設定」(15 ページ ) を参照してください。

[プロジェクト]>[オプション]>[一般オプション]>[出力]>[出力ディレクトリ]>[ オブジェクトファイル ]

--preinclude --preinclude includefile

このオプションは、アセンブラでソースファイルのリードを開始する前に、指定のインクルードファイルをインクルードする場合に使用します。 これは、アプリケーション全体のソースコードで変更を行う場合 ( 新しいシンボルを定義する場合など ) に便利です。

このオプションを設定するには、以下のように指定します。

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 追加オプション ]

--preprocess --preprocess=[c][n][l] {filename|directory}

このオプションは、プリプロセッサ出力を指定ファイルに転送する場合に使用します。

以下の表に、使用可能なプリプロセッサ識別子のマッピングを示します。

filenameを指定すると、アセンブラはそのファイルに出力を保存します。

directoryを指定した場合、アセンブラは出力をそのディレクトリ内のファイル ( 拡張子 i) に保存します。 ファイル名は、アセンブルしたソースファイルの名前と同じになります。ただし、-oオプションで別の名前を指定した場合は、その名前が使用されます。

作業ディレクトリを指定するには、directoryをピリオド (.) に置換します。

例 1

保持されたコメント付きでアセンブラ出力をファイル output.iに保存するには、以下のように指定します。

arx sourcefile --preprocess=c output

コマンドラインオプション 説明

--preprocess=c プリプロセッサによって削除される C および C++ 形

式のコメントを保持します。 アセンブラ形式のコメン

トは常に保持されます。

--preprocess=n プリプロセスのみ

--preprocess=l #lineディレクティブを生成

表 14: ファイルへのプリプロセッサ出力の転送 (--preprocess)

ARX-1

29

Page 44: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

30

アセンブラオプションの概要

例 2

mysource.s54というファイルをアセンブルし、作業ディレクトリ内のファイル mysource.iに #lineディレクティブでアセンブラ出力を保存するには、以下のように指定します。

arx mysource --preprocess=l .

注 : ディレクトリの区切り文字として \ と /の両方を使用できます。

[プロジェクト]>[オプション]>[アセンブラ]>[プリプロセッサ]>[ファイルへのプリプロセッサ出力 ]

-r, --debug --debug

-r

--debugオプションを使用して、IAR C-SPY デバッガなどのシンボリックデバッガをプログラムで使用するためのデバッグ情報をアセンブラに生成させることができます。

オブジェクトファイルのサイズとリンク時間を削減するために、アセンブラはデフォルトではデバッグ情報を生成しません。

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 出力 ]>[ デバッグ情報の生成 ]

--remarks --remarks

このオプションは、アセンブラにリマークを生成させる場合に使用します。リマークとは、 も軽微な診断メッセージであり、生成されたコードに異常動作の原因となる可能性があるソースコード構造が存在することを示します。 デフォルトでは、リマークは生成されません。

診断メッセージの詳細については、「重要度」(113 ページ ) を参照してください。

[ プロジェクト ]>[ オプション ]>[ アセンブラ ]>[ 診断 ]>[ リマークの有効化 ]

-silent --silent

--silentオプションを指定すると、アセンブラは標準出力ストリームにメッセージを送信せずに処理を実行します。

デフォルトでは、さまざまな重要ではないメッセージが標準出力ストリームから送信されます。 --silentオプションを使用して、これらのメッセージ送信を抑止できます。 エラーおよび警告メッセージはエラー出力ストリームに送信されるため、この設定にかかわらず表示されます。

このオプションは IAR Embedded Workbench IDE では使用できません。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 45: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラオプション

--warnings_affect_exit_code --warnings_affect_exit_code

デフォルトでは、ゼロ以外の終了コードが生成されるのはエラーが発生した場合のみで、警告は終了コードには影響しません。 このオプションを使用すると、警告が発生した場合にゼロ以外の終了コードが生成されます。

このオプションは IAR Embedded Workbench IDE では使用できません。

--warnings_are_errors --warnings_are_errors

このオプションは、アセンブラで警告をエラーとして処理する場合に使用します。 アセンブラがエラーを検出した場合、オブジェクトコードは生成されません。

一部の警告を保持するには、このオプションをオプション --diag_warningと組み合わせて使用します。 まず、すべての警告がエラーとして処理されるようにしてから、以下のようにして警告として処理すべきものを再設定します。

--diag_warning=As001

その他の情報については、「--diag_warning」(22 ページ ) を参照してください。

[プロジェクト]>[オプション]>[アセンブラ]>[診断]>[すべてのワーニングをエラーとして処理 ]

ARX-1

31

Page 46: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

32

アセンブラオプションの概要

ARX-1

IAR アセンブラ

リファレンスガイド

Page 47: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子この章では、 初にアセンブラ演算子の優先順位について説明してか

ら、各演算子について優先順に簡単に説明します。 後に、各演算子

のリファレンス情報をアルファベット順に提供します。

演算子の優先順位それぞれの演算子には優先順位が設定され、演算子とオペランドが評価される順番はそれによって決定されます。 優先順位の範囲は 1( 高の優先順位であり、 初に評価される ) から 15( 低の優先順位であり、 後に評価される ) までです。

以下の規則により、式がどのように評価されるかが決まります。

● 優先順位が一番高い演算子が 初に評価されます。続いて優先順位が 2 番目の演算子から順に評価され、 後に優先順位が一番低い演算子が評価されます。

● 優先順位が同じ演算子は、式の中で左から順番に評価されます。

● 括弧「(」と「)」を、演算子およびオペランドのグループ化と、式の評価順序の変更のために使用できます。 たとえば、以下の式の評価結果は 1 です。

7/(1+(2*3))

注 : RX 用 IAR アセンブラでの優先順位は、該当する場合、ANSI C++ 規格での演算子の優先順位に従っています。

ARX-1

33

Page 48: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

34

アセンブラ演算子の概要

アセンブラ演算子の概要以下の表は、演算子を優先順にまとめたものです。 同義語がある場合は、演算子名の後ろに括弧で囲んで示しています。

括弧演算子 1

関数演算子 2

単項演算子 3

乗算型算術演算子 4

() 括弧

BYTE1 1 バイト目

BYTE2 2 バイト目

BYTE3 3 バイト目

BYTE4 4 バイト目

DATE 現在の日時

HIGH 上位バイト

HWRD 上位ワード

LOW 下位バイト

LWRD 下位ワード

SFB セグメント開始

SFE セグメント終了

SIZEOF セグメントのサイズ

UPPER 3 バイト目

+ 単項プラス

BINNOT [~] ビット単位の NOT

NOT [!] 論理 NOT

- 単項マイナス

* 乗算

ARX-1

IAR アセンブラ

リファレンスガイド

Page 49: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

加算型算術演算子 5

シフト演算子 6

比較演算子 7

等価演算子 8

論理演算子 9-14

/ 除算

MOD [%] 剰余

+ 加算

減算

SHL [<<] 論理左シフト

SHR [>>] 論理右シフト

GE [>=] 以上

GT [>] より大きい

LE [<=] 以下

LT [<] より小さい

UGT 符号なしの「より大きい」

ULT 符号なしの「より小さい」

EQ [=] [==] 等しい

NE [<>] [!=] 等しくない

BINAND [&] ビット単位の AND(9)

BINXOR [^] ビット単位の排他 OR(10)

BINOR [|] ビット単位の OR(11)

AND [&&] 論理 AND(12)

XOR 論理排他 OR(13)

ARX-1

35

Page 50: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

36

アセンブラ演算子の説明

条件演算子 15

アセンブラ演算子の説明以下のセクションでは、各アセンブラ演算子について詳細に説明します。 括弧内の数字は、演算子の優先順位を示します。

() 括弧 (1)

「(」と「)」は、独立して評価する式をグループ化し、デフォルトの優先順位より優先されます。

1+2*3 → 7(1+2)*3 → 9

* 乗算 (4)

* は、2 つのオペランドの積を計算します。 オペランドは符号付きの 32 ビット整数として処理され、結果も符号付きの 32 ビット整数となります。

2*2 → 4-2*2 → -4

+ 単項プラス (3)

単項プラス演算子

+3 → 33*+2 → 6

OR [||] 論理 OR(14)

?: 条件演算子

ARX-1

IAR アセンブラ

リファレンスガイド

Page 51: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

+ 加算 (5)

加算演算子 + は、左右にある 2 つのオペランドの合計を計算します。 オペランドは符号付きの 32 ビット整数として処理され、結果も符号付きの 32 ビット整数となります。

92+19 → 111-2+2 → 0-2+-2 → -4

- 単項マイナス (3)

単項マイナス演算子は、オペランドを算術的に論理否定します。

オペランドは符号付きの 32 ビット整数として解釈され、演算子の結果はその整数の 2 の補数の論理否定となります。

-3 → -33*-2 → -64--5 → 9

- 減算 (5)

減算演算子は、左のオペランドから右のオペランドを引いた差異を計算します。 オペランドは符号付きの 32 ビット整数として処理され、結果も符号付きの 32 ビット整数となります。

92-19 → 73-2-2 → -4-2--2 → 0

/ 除算 (4)

/は、左のオペランドを右のオペランドで割って整数化した商を計算します。 オペランドは符号付きの 32 ビット整数として処理され、結果も符号付きの32 ビット整数となります。

9/2 → 4-12/3 → -49/2*6 → 24

ARX-1

37

Page 52: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

38

アセンブラ演算子の説明

?: 条件演算子 (15)

この演算子の結果は、conditionの評価結果が真である場合は 初の exprに、conditionの評価結果が偽の場合は 2 つ目の exprになります。

注 : 疑問符とその後のラベルは、スペースまたはタブで区切ります。区切らないと、? はラベルの 1 文字目と見なされます。

構文

condition ? expr : expr

5 ? 6 : 7 → 60 ? 6 : 7 → 7

AND [&&] 論理 AND(12)

ANDは、2 つの整数オペランドの論理 AND を計算するために使用します。 両方のオペランドがゼロ以外である場合、計算結果は 1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。

1010B AND 0011B → 11010B AND 0101B → 11010B AND 0000B → 0

BINAND [&] ビット単位の AND(9)

BINANDは、整数オペランドのビット単位の AND を計算するために使用します。 32 ビットの結果の各ビットは、オペランドの該当するビットの論理 ANDです。

1010B BINAND 0011B → 0010B1010B BINAND 0101B → 0000B1010B BINAND 0000B → 0000B

BINNOT [~] ビット単位の NOT(3)

BINNOTは、オペランドのビット単位の NOT を計算するために使用します。 32 ビットの結果の各ビットは、オペランドの該当するビットの補数です。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 53: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

BINNOT 1010B → 11111111111111111111111111110101B

BINOR [|] ビット単位の OR(11)

BINORは、オペランドのビット単位の OR を計算するために使用します。 32ビットの結果の各ビットは、オペランドの該当するビットの包含的 OR です。

1010B BINOR 0101B → 1111B1010B BINOR 0000B → 1010B

BINXOR [^] ビット単位の排他 OR(10)

BINXORは、オペランドのビット単位の XOR を計算するために使用します。 32 ビットの結果の各ビットは、オペランドの該当するビットの排他的 ORです。

1010B BINXOR 0101B → 1111B1010B BINXOR 0011B → 1001B

BYTE1 1 バイト目 (2)

BYTE1は、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの下位バイト ( ビット 7 ~ 0) です。

BYTE1 0x12345678 → 0x78

BYTE2 2 バイト目 (2)

BYTE2は、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの中下位バイト ( ビット 15 ~ 8) です。

BYTE2 0x12345678 → 0x56

ARX-1

39

Page 54: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

40

アセンブラ演算子の説明

BYTE3 3 バイト目 (2)

BYTE3は、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの中上位バイト ( ビット 23 ~ 16) です。

BYTE3 0x12345678 → 0x34

BYTE4 4 バイト目 (2)

BYTE4は、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの上位バイト ( ビット 31 ~ 24) です。

BYTE4 0x12345678 → 0x12

DATE 現在の日時 (2)

DATEは、現在のアセンブリが開始した日時を指定するために使用します。

DATE演算子は絶対引数 ( 式 ) をとり、以下を返します。

アセンブリ日時は以下のようにアセンブルします。

today: DC8 DATE 5, DATE 4, DATE 3

EQ [=] [==] 等しい (8)

=は、2 つの演算子の値が等しい場合に 1( 真 ) となり、等しくない場合は 0(偽 ) となります。

DATE 1 現在の秒 (0 ~ 59)

DATE 2 現在の分 (0 ~ 59)

DATE 3 現在の時間 (0 ~ 23)

DATE 4 現在の日付 (1 ~ 31)

DATE 5 現在の月 (1 ~ 12)

DATE 6 現在の年 MOD 100(1998 → 98、2000 → 00、2002 → 02)

ARX-1

IAR アセンブラ

リファレンスガイド

Page 55: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

1 = 2 → 02 == 2 → 1'ABC' = 'ABCD' → 0

GE [>=] 以上 (7)

>=は、左のオペランドの数値が右のオペランドと等しいか、それより大きい場合に 1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。

1 >= 2 → 02 >= 1 → 11 >= 1 → 1

GT [>] より大きい (7)

>は、左のオペランドの数値が右のオペランドより大きい場合に 1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。

-1 > 1 → 02 > 1 → 11 > 1 → 0

HIGH 上位バイト (2)

HIGHは、符号なし 16 ビット整数値として解釈される、右側にある単一のオペランドを取得します。 結果は、そのオペランドの上位オーダバイトの符号なし 8 ビット整数値です。

HIGH 0xABCD → 0xAB

HWRD 上位ワード (2)

HWRDは、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの上位ワード ( ビット 31 ~ 16) です。

ARX-1

41

Page 56: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

42

アセンブラ演算子の説明

HWRD 0x12345678 → 0x1234

LE [<=] 以下 (7)

<=は、左のオペランドの数値が右のオペランドより大きいか等しい場合に1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。

1 <= 2 → 12 <= 1 → 01 <= 1 → 1

LOW 下位バイト (2)

LOWは、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 結果は、そのオペランドの下位オーダバイトの符号なし 8 ビット整数値です。

LOW 0xABCD → 0xCD

LT [<] より小さい (7)

<は、左のオペランドの数値が右のオペランドより小さい場合に 1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。

-1 < 2 → 12 < 1 → 02 < 2 → 0

LWRD 下位ワード (2)

LWRDは、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの下位ワード ( ビット 15 ~ 0) です。

LWRD 0x12345678 → 0x5678

ARX-1

IAR アセンブラ

リファレンスガイド

Page 57: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

MOD [%] 剰余 (4)

MODは、左のオペランドを右のオペランドで整数除算した余りを計算します。 オペランドは符号付きの 32 ビット整数として処理され、結果も符号付きの32 ビット整数となります。

X MOD Yは、整数除算を使用した X-Y*(X/Y)に等しくなります。

2 MOD 2 → 012 MOD 7 → 53 MOD 2 → 1

NE [<>] [!=] 等しくない (8)

<>は、2 つの演算子の値が等しい場合に 1( 偽 ) となり、等しくない場合は 0(真 ) となります。

1 <> 2 → 12 <> 2 → 0'A' <> 'B' → 1

NOT [!] 論理 NOT(3)

NOTは引数の否定に使用します。

NOT 0101B → 0NOT 0000B → 1

OR [||] 論理 OR(14)

ORは、2 つの整数オペランドの論理 OR を計算するために使用します。

1010B OR 0000B → 10000B OR 0000B → 0

ARX-1

43

Page 58: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

44

アセンブラ演算子の説明

SFB セグメント開始 (2)

SFBは、右側にある単一のオペランドを受け入れます。 オペランドは再配置可能な segment である必要があります。 この演算子の評価結果は、segment の初のバイトのアドレスです。 この評価はリンク時に行われます。

構文

SFB(segment [{+|-}offset])

パラメータ

name segmentBegin rseg MYCODE:CODE ; Forward declaration of MYCODE. rseg SEGTAB:CONST datastart dc32 sfb(MYCODE) end

このコードがその他多くのモジュールとリンクされている場合でも、startは segment の 初のバイトのアドレスに設定されます。

SFE セグメント終了 (2)

SFEは、右側にある単一のオペランドを受け入れます。 オペランドは再配置可能な segment である必要があります。 このオペレータの評価結果は、segment の開始アドレスと、segment のサイズです。 この評価はリンク時に行われます。

構文

SFE (segment [{+ | -} offset])

パラメータ

segment 再配置可能 segment の名前。SFBの使用前に定義する必要があります。

offset 開始アドレスからの任意指定オフセット。 offsetが省略されている場合、括弧は任意です。

segment 再配置可能 segment の名前。SFEの使用前に定義する必要があります。

offset 開始アドレスからの任意指定オフセット。 offsetが省略されている場合、括弧は任意です。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 59: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

NAME demo RSEG segtab:CONST DATAend: DC16 SFE(mycode)

このコードがその他多くのモジュールとリンクされている場合でも、endはsegment の後の 初のバイトのアドレスに設定されます (mycode)。

segment MY_SEGMENTのサイズは、次のようにして計算できます。

SFE(MY_SEGMENT)-SFB(MY_SEGMENT)

SHL [<<] 論理左シフト (6)

SHLは、常に符号なしとして取り扱われる左オペランドを右へシフトするために使用します。 シフト対象のビット数は、右オペランドで指定し、0 ~ 32 の整数値として解釈されます。

00011100B SHL 3 → 11100000B00000111111111111B SHL 5 → 11111111111100000B14 SHL 1 → 28

SHR [>>] 論理右シフト (6)

SHRは、常に符号なしとして取り扱われる左オペランドを右へシフトするために使用します。 シフト対象のビット数は、右オペランドで指定し、0 ~ 32 の整数値として解釈されます。

01110000B SHR 3 → 00001110B1111111111111111B SHR 20 → 014 SHR 1 → 7

SIZEOF セグメントサイズ (2)

SIZEOFは引数で指定された再配置可能 segment の SFE-SFB値を生成します。すなわち、segment のバイト数が計算されます。 この計算は、モジュール同士がリンクされると行われます。

構文

SIZEOF (segment)

ARX-1

45

Page 60: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

46

アセンブラ演算子の説明

パラメータ

このコードは、sizeの値を、segment MYCODEのサイズに設定します。

module table rseg MYCODE:CODE ; Forward declaration of MYCODE. rseg SEGTAB:CONST datasize dc32 sizeof(MYCODE) endmod

module application rseg MYCODE:CODE code nop ; Placeholder for application. end

UGT 符号なしの「より大きい」(7)

UGTは、左のオペランドの数値が右のオペランドより大きい場合に 1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。 この演算では、オペランドを符号なしの値として取り扱います。

2 UGT 1 → 1-1 UGT 1 → 1

ULT 符号なしの「より小さい」(7)

ULTは、左のオペランドの数値が右のオペランドより小さい場合に 1( 真 ) となり、それ以外の場合は 0( 偽 ) となります。 この演算では、オペランドを符号なしの値として取り扱います。

1 ULT 2 → 1-1 ULT 2 → 0

segment 再配置可能 segment の名前。SIZEOFの使用前に定義する必要があります。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 61: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラ演算子

UPPER 3 バイト目 (2)

UPPERは、符号なし 32 ビット整数値として解釈される単一のオペランドを取得します。 この結果は、オペランドの中上位バイト ( ビット 23 ~ 16) です。

UPPER 0x12345678 → 0x34

XOR 論理排他 OR(13)

XORは、左右いずれかのオペランドがゼロ以外である場合に 1( 真 ) となり、両方のオペランドがゼロまたはゼロ以外である場合に 0( 偽 ) となります。 XORは、2 つのオペランドの論理 XOR を計算するために使用します。

0101B XOR 1010B → 00101B XOR 0000B → 1

ARX-1

47

Page 62: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

48

アセンブラ演算子の説明

ARX-1

IAR アセンブラ

リファレンスガイド

Page 63: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブこの章では、アセンブラディレクティブについてアルファベット順に

簡単に説明し、ディレクティブの各カテゴリの詳細なリファレンス情

報を提供します。

アセンブラディレクティブの概要アセンブラディレクティブは、機能に応じて以下のようにグループ分けされます。

● 「モジュール制御ディレクティブ」(53 ページ )

● 「シンボル制御ディレクティブ」(57 ページ )

● 「セグメント制御ディレクティブ」(59 ページ )

● 「値割当てディレクティブ」(67 ページ )

● 「条件付きアセンブリディレクティブ」(70 ページ )

● 「マクロ処理ディレクティブ」(73 ページ )

● 「リスト制御ディレクティブ」(80 ページ )

● 「C 形式のプリプロセッサディレクティブ」(84 ページ )

● 「データ定義ディレクティブまたは割当てディレクティブ」(89 ページ )

● 「アセンブラ制御ディレクティブ」(92 ページ )

● 「関数ディレクティブ」(94 ページ )

● 「呼出しフレーム情報ディレクティブ」(96 ページ )

以下の表に、すべてのアセンブラディレクティブの概要を示します。

ディレクティブ 説明 セクション

_args マクロに受け渡される引数の数に設定されます。 マクロ処理

#define ラベルに値を割り当てます。 C 形式のプリプロ

セッサ

#elif #if#endifブロックに新しい条件を実装し

ます。

C 形式のプリプロ

セッサ

#else 条件が偽であった場合に命令をアセンブルし

ます。

C 形式のプリプロ

セッサ

#endif #if、#ifdef、または #ifndefブロックを

終了させます。

C 形式のプリプロ

セッサ

表 15: アセンブラディレクティブの概要

ARX-1

49

Page 64: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

50

アセンブラディレクティブの概要

#error エラーを生成します。 C 形式のプリプロ

セッサ

#if 条件が真であった場合に命令をアセンブルし

ます。

C 形式のプリプロ

セッサ

#ifdef シンボルが定義されている場合に命令をアセン

ブルします。

C 形式のプリプロ

セッサ

#ifndef シンボルが定義されていない場合に命令をアセ

ンブルします。

C 形式のプリプロ

セッサ

#include ファイルをインクルードします。 C 形式のプリプロ

セッサ

#line 行番号を変更します。 C 形式のプリプロ

セッサ

#pragma 拡張機能を制御します。 C 形式のプリプロ

セッサ

#undef ラベルの定義を取り消します。 C 形式のプリプロ

セッサ

/*comment*/ C スタイルのコメント区切り文字 アセンブラ制御

// C++スタイルのコメント区切り文字 アセンブラ制御

= モジュールに対してローカルな永久値を割り当

てます。

値の割り当て

ALIGN ゼロが埋め込まれたバイトを挿入して、プログ

ラムロケーションカウンタをアラインメントし

ます。

セグメント制御

ALIGNRAM プログラムロケーションカウンタをアラインメ

ントします。

セグメント制御

ARGFRAME 関数の引数に対して使用される空間を宣言し

ます。

関数

ASEG 絶対セグメントを開始します。 セグメント制御

ASEGN 指定された絶対セグメントを開始します。 セグメント制御

ASSIGN 一時値を割り当てます。 値の割り当て

BLOCK SYMBOLディレクティブによって作成されたエ

イリアスにブロック番号を指定します。

シンボル制御

CASEOFF 大文字 / 小文字の区別を無効にします。 アセンブラ制御

CASEON 大文字 / 小文字の区別を有効にします。 アセンブラ制御

CFI 呼出しフレーム情報を指定します。 呼出しフレーム情報

ディレクティブ 説明 セクション

表 15: アセンブラディレクティブの概要 ( 続き )

ARX-1

IAR アセンブラ

リファレンスガイド

Page 65: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

CODE コードセグメントを開始します。 セグメント制御

COMMON 共通セグメントを開始します。 セグメント制御

DATA データセグメントを開始します。 セグメント制御

DC8 文字列を含め 8 ビットの定数を生成します。 データ定義または割

当て

DC16 16 ビットの定数を生成します。 データ定義または割

当て

DC24 24 ビットの定数を生成します。 データ定義または割

当て

DC32 32 ビットの定数を生成します。 データ定義または割

当て

DC64 64 ビットの定数を生成します。 データ定義または割

当て

DEFINE ファイル全体で有効な値を定義します。 値の割り当て

DF32 32 ビットの浮動小数点定数を生成します。 データ定義または割

当て

DF64 64 ビットの浮動小数点定数を生成します。 データ定義または割

当て

DQ15 16 ビットの小数定数を生成します。 データ定義または割

当て

DQ31 32 ビットの小数定数を生成します。 データ定義または割

当て

DS8 8 ビット整数に空間を割り当てます。 データ定義または割

当て

DS16 16 ビット整数に空間を割り当てます。 データ定義または割

当て

DS24 24 ビット整数に空間を割り当てます。 データ定義または割

当て

DS32 32 ビット整数に空間を割り当てます。 データ定義または割

当て

DS64 64 ビット整数に空間を割り当てます。 データ定義または割

当て

ELSE 条件が偽であった場合に命令をアセンブルし

ます。

条件付きアセンブリ

ELSEIF IFENDIFブロックに新しい条件を指定します。 条件付きアセンブリ

ディレクティブ 説明 セクション

表 15: アセンブラディレクティブの概要 ( 続き )

ARX-1

51

Page 66: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

52

アセンブラディレクティブの概要

END ファイル内の 後のモジュールのアセンブリを

終了します。

モジュール制御

ENDIF IFブロックを終了します。 条件付きアセンブリ

ENDM マクロ定義を終了します。 マクロ処理

ENDMOD 現在のモジュールのアセンブリを終了します。 モジュール制御

ENDR 繰返し構造を終了します。 マクロ処理

EQU モジュールに対してローカルな永久値を割り当

てます。

値の割り当て

EVEN 偶数アドレスにプログラムカウンタをアライン

メントします。

セグメント制御

EXITM マクロが終了する前に抜け出します。 マクロ処理

EXTERN 外部シンボルをインポートします。 シンボル制御

FUNCALL 関数 callerが関数 calleeを呼び出すことを

宣言します。

関数

FUNCTION ラベル名を関数として宣言します。 関数

IF 条件が真であった場合に命令をアセンブルし

ます。

条件付きアセンブリ

IMPORT 外部シンボルをインポートします。 シンボル制御

LIBRARY ライブラリモジュールを開始します。 モジュール制御

LIMIT 制限に対して値をチェックします。 値の割当て

LOCAL マクロに対してローカルなシンボルを作成し

ます。

マクロ処理

LOCFRAME 関数内でローカル用に使用される空間を宣言し

ます。

関数

LSTCND 条件付きアセンブラリストを制御します。 リスト制御

LSTCOD 複数行から成るコードのリストを制御します。 リスト制御

LSTEXP マクロで生成された行のリストを制御します。 リスト制御

LSTMAC マクロ定義のリストを制御します。 リスト制御

LSTOUT アセンブラリスト出力を制御します。 リスト制御

LSTPAG 下位互換性のために保持されています。認識は

されますが、無視されます。

リスト制御

LSTREP 繰返しディレクティブで生成された行のリスト

を制御します。

リスト制御

LSTXRF クロスリファレンステーブルを生成します。 リスト制御

ディレクティブ 説明 セクション

表 15: アセンブラディレクティブの概要 ( 続き )

ARX-1

IAR アセンブラ

リファレンスガイド

Page 67: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

モジュール制御ディレクティブモジュール制御ディレクティブは、ソースプログラムモジュールの開始と終了をマーキングし、それらのモジュールに名前と型を割り当てるために使用されます。 式でディレクティブを使用するときに適用される制限については、「式の制限」(12 ページ ) を参照してください。

MACRO マクロを定義します。 マクロ処理

MODULE ライブラリモジュールを開始します。 モジュール制御

NAME プログラムモジュールを開始します。 モジュール制御

ODD 奇数アドレスにプログラムロケーションカウン

タをアラインメントします。

セグメント制御

ORG プログラムロケーションカウンタを設定し

ます。

セグメント制御

OVERLAY 認識されますが、無視されます。 シンボル制御

PROGRAM プログラムモジュールを開始します。 モジュール制御

PUBLIC 他のモジュールにシンボルをエクスポートし

ます。

シンボル制御

PUBWEAK 他のモジュールにシンボルをエクスポートしま

す。複数の定義が許可されます。

シンボル制御

RADIX デフォルトベースを設定します。 アセンブラ制御

REPT 命令を、指定回数だけ繰り返します。 マクロ処理

REPTC 文字を繰り返し、置換します。 マクロ処理

REPTI 文字列を繰り返し、置換します。 マクロ処理

REQUIRE シンボルを強制参照させます。 シンボル制御

RSEG 再配置可能 segment を開始します。 セグメント制御

RTMODEL ランタイムモデル属性を宣言します。 モジュール制御

SET 一時値を割り当てます。 値の割り当て

SYMBOL C/C++ シンボルへの参照のために使用可能なエ

イリアスを作成します。

シンボル制御

VAR 一時値を割り当てます。 値の割り当て

ディレクティブ 説明 セクション

表 15: アセンブラディレクティブの概要 ( 続き )

ディレクティブ 説明 式の制限

END ファイル内の 後のモジュールのアセンブリ

を終了します。

ローカル定義されたラベ

ルまたは整数定数のみ

表 16: モジュール制御ディレクティブ

ARX-1

53

Page 68: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

54

モジュール制御ディレクティブ

構文

END [address]

ENDMOD [address]

LIBRARY symbol [(expr)]

MODULE symbol [(expr)]

NAME symbol [(expr)]

PROGRAM symbol [(expr)]

RTMODEL key, value

パラメータ

ENDMOD 現在のモジュールのアセンブリを終了します。ローカル定義されたラベ

ルまたは整数定数のみ

LIBRARY ライブラリモジュールを開始します。 外部参照禁止

絶対

MODULE ライブラリモジュールを開始します。 外部参照禁止

絶対

NAME プログラムモジュールを開始します。 外部参照禁止

絶対

PROGRAM プログラムモジュールを開始します。 外部参照禁止

絶対

RTMODEL ランタイムモデル属性を宣言します。 なし

address プログラムの開始アドレスを決定する任意指定の式。 任意の正の整数値を受け入れます。

expr ランタイムオプションをエンコードするためにアセンブラが使用する任意指定の式。 0 ~ 255 の範囲内にする必要があり、評価結果は定数値となります。 この式は、コンパイラからのアセンブラ出力として開始されるソースコードをアセンブルしている場合にのみ役に立ちます。

key キーを指定するテキスト文字列。

symbol モジュールに対して割り当てられ、オブジェクトファイルを処理するときに XLINK、XAR、XLIB に使用される名前。

value 値を指定するテキスト文字列。

ディレクティブ 説明 式の制限

表 16: モジュール制御ディレクティブ ( 続き )

ARX-1

IAR アセンブラ

リファレンスガイド

Page 69: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

説明

プログラムモジュールの開始

プログラムモジュールを開始したり、IAR XLINK リンカ、IAR XAR ライブラリビルダ、IAR XLIB ライブラリアンによって参照するために名前を割り当てるには、NAMEまたは PROGRAMを使用します。

プログラムモジュールは、その他のモジュールがこれらを参照しない場合にも、XLINK によって無条件にリンクされます。

ライブラリモジュールの開始

各モジュールが 1 つのルーチンを表現する複数の小型モジュール ( 高級言語用のランタイムシステムなど ) を含むライブラリを作成するには、MODULEまたは LIBRARYを使用します。 複数モジュールに対応できるため、必要なソースファイルとオブジェクトファイルの数を大幅に削減できます。

ライブラリモジュールは、他のモジュールがモジュール内の共通シンボルを参照する場合、リンクされたコードのみにコピーされます。

モジュールの終了

モジュールの 後を定義するには、ENDMODを使用します。

ソースファイルの終了

ソースファイルの 後を指定するには、ENDを使用します。 ENDディレクティブの後の行はすべて無視されます。 ENDMODディレクティブによって明示的に行われない場合、ENDディレクティブはファイル内の 後のモジュールも終了させます。

複数モジュールファイルのアセンブル

プログラムエントリは、再配置可能と絶対のいずれかにする必要があります。また、XLINK ロードマップや、一部の 16 進絶対出力フォーマットに表示されます。 プログラムエントリを外部に定義することはできません。

複数モジュールファイルをアセンブルする場合、以下の規則が適用されます。

● 新しいモジュールの冒頭では、DEFINE、#define、MACROによって作成されたものを除くすべてのユーザシンボルが削除され、ロケーションカウンタがクリアされ、モデルが絶対に設定されます。

● リスト制御ディレクティブはアセンブリ全体を通して有効のままです。

注記 : ENDは常に last モジュールの後に配置する必要があります。また、ENDMODと次のモジュール (MODULE、LIBRARY、NAME、または PROGRAMで開始されるモジュール ) の間には、コメントとリスト制御ディレクティブを除き、ソース行を含めることはできません。

ARX-1

55

Page 70: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

56

モジュール制御ディレクティブ

ディレクティブ NAME、MODULE、LIBRARY、または PROGRAMのいずれかが存在しない場合、モジュールにはソースファイルの名前と属性 programが割り当てられます。

ランタイムモデル属性の宣言

モジュール間で整合性を保つためには、RTMODEL使用します。 一緒にリンクされ、同一のランタイムモジュール属性のキーを定義するすべてのモジュールは、そのキー値に対応する値が同一であるか、特殊な *という値を持つ必要があります。 特殊値 *を使用すると、属性が未定義である場合と等価になります。 ただし、この値を使用することで、モジュールがランタイムモデルに対応していることを明示できます。

1 つのモジュールで複数のランタイムモデルを定義できます。

注 : コンパイラランタイムモデル属性は、 初がダブルアンダースコアになります。 混乱を避けるため、ユーザ定義アセンブラ属性ではこのスタイルを使用しないでください。

C/C++ コードで使用するアセンブラルーチンを記述しており、モジュールの整合性を制御したい場合は、『RX IAR C/C++ コンパイラ リファレンスガイド』を参照してください。

次の例では、以下のような条件で 3 つのモジュールが定義されます。

● MOD_1と MOD_2は、ランタイムモデル CANの値が異なるため、一緒にリンクできません。

● MOD_1と MOD_3は、ランタイムモデル RTOSの定義が同じであり、CANの定義に矛盾がないため、一緒にリンクできます。

● MOD_2と MOD_3は、ランタイムモデルの矛盾がないため、一緒にリンクできます。 値 *は、任意のランタイムモデル値に一致します。

module mod_1 rtmodel "CAN", "ISO11519" rtmodel "RTOS", "PowerPac" ; ... endmod

module mod_2 rtmodel "CAN", "ISO11898" rtmodel "RTOS", "*" ; ... endmod

module mod_3 rtmodel "RTOS", "PowerPac" ; ... end

ARX-1

IAR アセンブラ

リファレンスガイド

Page 71: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

シンボル制御ディレクティブこれらのディレクティブは、モジュール間でシンボルがどのように共有されるかを制御します。

構文

label BLOCK old_label, block_number

EXTERN symbol [,symbol] …

IMPORT symbol [,symbol] …

PUBLIC symbol [,symbol] …

PUBWEAK symbol [,symbol] …

REQUIRE symbol

label SYMBOL "C/C++_symbol" [,old_label]

パラメータ

ディレクティブ 説明

BLOCK SYMBOLディレクティブによって作成されたエイリアスに

ブロック番号を指定します。

EXTERN、IMPORT 外部シンボルをインポートします。

OVERLAY 認識されますが、無視されます。

PUBLIC 他のモジュールにシンボルをエクスポートします。

PUBWEAK 他のモジュールにシンボルをエクスポートします。複数の定義が許可されます。

REQUIRE シンボルを強制参照させます。

SYMBOL C/C++シンボルのエイリアスを作成します。

表 17: シンボル制御ディレクティブ

block_number SYMBOLディレクティブによって作成されるエイリアスのブロック番号。

C/C++_symbol エイリアスを作成する C/C++ シンボル。

label C/C++ シンボルのエイリアスとして使用するラベル。

old_label SYMBOLディレクティブによって以前に作成されたエイリアス。

symbol インポートまたはエクスポートされるシンボル。

ARX-1

57

Page 72: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

58

シンボル制御ディレクティブ

説明

他のモジュールへのシンボルのエクスポート

1 つ以上のシンボルを他のモジュールで使用できるようにするには、PUBLICを使用します。 PUBLICとして定義されたシンボルは、再配置可能または絶対であり、( 他のシンボルと同様の規則に従って ) 式の中で使用することもできます。

PUBLICディレクティブは、常に完全な 32 ビット値をエクスポートするため、8 ビットプロセッサおよび 16 ビットのプロセッサ用のアセンブラでも可能なグローバル 32 ビット定数にすることができます。 LOW、HIGH、>>、<<演算子を使用することにより、このような定数の任意の部分を 8 ビットまたは16 ビットのレジスタまたはワードに読み込むことができます。

1 つのモジュールには任意の数の PUBLIC定義シンボルを使用できます。

複数の定義があるシンボルを他のモジュールへエクスポートする

PUBWEAKは PUBLICと似ていますが、同じシンボルを複数回定義することができます。 これらの定義のいずれか 1 つのみが XLINK に使用されます。 シンボルの PUBLIC定義が含まれるモジュールが、同じシンボルの PUBWEAK定義が含まれる 1 つ以上のモジュールにリンクされている場合、XLINK は PUBLIC定義を使用します。

PUBWEAKとして定義されたシンボルは、セグメントパート内のラベルである必要があります。さらに、そのセグメントパート内で PUBLICまたは PUBWEAKとして定義されている唯一のシンボルでなければなりません。

注記 : ライブラリモジュールへのリンクは、そのモジュール内のシンボルへの参照が行われ、シンボルがまだリンクされていない場合にのみ行われます。 モジュール選択フェーズでは、PUBLIC定義と PUBWEAK定義は区別されません。 つまり、PUBLIC定義の含まれるモジュールが選択されていることを確認するためには、これを他のモジュールより前にリンクするか、そのモジュール内で他の PUBLICシンボルへの参照が行われていることを確認する必要があります。

シンボルのインポート

型が設定されていない外部シンボルをインポートするには、EXTERNまたはIMPORTを使用します。

REQUIREディレクティブにより、シンボルが参照済としてマーキングされます。 これは、シンボルへの参照を含むコードを動作させるため、このシンボルを含む segment パートを読み込む必要があるが依存関係が明確でない場合に便利です。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 73: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

スコープ C/C++ シンボルへの参照

C/C++ シンボルのエイリアスを作成するには、SYMBOLディレクティブを使用します。 C/C++ シンボルを参照するには、エイリアスを使用できます。 シンボルとエイリアスは同じスコープ内に配置する必要があります。

エイリアスにブロックスコープを用意するには、BLOCKディレクティブを使用します。

通常、SYMBOLおよび BLOCK ディレクティブはコンパイラの内部使用専用です( クラスまたは名前空間内のオブジェクトの参照時など )。 これらのディレクティブの使用方法については、C/C++ シンボルを宣言して定義し、コンパイルして、アセンブラリストファイル出力を参照してください。

次の例は、エラーメッセージを出力するサブルーチンを定義し、エントリアドレス errをエクスポートして、他のモジュールから呼び出せるようにしています。

メッセージは二重引用符に囲まれているため、文字列の後にはゼロバイトが挿入されます。

printは外部ルーチンとして定義されており、アドレスはリンク時に解決されます。

name errorMessage extern print public err rseg CODE:CODE

err bsr print dc8 "** Error **" rts

end

注 : この例はリトルエンディアンモードのみで機能します。

セグメント制御ディレクティブsegment ディレクティブは、コードとデータがどのように配置されるかを制御します。 式でディレクティブを使用するときに適用される制限については、「式の制限」(12 ページ ) を参照してください。

ディレクティブ 説明 式の制限

ALIGN ゼロが埋め込まれたバイトを挿入して、プログラ

ムロケーションカウンタをアラインメントします。

外部参照禁止

絶対

表 18: セグメント制御ディレクティブ

ARX-1

59

Page 74: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

60

セグメント制御ディレクティブ

構文

ALIGN align [,value]

ALIGNRAM align

ASEG [start]

ASEGN segment [:type], address

CODE

COMMON segment [:type] [(align)]

DATA

EVEN [value]

ODD [value]

ORG expr

RSEG segment [:type] [flag] [(align)]

ALIGNRAM プログラムロケーションカウンタをアラインメン

トします。

外部参照禁止

絶対

ASEG 絶対セグメントを開始します。 外部参照禁止

絶対

ASEGN 指定された絶対セグメントを開始します。 外部参照禁止

絶対

CODE コードセクションを開始します。 外部参照禁止

絶対

COMMON 共通セグメントを開始します。 外部参照禁止

絶対

DATA データセクションを開始します。 外部参照禁止

絶対

EVEN 偶数アドレスにプログラムカウンタをアラインメ

ントします。

外部参照禁止

絶対

ODD 奇数アドレスにプログラムカウンタをアラインメ

ントします。

外部参照禁止

絶対

ORG ロケーションカウンタを設定します。 外部参照禁止

絶対 ( 以下を参照 )

RSEG 再配置可能セグメントを開始します。 外部参照禁止

絶対

ディレクティブ 説明 式の制限

表 18: セグメント制御ディレクティブ ( 続き )

ARX-1

IAR アセンブラ

リファレンスガイド

Page 75: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

パラメータ

説明

絶対セグメントの開始

ASEGは、アセンブリの絶対モードを設定するために使用します。これはモジュール開始時のデフォルトです。

address このセグメントパートが配置されるアドレス。

align 2 の累乗。これに対してアドレスがアラインメントされます。多くの場合、0 ~ 30 の範囲です。 デフォルトのアラインメント値は 0 です。

expr ロケーションカウンタの設定対象とするアドレス。

flag NOROOT、ROOTNOROOTの場合、segment パート内のシンボルが参照されていなければ、この segment パートはリンカによって廃棄されるということを示します。 通常、起動コードと割込みベクタを除くすべての segment パートでこのフラグを設定する必要があります。 デフォルトモードは ROOT です。つまり、segmentパートは廃棄される必要があります。

REORDER、NOREORDERREORDERを使用して、リンカでセグメントパートの順序を変更できます。 所与のセグメントで、すべてのセグメントパートに対して同じ状態がこのフラグに指定されている必要があります。 デフォルトモードは NOREORDER です。つまり、セグメントパートの順序が保たれている必要があります。

SORT、NOSORTSORTの場合、リンカはセグメントパートを降順にソートします。 所与のセグメントで、すべてのセグメントパートに対して同じ状態がこのフラグに指定されている必要があります。 デフォルトモードは NOSORTです。つまり、セグメントパートはソートされません。

segment segment の名前。

start 開始アドレス。絶対セグメントの先頭で ORGディレクティブを使用するのと同じ効果があります。

type メモリタイプ。通常は CODEまたは DATAです。 また、IAR XLINK リンカでサポートされるすべてのタイプを使用できます。

value パディングに使用されるバイト値。デフォルトはゼロです。

ARX-1

61

Page 76: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

62

セグメント制御ディレクティブ

このパラメータを省略すると、 初のセグメントの開始アドレスは 0 になり、後続のセグメントは前のセグメントの 後のアドレスの後に続きます。

アセンブリモードの設定

CODEまたは DATAディレクティブが必要になるのは、ビッグエンディアンアプリケーションのみです。

コードおよびデータセクションのアセンブリモードを選択するには、CODEおよび DATAを使用します。 この情報は、リンカでビッグエンディアンアプリケーションをリンクするときに使用されます。

CODEまたは DATAディレクティブは、以下の場合に必要です。

● イメージ ( コードまたはデータ ) になるバイトを実際に生成する、コード /データ生成セグメントパート (RSEG) を起動する

● セグメントパートの途中でアセンブリモードを変更する

このディレクティブは、セグメントパートの開始後 (RSEGディレクティブの後など )、コード生成セクション ( 命令または DC宣言 ) の直前に指定する必要があります。

セグメントや extern ラベルなどの宣言に CODEまたは DATA ディレクティブは不要であり、RAP 空間の宣言時にも不要です。

ビッグエンディアンモードでは、2 つの 下位アドレスビットが RX マイクロコントローラで反転されます。 つまり、チップは 4 バイトチャンクで動作します。 アセンブリモードをコードとデータの間で切り替えるときなどにバートオーダを変更する場合、各セグメントパートの先頭が 4 バイトアラインメントのアドレスであることを確認する必要があります。これを怠ると、アラインメントエラーが発生してリンクが失敗する可能性があります。

指定された絶対セグメントの開始

addressというアドレスにある指定された絶対セグメントを開始するには、ASEGNを使用します。

このディレクティブを使用すると、セグメントのメモリタイプを指定できるというメリットがあります。

再配置可能 segment の開始

新しい segment を開始するには、RSEG を使用します。 アセンブラは別々のロケーションカウンタ ( 開始時の設定はゼロ ) をすべての segment に対して管理しています。これにより、segment やモードをいつでも自由に切り替えることができ、現在のプログラムロケーションカウンタを保存する必要はありません。

1 つのモジュールには、 大 65536 の一意で再配置可能なセグメントを定義できます。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 77: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

共通セグメントの開始

メモリ内で、名前が同じである他のモジュールの COMMONセグメントと同じ場所にデータを配置するには、COMMONを使用します。 つまり、同じ名前のすべての COMMONセグメントはメモリ内で同じ場所から開始され、互いにオーバーレイします。

オーバーレイされた実行可能コードに対して COMMONセグメントタイプを使用することはできません。 一般的な用途は、再利用可能なメモリの共通領域にあるデータを複数のさまざまなルーチンに共有させる場合などです。

COMMONセグメントに割込みベクタテーブルを設定し、複数のルーチンからアクセスできるようにすると実用的でしょう。

COMMONセグメントの 終的なサイズは、このセグメントの 大オカレンスのサイズによって決まります。 メモリ内でのロケーションは、XLINK -Zコマンドによって決まります。『IAR リンカおよびライブラリツールリファレンスガイド』を参照してください。

セグメント開始アドレスをアラインメントするには、前述のディレクティブで alignパラメータを使用します。

プログラムロケーションカウンタ (PLC) の設定

現在のセグメントのプログラムロケーションカウンタを式の値に設定するには、ORGを使用します。 絶対セグメント (ASEG) で ORGを使用する場合、パラメータ式は絶対でなければなりません。 ただし、相対セグメント (RSEG) でORGを使用する場合には、式は絶対と相対のどちらにもできます ( また、いずれの場合も、値はセグメント先頭に対して相対的なオフセットとして解釈されます )。

プログラムロケーションカウンタは、アセンブラモジュールの開始時点ではゼロに設定されています。

segment のアラインメント

指定されたアドレス境界に対してプログラムロケーションカウンタをアラインメントするには、ALIGNを使用します。 式の結果は 2 の累乗であり、これに対してプログラムカウンタがアラインメントされます。許可される範囲は0 ~ 8 です。

アラインメントは、segment 先頭に対して相対的に行われます。つまり、通常、必要な結果を得るためには、segment アラインメントは少なくともアラインメントディレクティブと同じ大きさでなければなりません。

ALIGNでは、ゼロ / 埋め込みバイトを 大 255 まで挿入することによってアラインメントを行います。 EVENディレクティブはプログラムカウンタを偶数アドレスにアラインメントし (ALIGN 1と同等 )、ODDディレクティブはプログラムカウンタを奇数アドレスにアラインメントします。 埋め込みのバイト値は 0 ~ 255 の範囲内である必要があります。

ARX-1

63

Page 78: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

64

セグメント制御ディレクティブ

プログラムロケーションカウンタをインクリメントすることによってアラインメントするには、ALIGNRAMを使用します。データは生成されません。 式の範囲は 0 ~ 30 です。

絶対セグメントの開始

以下の例では、リセットベクタを mainのアドレスに設定します。 RESET で、チップは mainのアドレスに PCを設定します。

module resetVector extern main

aseg org 0xfffffffc ; Start the segment at the ; reset vector address. data ; select data mode ; (required for big-endian)reset dc32 main ; Point the reset vector to ; the externally defined main ; label. end

アセンブリモードの設定

以下の例では、アセンブラはまず、ビッグエンディアンデータとリトルエンディアンコードを利用して、期待されるイメージを作成します。 続いて、リンカはコードが含まれる各 4 バイトワードをバイトスワップします。 DC宣言されたすべてのデータはそのまま残されます。 後に、イメージがチップメモリに読み込まれると、アドレスビットが反転されているため、それぞれのロングワードは再びスワップされます。 これにより、コードはリトルエンディアンになり、データはビッグエンディアンになります。

rseg DATA24:DATA:NOROOT public varsvars: ; does not need a DATA directive, ds24 ; as it contains no image bytes

rseg CODE24:CODE:NOROOT(2) ; 4-byte aligned public tab, tab2 public foo, main extern dada ; extern, does not need a DATA ; directive datatab: dc32 dada ; declares 4 bytes, so we are still ; aligned

ARX-1

IAR アセンブラ

リファレンスガイド

Page 79: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

code ; tells the linker to start swapping ; bytesfoo: mov.l #tab:24,R1 mov.l [R1],R1 mov.l [R1],R1 rts align 2 ; align to an even 4-byte address data ; tells the linker to stop swapping ; bytestab2: dc16 0x1234 dc8 0x56 align 2 ; align to an even 4-byte address code ; tells the linker to start swapping ; bytesmain: bsr foo rts end

再配置可能の開始 segment

以下の例では、 初の RSEGディレクティブに続くデータは、TABLEという再配置可能な segment に配置されます。

2 番目の RSEGディレクティブに続くコードは、codeという再配置可能なsegment に配置されます。

module calculate extern operator extern addOperator, subOperator

rseg TABLE:CONST(8) dataoperatorTable: dc8 addOperator, subOperator

rseg CODE:CODE codecalculate mov.l #operator,R1 mov.l [R1],R1 mov.l #operatorTable,R2 cmp [R2].ub,R1 beq add add #1,R2 cmp [R2].ub,R1 beq sub

ARX-1

65

Page 80: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

66

セグメント制御ディレクティブ

;... rts

add ;... rtssub ;... rts

end

共通セグメントの開始

以下の例では、変数を含む 2 つの共通セグメントが定義されます。

name common1 common MYDATA datacount dc32 1 endmod

name common2 common MYDATA dataup ds8 1 ds8 2down ds8 1 end

共通セグメントは名前が同じ (data) なので、変数 upおよび downは 4 バイト変数 countの 初と 後のバイトとして、メモリ内の同じロケーションを参照します。

segment のアラインメント

以下の例では、再配置可能 segment を開始し、偶数アドレスに移動し、データを追加します。 続いて、64 バイト境界へのアラインメントを行ってから、64 バイトテーブルを作成します。

name alignment rseg DATA:DATA ; Start a relocatable data segment. data even ; Ensure it is on an even boundary.target dc16 1 ; target and best will be on anbest dc16 1 ; even boundary. align 6 ; Now, align to a 64-byte boundary,results ds8 64 ; and create a 64-byte table. end

ARX-1

IAR アセンブラ

リファレンスガイド

Page 81: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

値割当てディレクティブこれらのディレクティブは、シンボルへの値の割当てに使用します。

構文

label = expr

label ASSIGN expr

label DEFINE const_expr

label EQU expr

LIMIT expr, min, max, message

label SET expr

label VAR expr

パラメータ

説明

一時値の定義

マクロ変数で使用するなどの目的で再定義が必要になる可能性があるシンボルを定義するには、ASSIGN、SET、または VARを使用します。 ASSIGN、SET、または VARで定義されたシンボルを PUBLICとして宣言することはできません。

ディレクティブ 説明

=、EQU モジュールに対してローカルな永久値を割り当てます。

ASSIGN、SET、VAR 一時値を割り当てます。

DEFINE ファイル全体で有効な値を定義します。

LIMIT 制限に対して値をチェックします。

表 19: 値割当てディレクティブ

const_expr シンボルに割り当てられる定数値。

expr シンボルに割り当てられる値またはテスト対象の値。

label 定義されるシンボル。

message exprが範囲外の場合に出力されるテキストメッセージ。

min、max exprに対して許可される 小値および 大値。

ARX-1

67

Page 82: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

68

値割当てディレクティブ

ローカルな永久値の定義

数値またはオフセットを指定するローカルシンボルを作成するには、EQUまたは =を使用します。 シンボルはそれが定義されたモジュール内のみで有効ですが、PUBLICディレクティブを使用すれば (PUBWEAKディレクティブは不可 )、他のモジュールでも使用できるようになります。

他のモジュールからシンボルをインポートするには、EXTERN使用します。

グローバルな永久値の定義

ディレクティブが含まれるモジュールや、同じソースファイル内でそのモジュールの後に続くすべてのモジュールで認識されるシンボルを定義するには、DEFINEを使用します。 DEFINEディレクティブがモジュールの外側に配置されていれば、シンボルは同じソースファイル内でそのディレクティブの後に続くすべてのモジュールで認識されるようになります。

DEFINEによって値が提供されるシンボルは、PUBLICディレクティブによって他のファイル内のモジュールでも使用可能にすることができます。

DEFINEによって定義されたシンボルは、同じファイル内に再定義できます。 また、定義されたシンボルに割り当てられた式は定数値でなければなりません。

シンボル値のチェック

式が指定範囲内であることを確認するには、LIMITを使用します。 範囲外の値が式に割り当てられている場合、エラーメッセージが表示されます。

式に外部参照が含まれている場合、式の解決直後 ( リンク中 ) にチェックが行われます。 min式と max 式には、前方または外部のラベルへの参照を含めることはできません。つまり、これらは検出時に解決される必要があります。

シンボルの再定義

以下の例では、SETを使用して consというシンボルをループに再定義し、3 の累乗値を順に 4 つ含むテーブルを生成します。

name tablecons set 1

; Generate table of powers of 3.cr_tabl macro times dc32 conscons set cons * 3 if times > 1 cr_tabl times - 1 endif

ARX-1

IAR アセンブラ

リファレンスガイド

Page 83: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

endm

rseg CODE:CODE datatable cr_tabl 4 end

これにより、以下のコードが生成されます。

1 name table

2 000001 cons set 1

3 ; Generate table of powers of 3.

11 000000 rseg CODE:CODE

12 000000 data

13 000000 table cr_tabl 4

13.1 000000 01000000 dc32 cons

13.2 000003 cons set cons * 3

13.3 000004 if 4 > 1

13.4 000004 cr_tabl 4 - 1

13.5 000004 03000000 dc32 cons

13.6 000009 cons set cons * 3

13.7 000008 if 4 - 1 > 1

13.8 000008 cr_tabl 4 - 1 - 1

13.9 000008 09000000 dc32 cons

13.10 00001B cons set cons * 3

13.11 00000C if 4 - 1 - 1 > 1

13.12 00000C cr_tabl 4 - 1 - 1 - 1

13.13 00000C 1B000000 dc32 cons

13.14 000051 cons set cons * 3

13.15 000010 if 4 - 1 - 1 - 1 > 1

13.16 000010 endif

13.17 000010 endif

13.18 000010 endif

13.19 000010 endif

14 000010 end

ローカルシンボルとグローバルシンボルの使用

以下の例では、モジュール add1に定義されたシンボル lValはそのモジュールに対してローカルです。モジュール add2には、同じ名前の別のシンボルが定義されています。 DEFINEディレクティブは、ファイル内の任意の場所で使用する gValを宣言するために使用されています。

name add1 public add12gVal define 0x20 ; Definition of a permanent ; global value.lVal equ 12 ; Definition of a local value.

ARX-1

69

Page 84: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

70

条件付きアセンブリディレクティブ

rseg CODE:CODE codeadd12 mov.l #gVal,R1 adc #lVal,R1 rts endmod

name add2 public add20lVal equ 20 ; Redefinition of local value.

rseg CODE:CODE codeadd20 mov.l #gVal,R1 adc #lVal,R1 rts end

モジュール add1に定義されているシンボル gValは、モジュール add2でも使用できます。

LIMIT ディレクティブの使用

以下の例では、speedという変数の値を設定し、アセンブル時にこれをチェックして、範囲が 10 ~ 30 であることを確認します。 これは、コンパイル時に speedが頻繁に変更される場合に便利ですが、定義された範囲外の値により、予期せぬ動作が起こる可能性があります。

module setLimitspeed set 23 limit speed,10,30,"Speed is out of range!" end

条件付きアセンブリディレクティブこれらのディレクティブにより、ソースコードの選択的なアセンブリを論理的に制御することができます。 式でディレクティブを使用するときに適用される制限については、「式の制限」(12 ページ ) を参照してください。

ディレクティブ 説明 式の制限

ELSE 条件が偽であった場合に命令をアセンブルします。

ELSEIF IFENDIFブロックに新しい条件を指定します。 前方参照禁止

外部参照禁止

絶対

固定

表 20: 条件付きアセンブリディレクティブ

ARX-1

IAR アセンブラ

リファレンスガイド

Page 85: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

構文

ELSE

ELSEIF condition

ENDIF

IF condition

パラメータ

説明

アセンブリ時にアセンブリプロセスを制御するには、IF、ELSE、およびENDIFディレクティブを使用します。 IFディレクティブの後の条件が真ではない場合、ELSEまたは ENDIFディレクティブが検出されるまで、後続の命令はコードを一切生成しません ( つまり、アセンブルも構文チェックも行われません )。

IFディレクティブの後に新しい条件を指定するには、ELSEIF を使用します。 条件付きアセンブリディレクティブはアセンブリ内の任意の場所で使用できますが、マクロ処理と一緒に使用すると も有用です。

(ENDを除く ) すべてのアセンブラディレクティブおよびファイルのインクルードは、条件付きディレクティブで無効にできます。 各 IFディレクティブは ENDIFディレクティブで終了する必要があります。 ELSE ディレクティブは

ENDIF IFブロックを終了します。

IF 条件が真であった場合に命令をアセンブルします。 前方参照禁止

外部参照禁止

絶対

固定

condition 以下のいずれかです。

絶対式 式に、前方参照または外部参照を含めることはできず、ゼロ以外の値はすべて真と見なされます。

string1==string2 string1と string2の長さと内容が同じである場合に、この条件は真となります。

string1!=string2 string1と string2の長さまたは内容が異なる場合に、この条件は真となります。

ディレクティブ 説明 式の制限

表 20: 条件付きアセンブリディレクティブ ( 続き )

ARX-1

71

Page 86: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

72

条件付きアセンブリディレクティブ

任意指定であり、使用する場合は、IF...ENDIFブロック内に指定する必要があります。 IF...ENDIFブロックと IF...ELSE...ENDIFブロックは、任意のレベルまでネストできます。

以下の例では、マクロを使用して定数を直接ページメモリロケーションへ追加しています。

addMem macro loc,val ; loc is a memory location, ; and val is an 8-bit value ; to add to that location. if val = 0 ; Do nothing. elseif val < 16 mov.l #loc,R1 mov.l [R1],R2 add #val,R2 mov.l R2,[R1] else mov.l #loc,R1 mov.l [R1],R2 add #val,R2,R2 mov.l R2,[R1] endif endm

module addWithMacro rseg CODE:CODE code

addSome addMem 0xa0,0 ; Add 0 to memory location 0xa0. addMem 0xa0,1 ; Add 1 to the same address. addMem 0xa0,2 ; Add 2 to the same address. addMem 0xa0,3 ; Add 3 to the same address. addMem 0xa0,47 ; Add 47 to the same address. rts end

ARX-1

IAR アセンブラ

リファレンスガイド

Page 87: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

マクロ処理ディレクティブこれらのディレクティブを使用してマクロを定義できます。 式でディレクティブを使用するときに適用される制限については、「式の制限」(12 ページ ) を参照してください。

構文

_args

ENDM

ENDR

EXITM

LOCAL symbol [,symbol] …

name MACRO [argument] [,argument] …

REPT expr

REPTC formal,actual

REPTI formal,actual [,actual] …

パラメータ

ディレクティブ 説明 式の制限

_args マクロに受け渡される引数の数に設定されます。

ENDM マクロ定義を終了します。

ENDR 繰返し構造を終了します。

EXITM マクロが終了する前に抜け出します。

LOCAL マクロに対してローカルなシンボルを作成します。

MACRO マクロを定義します。

REPT 命令を、指定回数だけ繰り返します。 前方参照禁止

外部参照禁止

絶対

固定

REPTC 文字を繰り返し、置換します。

REPTI テキストを繰り返し、置換します。

表 21: マクロ処理ディレクティブ

actual 置換される文字列。

argument シンボル引数名

expr 式

ARX-1

73

Page 88: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

74

マクロ処理ディレクティブ

説明

マクロとは、1 行以上のアセンブラソース行のブロックを表現するユーザ定義シンボルです。 マクロを定義すると、アセンブラディレクティブやアセンブラニーモニックのようにプログラム内でこのマクロを使用できるようになります。

アセンブラがマクロを検出すると、マクロの定義が検索され、ソースファイルの当該位置にそのマクロが含まれているかのように、マクロに記述されている行が挿入されます。

マクロは単純なテキスト置換を効率的に行います。マクロにパラメータを指定することで、置換対象を制御することができます。

マクロの定義

マクロの定義には以下の文を使用します。

name MACRO [argument] [,argument] …

ここで、nameはマクロに対して使用する名前、argumentはマクロの展開時にマクロに受け渡す値の引数です。

たとえば、以下のように指定すると errMacというマクロを定義できます。

errMac macro text extern abort bsr abort dc8 text,0 endm

注 : この例はリトルエンディアンモードのみで機能します。

このマクロでは、パラメータ textを使用して abortというルーチンに対してエラーメッセージを設定しています。 このマクロは、たとえば以下のような文で呼び出します。

errMac 'Disk not ready'

アセンブラはこれを以下のように展開します。

bsr abort dc8 'Disk not ready',0

1 つ以上の引数から成るリストを省略すると、マクロを呼び出すときにユーザが指定する引数は \1~ \9および \A~ \Zと呼ばれます。

formal actualの各文字 (REPTC) または各 actual(REPTI) で置換される引数

name マクロの名前

symbol マクロに対してローカルにするシンボル

ARX-1

IAR アセンブラ

リファレンスガイド

Page 89: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

そのため、前の例は以下のように記述できます。

errMac macro text extern abort bsr abort dc8 \1,0 endm

マクロが終了する前にマクロから抜け出すには EXITMディレクティブを使用します。

EXITMは、REPT...ENDR、 REPTC...ENDR、REPTI...ENDRの各ブロックの内部で使用できません。

マクロに対してローカルなシンボルを作成するには、LOCALを使用します。 LOCALディレクティブは、シンボルの使用前に使用する必要があります。

マクロを展開するたびに、ローカルシンボルの新しいインスタンスが LOCALディレクティブによって作成されます。 したがって、繰返しマクロ内でローカルシンボルを使用することができます。

注記 : マクロは再定義することができます。

特殊文字の受渡し

マクロ呼出し内で引用符 < と >をペアで使用することにより、コンマや空間が含まれるマクロ引数を強制的に 1 つの引数として解釈させることができます。

ldaMac macro op mov.l op endm

マクロは、マクロ引用符を使用して呼び出すことができます。

ldaMac <0x19a0,R1>

マクロ引用符は、コマンドラインオプション -Mを使用して再定義できます。「-M」(27 ページ ) を参照してください。

定義済マクロシンボル

シンボル _argsには、マクロに引き渡される引数の数を設定します。 以下の例は、_argsの使用方法を示します。

fill macro if _args == 2 rept \2 dc8 \1 endr else

ARX-1

75

Page 90: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

76

マクロ処理ディレクティブ

dc8 \1 endif endm

module fill rseg CODE:CODE data fill 3 fill 4, 3 end

これにより、以下のコードが生成されます。

10 module fill 11 000000 rseg CODE:CODE 12 000000 code 13 000000 fill 3 13.1 000000 if _args == 2 13.2 000000 else 13.3 000000 03 dc8 3 13.4 000001 endif 14 000001 fill 4, 3 14.1 000001 if _args == 2 14.2 000001 rept 3 14.3 000001 04 dc8 4 14.4 000002 04 dc8 4 14.5 000003 04 dc8 4 14.6 000004 endr 14.7 000004 else 14.8 000004 endif 15 000004 end

マクロの処理方法

マクロプロセスは、以下の 3 つのフェーズで構成されます。

1 アセンブラはマクロ定義をスキャンし、保存します。 MACROと ENDM の間のテキストは保存されますが、構文はチェックされません。

2 マクロ呼び出しによりアセンブラはマクロプロセッサ ( エクスパンダ ) を起動します。 マクロエクスパンダは、( マクロ内に存在しない場合 ) ソースファイルからのアセンブラ入力ストリームをマクロエクスパンダからの出力に切り替えます。 マクロエクスパンダは、要求されたマクロ定義からの入力を取得します。

マクロエクスパンダは、ソースレベルでのテキスト置換のみを処理するため、アセンブラシンボルを認識できません。 呼び出されたマクロ定義からの行がアセンブラに受け渡される前に、エクスパンダはシンボルマクロ引数のすべてのオカレンスの行をスキャンし、展開引数に置換します。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 91: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

3 その後、展開された行は、その他すべてのアセンブラソース行と同様に処理されます。 アセンブラへの入力ストリームは、現在のマクロ定義のすべての行が読み込まれるまで、マクロプロセッサからの出力となります。

繰返し文

同じ命令ブロックを複数回アセンブルするには、REPT...ENDR構造を使用します。 exprの評価結果が 0 である場合、何も生成されません。

文字列の各文字に対して 1 回だけ命令ブロックをアセンブルするには、REPTCを使用します。 文字列にコンマが含まれる場合、引用符で囲む必要があります。

特別な意味があるのは二重引用符のみであり、繰返し使用される文字を囲むためだけに使用されます。 単一引用符には特別な意味はなく、通常の文字として処理されます。

一連の文字列内の各文字列に対して 1 回だけ命令ブロックをアセンブルするには、REPTIを使用します。 文字列にコンマが含まれる場合、引用符で囲む必要があります。

ここでは、マクロによってアセンブラプログラミングを簡便化する方法の例をいくつか示します。

インラインコーディングによる効率化

時間が重要なコードでは、ルーチンをインラインコーディングすることによりサブルーチンの呼出しとリターンのオーバヘッドを避けることで、効率化を図ることができます。 これはマクロを使用すると便利です。

以下の例では、バッファからポートへバイトが出力されます。

name ioBufferSubroutine public copyBufferptbd equ 0x0002 ; Definition of the port B ; data register. rseg DATA16:DATA data

buffer ds8 256

rseg CODE:CODE codecopyBuffer mov.l #buffer,R1 ; Initialize the loop counter. mov.l #ptbd,R3 mov.l #256,R4loop mov.b [R1+],R2 mov.b R2,[R3] sub #1,R4

ARX-1

77

Page 92: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

78

マクロ処理ディレクティブ

bne loop ; Have we copied 256 bytes? rts

end

メインプログラムではこのルーチンを以下のように呼び出します。

doCopy bsr copyBuffer

効率化のために、マクロを使用した再コーディングできます。

name ioBufferInlineptbd equ 0x0002 ; Definition of the port B ; data register. rseg DATA16:DATA data

buffer ds8 256

copyBuffer macro local loop mov.l #buffer,R1 ; Initialize the loop counter. mov.l #ptbd,R3 mov.l #256,R4loop mov.b [R1+],R2 mov.b R2,[R3] sub #1,R4 bne loop ; Have we copied 256 bytes? endm

rseg CODE:CODE code copyBuffer end

loopラベルをマクロに対してローカルにするために、LOCALディレクティブが使用されています。さもなければ、loopラベルは既に存在しているため、マクロが 2 回使用されるとエラーが生成されます。

REPTC および REPTI の使用

以下の例は、文字列内の各文字をプロットするために、サブルーチン plotへの一連の呼出しをアセンブルしています。

name reptc extern plotc rseg CODE:CODE code

ARX-1

IAR アセンブラ

リファレンスガイド

Page 93: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

banner reptc chr, "Welcome" mov.l #'chr',R1 bsr plotc endr end

これにより、以下のコードが生成されます。

1 name reptc

2 000000 extern plotc

3 000000 rseg CODE:CODE

4 000000 code

5 000000 banner reptc chr, "Welcome"

5.1 000000 FB1657 mov.l #'W',R1

5.2 000003 05...... bsr plotc

5.3 000007 FB1665 mov.l #'e',R1

5.4 00000A 05...... bsr plotc

5.5 00000E FB166C mov.l #'l',R1

5.6 000011 05...... bsr plotc

5.7 000015 FB1663 mov.l #'c',R1

5.8 000018 05...... bsr plotc

5.9 00001C FB166F mov.l #'o',R1

5.10 00001F 05...... bsr plotc

5.11 000023 FB166D mov.l #'m',R1

5.12 000026 05...... bsr plotc

5.13 00002A FB1665 mov.l #'e',R1

5.14 00002D 05...... bsr plotc

5.15 000031 endr

9 000031 end

以下の例では、REPTIを使用して複数のメモリロケーションをクリアしています。

name repti extern base, count, init rseg CODE:CODE code

banner repti adds, base, count, init mov.l #adds,R1 mov.l #0,[R1] endr

end

これにより、以下のコードが生成されます。

1 name repti

2 000000 extern base, count, init

3 000000 rseg CODE:CODE

ARX-1

79

Page 94: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

80

リスト制御ディレクティブ

4 000000 code

5 000000 banner repti adds, base, count, init

5.1 000000 FB12........ mov.l #base,R1

5.2 000006 F81600 mov.l #0,[R1]

5.3 000009 FB12........ mov.l #count,R1

5.4 00000F F81600 mov.l #0,[R1]

5.5 000012 FB12........ mov.l #init,R1

5.6 000018 F81600 mov.l #0,[R1]

5.7 00001B endr

9 00001B end

リスト制御ディレクティブこれらのディレクティブは、アセンブラリストファイルを制御します。

注 : ディレクティブ COL、LSTPAGE、PAGE、PAGSIZは、下位互換性のために保持されており、認識されますが処理は行われません。

構文

LSTCND{+|-}

LSTCOD{+|-}

LSTEXP{+|-}

LSTMAC{+|-}

LSTOUT{+|-}

LSTREP{+|-}

LSTXRF{+|-}

ディレクティブ 説明

LSTCND 条件付きアセンブラリストを制御します。

LSTCOD 複数行から成るコードのリストを制御します。

LSTEXP マクロで生成された行のリストを制御します。

LSTMAC マクロ定義のリストを制御します。

LSTOUT アセンブリリスト出力を制御します。

LSTREP 繰返しディレクティブで生成された行のリストを制御します。

LSTXRF クロスリファレンステーブルを生成します。

表 22: リスト制御ディレクティブ

ARX-1

IAR アセンブラ

リファレンスガイド

Page 95: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

説明

リストのオン / オフ切り替え

エラーメッセージを除くすべてのリスト出力を無効にするには、LSTOUT-を使用します。 このディレクティブは、他のどのリスト制御ディレクティブよりも優先されます。

デフォルトは LSTOUT+です。この場合、出力がリストされます ( リストファイルが指定されていない場合 )。

条件付きコードと文字列のリスト

前の条件付き文 IFによって無効にされていないアセンブリ部分のみのために、アセンブラにソースコードを強制的にリストさせるには、LSTCND+を使用します。

デフォルト設定は LSTCND-であり、すべてのソース行がリストされます。

必要に応じて、ソース行に対して複数行から成るコードをリストさせるには、LSTCOD+を使用します。これにより、長い ASCII 文字列は複数行に出力されます。

デフォルト設定は LSTCOD-です。この場合、出力コードのリストが、ソース行に対してコードの 1 行目のみに制限されます。

LSTCNDおよび LSTCODディレクティブを使用しても、コードの生成には影響はありません。

マクロのリストの制御

マクロで生成された行のリストを無効にするには、LSTEXP-を使用します。 デフォルトは LSTEXP+であり、マクロで生成されたすべての行がリストされます。

マクロ定義をリストするには、LSTMAC+を使用します。 デフォルトは LSTMAC-であり、マクロ定義のリストが無効になります。

生成された行のリストを制御します。

ディレクティブ REPT、REPTC、REPTIによって生成された行のリストをオフにするには LSTREP-を使用します。

デフォルトは LSTREP+であり、生成された行がリストされます。

クロスリファレンステーブルの生成

現在のモジュールのアセンブラリストの 後にクロスリファレンステーブルを生成するには、LSTXRF+を使用します。 このテーブルは、値と行番号、およびシンボルの型を示します。

デフォルトは LSTXRF-であり、クロスリファレンステーブルは生成されません。

ARX-1

81

Page 96: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

82

リスト制御ディレクティブ

リストのオン / オフ切り替え

プログラム内のデバッグされた部分のリストを無効にするには、以下のように指定します。

lstout- ; This section has already been debugged. lstout+ ; This section is currently being debugged. end

条件付きコードと文字列のリスト

以下の例は、IFディレクティブによって無効にされたサブルーチンの呼出しを、LSTCND+がどのように非表示にするのかを示します。

name lstcndTest extern print rseg FLASH:CODE code

debug set 0begin if debug bsr print endif

lstcnd+begin2 if debug bsr print endif

end

これにより、以下のリストが生成されます。

1 name lstcndTest

2 000000 extern print

3 000000 rseg FLASH:CODE

4 000000 code

5 000000 debug set 0

6 000000 begin if debug

7 bsr print

8 000000 endif

9 lstcnd+

10 000000 begin2 if debug

12 000000 endif

13 000000 end

ARX-1

IAR アセンブラ

リファレンスガイド

Page 97: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

マクロのリストの制御

以下の例は、LSTMACと LSTEXP の効果を示します。

name lstmacTest extern memLoc rseg FLASH:CODE code

dec2 macro arg mov.l #arg,R1 mov.l [R1],R2 sub #2,R2 mov.l R2,[R1] endm

lstmac+inc2 macro arg mov.l #arg,R1 mov.l [R1],R2 add #2,R2 mov.l R2,[R1] endm

begin dec2 memLoc lstexp- inc2 memLoc rts

; Restore default values for; listing control directives.

lstmac- lstexp+

end begin end

これにより、以下の出力が生成されます。

1 name lstmacTest

2 000000 extern memLoc

3 000000 rseg FLASH:CODE

4 000000 code

11 lstmac+

12 inc2 macro arg

13 mov.l #arg,R1

14 mov.l [R1],R2

15 add #2,R2

ARX-1

83

Page 98: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

84

C 形式のプリプロセッサディレクティブ

16 mov.l R2,[R1]

17 endm

18 000000 begin dec2 memLoc

18.1 000000 FB12........ mov.l #memLoc,R1

18.2 000006 EC12 mov.l [R1],R2

18.3 000008 6022 sub #2,R2

18.4 00000A E312 mov.l R2,[R1]

19 lstexp-

20 00000C inc2 memLoc

21 000018 02 rts

22 ; Restore default values for

23 ; listing control directives.

24 lstmac-

25 lstexp+

26 000019 end

C 形式のプリプロセッサディレクティブ以下の C 言語プリプロセッサディレクティブを使用できます。

ディレクティブ 説明

#define プリプロセッサシンボルに値を割り当てます。

#elif #if...#endifブロックに新しい条件を導入します。

#else 条件が偽であった場合に命令をアセンブルします。

#endif #if、#ifdef、または #ifndefブロックを終了させます。

#error エラーを生成します。

#if 条件が真であった場合に命令をアセンブルします。

#ifdef プリプロセッサシンボルが定義されている場合に命令をアセン

ブルします。

#ifndef プリプロセッサシンボルが定義されていない場合に命令をアセ

ンブルします。

#include ファイルをインクルードします。

#line デバッグ情報内のソース参照を変更します。

#pragma 拡張機能を制御します。 サポートされる #pragmaディレク

ティブについては、「プラグマディレクティブ」の章で説明し

ています。

#undef プリプロセッサシンボルの定義を取り消します。

表 23: C 形式のプリプロセッサディレクティブ

ARX-1

IAR アセンブラ

リファレンスガイド

Page 99: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

構文

#define symbol text

#elif condition

#else

#endif

#error "message"

#if condition

#ifdef symbol

#ifndef symbol

#include {"filename" | <filename>}

#line line-no {"filename"}

#undef symbol

パラメータ

説明

アセンブラ言語と C 形式のプリプロセッサディレクティブを混在させないでください。 これらは概念的に異なる言語です。アセンブラディレクティブは Cプリプロセッサ言語の一部として受け入れられない場合があるため、これらを混在させると、予期しない動作の原因となる可能性があります。

プリプロセッサディレクティブは、他のディレクティブの前に処理されます。 たとえば、以下のような矛盾を避けてください。

redef macro ; Avoid the following!#define \1 \2 endm

これは、\1と\2というマクロ引数は前処理フェーズで使用できないためです。

condition 絶対式 式に、アセンブララベルまたはシンボルを含めることは一切できず、ゼロ以外の値はすべて真と見なされます。

filename インクルードされるか参照されるファイルの名前。

line-no ソース行番号。

message 表示されるテキスト。

symbol 定義、定義取消し、またはテストされるプリプロセッサシンボル。

text 割り当てられる値。

ARX-1

85

Page 100: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

86

C 形式のプリプロセッサディレクティブ

プリプロセッサシンボルの定義と定義取消し

プリプロセッサシンボルを定義するには、#defineを使用します。

#define symbol value

シンボルの定義を取り消すには #undefを使用します。その結果、定義されていないようになります。

条件付きプリプロセッサディレクティブ

アセンブリ時にアセンブリプロセスを制御するには、#if...#else...#endifディレクティブを使用します。 #ifディレクティブの後の条件が真ではない場合、#endifまたは #else ディレクティブが検出されるまで、後続の命令はコードを一切生成しません ( つまり、アセンブルも構文チェックも行われません )。

(ENDを除く ) すべてのアセンブラディレクティブおよびファイルのインクルードは、条件付きディレクティブで無効にできます。 各 #ifディレクティブは #endifディレクティブで終了する必要があります。 #elseディレクティブは任意指定であり、使用する場合は、#if...#endifブロック内に指定する必要があります。

#if...#endifブロックと #if...#else...#endifブロックは、任意のレベルまでネストできます。

シンボルが定義されている場合に限り、次の #elseまたは #endifディレクティブまで命令をアセンブルするには、#ifdefを使用します。

シンボルが定義されていない場合に限り、次の #elseまたは #endifディレクティブまで命令をアセンブルするには、#ifndefを使用します。

ソースファイルのインクルード

指定時点でファイルの内容をソースファイルに挿入するには、#includeを使用します。 ファイル名は二重引用符内または角括弧内に指定できます。

アセンブラの #includeファイル検索手順の詳細を以下に示します。

● #includeファイルの名前が絶対パスの場合は、そのファイルが開きます。

● 以下のように #includeファイルの名前が角括弧で囲まれている場合:#include <iorx610.h>

以下のディレクトリでインクルード対象ファイルが検索されます。

1 -Iオプションで指定されるディレクトリ。指定順に検索されます。

2 ARX_INC環境変数で指定されるディレクトリ ( 設定されている場合 )。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 101: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

● 以下のように #includeファイルの名前が二重引用符で囲まれている場合:#include "vars.h"

#include文が記述されているソースファイルのあるディレクトリが検索され、その後、角括弧で囲まれたファイル名の場合と同じ手順が実行されます。

#includeファイルが入れ子になっている場合は、 後にインクルードされたファイルのあるディレクトリから検索が開始され、上位方向に各インクルードファイルの検索が繰り返され、 後にソースファイルのディレクトリが検索されます。

RX 用 IAR アセンブラで用意されているヘッダファイルは角括弧で、アプリケーション用のヘッダファイルは二重引用符で囲んでください。

エラー表示

ユーザ定義テストなどでアセンブラに強制的にエラーを生成させるには、#errorを使用します。

C 形式のプリプロセッサディレクティブでのコメント

定義文でコメントを記述するには、以下の形式を使用します。

● コメントセクションには、C 形式のコメント区切り文字 /* ... */を使用します。

● 残りの行をコメントとしてマーキングするには、C++ コメント区切り文字//を使用します。

定義された文の中でアセンブラコメントを使用すると、予期しない動作をする可能性があるため、使用しないでください。

以下の式では、コメント文字が #defineによって保護されているため、評価結果は 3 となります。

#define x 3 ; This is a misplaced comment.

module misplacedComment1expression equ x * 8 + 5 ;... end

以下の例は、C 形式のプリプロセッサでアセンブラコメントを使用すると発生する可能性のある問題の一部を示します。

#define five 5 ; This comment is not OK.#define six 6 // This comment is OK.#define seven 7 /* This comment is OK. */

DC32 five, 11, 12; The previous line expands to:

ARX-1

87

Page 102: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

88

C 形式のプリプロセッサディレクティブ

; "DC32 5 ; This comment is not OK., 11, 12"

DC32 six + seven, 11, 12; The previous line expands to:; "DC32 6 + 7, 11, 12"

end

ソース行番号の変更

デバッグ情報で使用されるソース行番号およびソースファイル名を変更するには、#lineディレクティブを使用します。 #lineは、#lineディレクティブに続く行で処理されます。

条件付きプリプロセッサディレクティブの使用

以下の例は、tweakと adjustというラベルを定義します。 adjustが定義されている場合、レジスタ 16は adjustに応じた数値だけデクリメントされます( この場合 30)。

module calibrate extern calibrationConstant rseg CODE:CODE code

#define tweak 1#define adjust 1

calibrate mov.l #calibrationConstant,R1 mov.l [R1],R2#ifdef tweak#if adjust==1 sub #4,R2#elif adjust==2 add #-20,R2,R2#elif adjust==3 add #-30,R2,R2#endif#endif /* ifdef tweak */ mov.l R2,[R1] rts

end

ARX-1

IAR アセンブラ

リファレンスガイド

Page 103: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

ソースファイルのインクルード

以下の例では、ファイル定義マクロをソースファイルにインクルードするために #includeが使用されます。 たとえば、次のようなマクロを Macros.incに定義できます。

; Exchange registers a and b.; Use the stack for temporary storage.

xch macro a,b push.l \1 push.l \2 pop \1 pop \2 endm

続いて、次の例のように、#includeを使用してマクロ定義をインクルードできます。

program includeFile rseg CODE:CODE code

; Standard macro definitions#include "Macros.inc"

xchRegs xch r1,r2 xch r3,r1 rts

end

データ定義ディレクティブまたは割当てディレクティブこれらのディレクティブは、値を定義するか、メモリを予約します。 式でディレクティブを使用するときに適用される制限については、「式の制限」(12 ページ ) を参照してください。

ディレクティブ 説明

DC8 文字列を含め 8 ビットの定数を生成します。

DC16 16 ビットの定数を生成します。

DC24 24 ビットの定数を生成します。

DC32 32 ビットの定数を生成します。

DC64 64 ビットの定数を生成します。

表 24: データ定義ディレクティブまたは割当てディレクティブ

ARX-1

89

Page 104: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

90

データ定義ディレクティブまたは割当てディレクティブ

構文

DC8 expr [,expr] …

DC16 expr [,expr] …

DC24 expr [,expr] …

DC32 expr [,expr] …

DC64 expr [,expr] …

DF32 value [,value] …

DF64 value [,value] …

DQ15 value [,value] …

DQ31 value [,value] …

DS8 count

DS16 count

DS24 count

DS32 count

DS64 count

パラメータ

* DC64の場合、exprは再配置可能または外部にはできません。

DF32 32 ビットの浮動小数点定数を生成します。

DF64 64 ビットの浮動小数点定数を生成します。

DQ15 16 ビットの小数定数を生成します。

DQ31 32 ビットの小数定数を生成します。

DS8 8 ビット整数に空間を割り当てます。

DS16 16 ビット整数に空間を割り当てます。

DS24 24 ビット整数に空間を割り当てます。

DS32 32 ビット整数に空間を割り当てます。

DS64 64 ビット整数に空間を割り当てます。

count 予約する要素の数を指定する有効な絶対式。

expr 有効な絶対式、再配置可能式、外部式、または ASCII 文字列。 ASCII 文字列は、ディレクティブで示唆されるデータサイズの倍数までゼロが埋め込まれます。 二重引用符で囲まれた文字列はゼロで終了します。*

value 有効な絶対式または浮上小数点定数。

ディレクティブ 説明

表 24: データ定義ディレクティブまたは割当てディレクティブ ( 続き )

ARX-1

IAR アセンブラ

リファレンスガイド

Page 105: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

説明

定数を作成するには、DC8、DC16、DC24、DC32、DC64、DF32、または DF64を使用します。つまり、バイト領域には、定数に十分な大きさがあります。

未初期化バイト数を予約するには、DS8、DS16、DS24、DS32、または DS64を使用します。

ルックアップテーブルの生成

以下の例では、8 ビットデータの定数テーブルが生成されます。このテーブルには call命令を介してアクセスでき、合計に加算されます。

module sumTableAndIndex rseg DATA16_C:CONST data

table dc8 12 dc8 15 dc8 17 dc8 16 dc8 14 dc8 11 dc8 9

rseg CODE:CODE codecount set 0

addTable mov.l #0,R1

mov.l #table,R2 rept 7 if count == 7 exitm endif mov.b [R2+],R4 add R4,R1count set count + 1 endr

rts

end

ARX-1

91

Page 106: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

92

アセンブラ制御ディレクティブ

文字列の定義

文字列を定義するには、以下のように指定します。

myMsg DC8 'Please enter your name'

後のゼロを含む文字列を定義するには、次のように指定します。

myCstr DC8 "This is a string."

文字列で単一引用符を使用するには、次のように 2 つ入力します。

errMsg DC8 'Don''t understand!'

空間の予約

10バイト用に空間を予約するには、次のように指定します。

table DS8 10

アセンブラ制御ディレクティブこれらのディレクティブは、アセンブラの動作を制御します。 式でディレクティブを使用するときに適用される制限については、「式の制限」(12 ページ )を参照してください。

構文

/*comment*/

//comment

CASEOFF

CASEON

RADIX expr

ディレクティブ 説明 式の制限

/*comment*/ C スタイルのコメント区切り文字。

// C++スタイルのコメント区切り文字。

CASEOFF 大文字 / 小文字の区別を無効にします。

CASEON 大文字 / 小文字の区別を有効にします。

RADIX すべての数値にデフォルトベースを設

定します。

前方参照禁止

外部参照禁止

絶対

固定

表 25: アセンブラ制御ディレクティブ

ARX-1

IAR アセンブラ

リファレンスガイド

Page 107: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

パラメータ

説明

アセンブラリスト用のコメントセクションには、/*...*/を使用します。

残りの行をコメントとしてマーキングするには、//を使用します。

デフォルトの定数用ベースを設定するには、RADIXを使用します。 デフォルトのベースは 10 です。

大文字 / 小文字の区別の制御

ユーザ定義シンボルで大文字と小文字を区別するかどうかを切り替えるには、CASEONまたは CASEOFFを使用します。 デフォルトでは、大文字と小文字が区別されます。

CASEOFFを有効にすると、すべてのシンボルは大文字で格納され、XLINK によって使用されるすべてのシンボルは XLINK 定義ファイルに大文字で記述する必要があります。

コメントの定義

以下の例は、複数行から成るコメントでの /*...*/の使用方法を示します。

/*Program to read serial input.Version 1: 19.2.02Author: mjp*/

「C 形式のプリプロセッサディレクティブでのコメント」(87 ページ ) も参照してください。

ベースの変更

デフォルトベースを 16 に設定するには、次のように指定します。

module radix rseg CODE:CODE code radix 16 ; With the default base set mov.l #12,R1 ; to 16, the immediate value

comment アセンブラに無視されるコメント。

expr デフォルトベース。デフォルトは 10(10 進数 )。

ARX-1

93

Page 108: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

94

関数ディレクティブ

;... ; of the load instruction is ; interpreted as 0x12.

; To reset the base from 16 to 10 again, the argument must be; written in hexadecimal format.

radix 0x0a ; Reset the default base to 10. mov.l #12,R1 ; Now, the immediate value of ;... ; the load instruction is ; interpreted as 0x0c. end

大文字 / 小文字の区別の制御

CASEOFFを設定すると、以下の例では、labelと LABELが同じになります。

module caseSensitivity1 rseg CODE:CODE code caseofflabel nop ; Stored as "LABEL". bra LABEL end

以下の例では、重複ラベルエラーが生成されます。

module caseSensitivity2 rseg CODE:CODE code caseofflabel nop ; Stored as "LABEL".LABEL nop ; Error, "LABEL" already defined. end

関数ディレクティブ関数ディレクティブは、関数および関数呼出しの情報をリンカへ渡すためにコンパイラによって生成されます。 これらのディレクティブは、コンパイラオプション [ アセンブラ出力ファイル ]>[ コンパイラのランタイム情報 ](-lA) を使用してアセンブラリストファイルを作成すると確認できます。

注 : これらのディレクティブは、主に静的オーバレイをサポートするために使用します。これは、より小型のマイクロコントローラで役に立つ機能です。 RX 用 IARC/C++ コンパイラでは、役に立たないため静的オーバーレイを使用しません。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 109: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

構文

FUNCTION label,value

ARGFRAME segment, size, type

LOCFRAME segment, size, type

FUNCALL caller, callee

パラメータ

説明

FUNCTIONは、関数とする label名を宣言します。valueは、関数に関する補足情報をエンコードします。

FUNCALLは、関数の callerが関数の calleeを呼び出すことを宣言します。calleeを省略して間接的な関数呼出しを示すことができます。

ARGFRAMEと LOCFRAMEは、異なるメモリで関数のフレームが使用する空間を宣言します。 ARGFRAME は関数の引数に使用される空間を宣言し、LOCFRAMEはローカルの空間を宣言します。 segmentは、空間が格納されるセグメントです。 sizeは使用するバイト数です。 typeは、STACK( スタックに基づいて割り当てる場合 ) または STATIC( 静的オーバーレイ割当ての場合 ) のいずれかです。

ARGFRAMEとLOCFRAMEは、必ずFUNCTIONまたはFUNCALLディレクティブの直後に使用します。

外部関数に対する FUNCTIONディレクティブの後で使用できるのは、ARGFRAMEディレクティブのみです。このディレクティブは、当該関数へのあらゆる呼出しの引数フレームの 大使用率を示します。 定義された関数へのFUNCTIONディレクティブの後には、ARGFRAMEディレクティブと LOCFRAMEディレクティブの両方を使用できます。

FUNCALLディレクティブの後には、まず、呼出し元での呼び出しで使用されるフレームを宣言する LOCFRAMEディレクティブを指定します。次に、呼び出される関数で使用される引数フレームを宣言するための ARGFRAMEディレクティブを指定します。

label 関数として宣言するラベル。

value 関数情報。

segment 引数フレームまたはローカルフレームを格納するセグメント。

size 引数フレームまたはローカルフレームのサイズ。

type 引数フレームまたはローカルフレームのタイプ。STACKまたは STATIC。

caller 関数の呼出し元。

callee 呼び出される関数。

ARX-1

95

Page 110: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

96

呼出しフレーム情報ディレクティブ

呼出しフレーム情報ディレクティブこれらのディレクティブを使用すると、アセンブラソースコードにバックトレース情報を定義できます。 これにより、アセンブラコードのデバッグ時に呼出しフレームスタックを参照できるというメリットがあります。

ディレクティブ 説明

CFI BASEADDRESS ベースアドレス CFA(Canonical Frame Address) を宣言し

ます。

CFI BLOCK データブロックを開始します。

CFI CODEALIGN コードアラインメントを宣言します。

CFI COMMON 共通ブロックを開始または拡張します。

CFI CONDITIONAL データブロックを条件付きスレッドとして宣言します。

CFI DATAALIGN データアラインメントを宣言します。

CFI ENDBLOCK データブロックを終了します。

CFI ENDCOMMON 共通ブロックを終了します。

CFI ENDNAMES 名前ブロックを終了します。

CFI FRAMECELL 呼出し元のフレームに参照情報を作成します。

CFI FUNCTION データブロックに関連する関数を宣言します。

CFI INVALID 無効なバックトレース情報の範囲を開始します。

CFI NAMES 名前ブロックを開始します。

CFI NOFUNCTION 関数に関連しないものとしてデータブロックを宣言し

ます。

CFI PICKER データブロックをピッカースレッドとして宣言します。

CFI REMEMBERSTATE バックトレース情報の状態を記憶します。

CFI RESOURCE リソースを宣言します。

CFI RESOURCEPARTS 複合リソースを宣言します。

CFI RESTORESTATE 保存されたバックトレース情報の状態を復元します。

CFI RETURNADDRESS リターンアドレス列を宣言します。

CFI STACKFRAME スタックフレーム CFA を宣言します。

CFI STATICOVERLAYFRAME 静的オーバーレイフレーム CFA を宣言します。

CFI VALID 無効なバックトレース情報の範囲を終了します。

CFI VIRTUALRESOURCE 仮想リソースを宣言します。

CFI cfa CFA の値を宣言します。

CFIリソース リソースの値を宣言します。

表 26: 呼出しフレーム情報ディレクティブ

ARX-1

IAR アセンブラ

リファレンスガイド

Page 111: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

構文

以下の構文定義は、各ディレクティブの構文を示します。 ディレクティブは用途に応じてグループ化されています。

名前ブロックディレクティブ

CFI NAMES name

CFI ENDNAMES name

CFI RESOURCE resource : bits [, resource : bits] …

CFI VIRTUALRESOURCE resource : bits [, resource : bits] …

CFI RESOURCEPARTS resource part, part [, part] ...

CFI STACKFRAME cfa resource type [, cfa resource type] …

CFI STATICOVERLAYFRAME cfa segment [, cfa segment] …

CFI BASEADDRESS cfa type [, cfa type] …

拡張名前ブロックディレクティブ

CFI NAMES name EXTENDS namesblock

CFI ENDNAMES name

CFI FRAMECELL cell cfa (offset): size [, cell cfa (offset): size] …

共通ブロックディレクティブ

CFI COMMON name USING namesblock

CFI ENDCOMMON name

CFI CODEALIGN codealignfactor

CFI DATAALIGN dataalignfactor

CFI RETURNADDRESS resource type

CFI cfa { NOTUSED | USED }

CFI cfa { resource | resource + constant | resource - constant }

CFI cfa cfiexpr

CFI resource { UNDEFINED | SAMEVALUE | CONCAT }

CFI resource { resource | FRAME(cfa, offset) }

CFI resource cfiexpr

拡張共通ブロックディレクティブ

CFI COMMON name EXTENDS commonblock USING namesblock

CFI ENDCOMMON name

ARX-1

97

Page 112: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

98

呼出しフレーム情報ディレクティブ

データブロックディレクティブ

CFI BLOCK name USING commonblock

CFI ENDBLOCK name

CFI { NOFUNCTION | FUNCTION label }

CFI { INVALID | VALID }

CFI { REMEMBERSTATE | RESTORESTATE }

CFI PICKER

CFI CONDITIONAL label [, label] …

CFI cfa { resource | resource + constant | resource - constant }

CFI cfa cfiexpr

CFI resource { UNDEFINED | SAMEVALUE | CONCAT }

CFI resource { resource | FRAME(cfa, offset) }

CFI resource cfiexpr

パラメータ

bits リソースのサイズ ( ビット単位 )

cell フレームセルの名前。

cfa CFA(Canonical Frame Address) の名前。

cfiexpr CFI 式 (「CFI 式」(105 ページ ) を参照 )。

codealignfactor すべての命令サイズで 小の係数。 データブロックの各CFI ディレクティブは、このアラインメントに従って配置する必要があります。 デフォルトは 1 で、いつでも使用できますが、値を大きくすると、生成されるバックトレース情報のサイズが小さくなります。 可能な範囲 1 ~256 です。

commonblock 以前に定義された共通ブロックの名前。

constant 定数値、または定数値を計算するアセンブラ式。

dataalignfactor すべてのフレームサイズで 小の係数。 スタックのアドレスが大きくなると、係数はマイナスになります。小さくなると、係数はプラスになります。 デフォルトは 1 ですが、値を大きくすると、生成されるバックトレース情報のサイズが小さくなります。 可能な範囲は -256 ~ -1 と1 ~ 256 です。

label 関数ラベル。

name ブロックの名前。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 113: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

説明

呼出しフレーム情報ディレクティブ (CFI ディレクティブ ) は、IAR C-SPY®デバッガのデバッグフォーマットへの拡張です。 CFI ディレクティブを使用して、プログラム内の命令にバックトレース情報を定義します。 通常、コンパイラがこの情報を生成しますが、デバッガで呼出しフレームスタックを使用する場合は、ライブラリ関数およびアセンブラ言語のみで記述されているその他のコードに対して、バックトレース情報を追加する必要があります。

バクトレース情報は、アセンブラコード内でリソースの内容を追跡するために使用されます ( レジスタやメモリセルなど )。 IAR C-SPY デバッガはこの情報を使用して呼出しスタックに戻り、関数の入力前にレジスタやその他のリソースの適切な値を表示します。 従来のアプローチと違い、これによってデバッガはブレークポイントまでフルスピードで実行し、ブレークポイントで停止し、その時点でのプログラムのバックトレース情報を取得することができます。 続いて、任意の呼出し関数でこの情報を使用してリソース内容を計算できます ( 呼出しフレーム情報も存在することが前提となります )。

バックトレース行と列

デバッガが実行を停止できるプログラム内の各ロケーションには、バックトレース行があります。 各バックトレース行は、列のセットから構成されています。それぞれの列は追跡対象の各アイテムを表します。 以下の 3 種類の列があります。

● リソース列 - リソースの元の値が検出される場所を追跡します。

● CFA 列 - 関数フレームのトップを追跡します。

● リターンアドレス列 - リターンアドレスのロケーションを追跡します。

リターンアドレス列は常に 1 つあります。CFA 列は通常 1 つありますが、複数ある場合もあります。

namesblock 以前に定義された名前ブロックの名前。

offset CFA に相対的なオフセット。 任意指定の符号が付く整数です。

part 複合リソースのパート。 以前に宣言されたリソースの名前。

resource リソースの名前。

segment segment の名前。

size フレームセルのサイズ ( ビット単位 )

type メモリタイプ。CODE、CONST、DATAなど。 また、IAR XLINK リンカでサポートされるすべてのメモリタイプを使用できます。 アドレス空間の指定のみに使用されます。

ARX-1

99

Page 114: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

100

呼出しフレーム情報ディレクティブ

名前ブロックの定義

プロセッサで使用可能なリソースを宣言するには、名前ブロックを使用します。 名前ブロックの内部に、追跡可能なすべてのリソースが定義されています。

名前ブロックの開始と終了には、以下のディレクティブを使用します。

CFI NAMES nameCFI ENDNAMES name

ここで、nameはブロックの名前です。

一度に開ける名前ブロックは 1 つだけです。

名前ブロックの内部では、リソース宣言、スタックフレーム宣言、静的オーバーレイフレーム宣言、またはベースアドレス宣言という 4 種類の宣言を使用できます。

● リソースを宣言するには、以下のいずれかのディレクティブを使用します。CFI RESOURCE resource : bitsCFI VIRTUALRESOURCE resource : bits

パラメータは、リソースの名前とリソースのサイズ ( ビット単位 ) です。 仮想リソースは論理的な概念であり、プロセッサレジスタなどの「物理」リソースと対比されます。 仮想リソースは通常、リターンアドレスに使用します。

複数のリソースを宣言する場合、リソース間をコンマで区切ります。

リソースは、2 つ以上のパーツから成る複合リソースを使用することもできます。 複合リソースの構成を宣言するには、次のようにディレクティブを使用します。

CFI RESOURCEPARTS resource part, part, …

パートはコンマで区切ります。 リソースとそのパートは、上で説明したように、既にリソースとして宣言されている必要があります。

● スタックフレーム CFA を宣言するには、次のようにディレクティブを使用します。CFI STACKFRAME cfa resource type

パラメータはスタックフレーム CFA の名前、関連するリソース ( スタックポインタ ) の名前、および segment タイプ ( アドレス空間を取得するため )です。 複数のスタックフレーム CFA を宣言する場合、コンマで区切ります。

呼出しスタックに戻る場合、前の関数フレームの正しい値を取得するために、スタックフレーム CFA の値が対応するスタックポインタリソースにコピーされます。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 115: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

● 静的オーバーレイフレーム CFA を宣言するには、次のようにディレクティブを使用します。CFI STATICOVERLAYFRAME cfa segment

パラメータは、CFA の名前と、関数の静的オーバーレイが存在する segmentの名前です。 複数の静的オーバーレイフレーム CFA を宣言する場合、コンマで区切ります。

● ベースアドレス CFA を宣言するには、次のようにディレクティブを使用します。CFI BASEADDRESS cfa type

パラメータは、CFA の名前と segment タイプです。 複数のベースアドレスCFA を宣言する場合、コンマで区切ります。

ベースアドレス CFA を使用すると、CFA の取り扱いが簡単になります。 スタックフレーム CFA と違い、復元する関連スタックポインタリソースはありません。

名前ブロックの拡張

特殊な状況では、既存の名前ブロックに新しいリソースを追加して拡張する必要があります。 このような状況は、自らに定義されていない呼出しフレームを操作するルーチン (C/C++ 関数の処理、開始、終了などのためのルーチンなど ) がある場合に発生します。これらのルーチンでは、呼出し元のフレームを操作します。 通常、拡張名前ブロックを使用するのはコンパイラの開発者のみです。

既存の名前ブロックを拡張するには、以下のディレクティブを使用します。

CFI NAMES name EXTENDS namesblock

ここで、namesblockは既存の名前ブロックの名前であり、nameは新しい拡張ブロックの名前です。 拡張ブロックを終了するには、次のディレクティブを使用する必要があります。

CFI ENDNAMES name

共通ブロックの定義

すべての追跡対象リソースの初期内容を宣言するには、共通ブロックを使用します。 通常、使用される各呼出し規約に共通ブロックが 1 つずつあります。

共通ブロックを開始するには、以下のディレクティブを使用します。

CFI COMMON name USING namesblock

ここで、nameは新しいブロックの名前であり、namesblockは以前に定義された名前ブロックの名前です。

リターンアドレス列を宣言するには、以下のディレクティブを使用します。

CFI RETURNADDRESS resource type

ARX-1

101

Page 116: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

102

呼出しフレーム情報ディレクティブ

ここで resourceは namesblockに定義されたリソースであり、typeはsegment タイプです。 共通ブロックに対してリターンアドレス列を宣言する必要があります。

共通ブロックを終了するには、以下のディレクティブを使用します。

CFI ENDCOMMON name

ここで、nameは共通ブロックを開始するために使用される名前です。

共通ブロックの内部には、「共通ブロックディレクティブ」(97 ページ ) に記載のディレクティブを使用してCFAまたはリソースの初期値を宣言できます。 これらのディレクティブについては、「簡易規則」(103 ページ )、「CFI 式」(105 ページ ) を参照してください。

共通ブロックの拡張

名前ブロックに新しいリソースを追加して拡張できるため、このような新しいリソースの初期値を記述するメカニズムが必要になります。 このため、共通ブロックを拡張して、追加リソースの初期値を効率的に宣言し、他の共通ブロックの宣言を含めることもできます。 拡張名前ブロックと同様に、拡張共通ブロックは通常、コンパイラ開発者のみが使用します。

既存の共通ブロックを拡張するには、以下のディレクティブを使用します。

CFI COMMON name EXTENDS commonblock USING namesblock

ここで、nameは新しい拡張ブロックの名前であり、commonblockは既存の共通ブロックの名前であり、namesblockは以前に定義された名前ブロックの名前です。 拡張ブロックを終了するには、次のディレクティブを使用する必要があります。

CFI ENDCOMMON name

データブロックの定義

データブロックには、1 つの連続したコードの実際の追跡情報が含まれます。 segment 制御ディレクティブをデータブロック内で使用することはできません。

データブロックを開始するには、以下のディレクティブを使用します。

CFI BLOCK name USING commonblock

ここで、nameは新しいブロックの名前であり、commonblockは以前に定義された共通ブロックの名前です。

当該コードが、定義された関数の一部である場合、次のディレクティブを使用して関数名を指定します。

CFI FUNCTION label

ここで、labelは関数を開始するコードラベルです。

ARX-1

IAR アセンブラ

リファレンスガイド

Page 117: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

当該コードが関数の一部でない場合、次のディレクティブを使用してこのことを指定します。

CFI NOFUNCTION

データブロックを終了するには、以下のディレクティブを使用します。

CFI ENDBLOCK name

ここで、nameはデータブロックを開始するために使用される名前です。

データブロックの内部では、「データブロックディレクティブ」(98 ページ )に記載のディレクティブを使用して列の値を操作できます。 これらのディレクティブについては、「簡易規則」(103 ページ )、「CFI 式」(105 ページ ) を参照してください。

簡易規則

個々の列の追跡情報を記述するために、特別な構文の簡易規則の数々が用意されています。

CFI cfa { NOTUSED | USED }

CFI cfa { resource | resource + constant | resource - constant }

CFI resource { UNDEFINED | SAMEVALUE | CONCAT }

CFI resource { resource | FRAME(cfa, offset) }

これらの簡易規則は、共通ブロック内で使用してリソースと CFA の初期情報を記述したり、データブロック内で使用してリソースと CFA の情報への変更を記述したりすることができます。

万が一、簡易規則で十分に記述できない場合には、完全な CFI 式を使用して情報を記述できます (「CFI 式」(105 ページ ) を参照 )。 ただし、可能な限り、CFI 式ではなく簡易規則を使用してください。

簡易規則には、リソース用と CFA 用という 2 種類のセットがあります。

リソース用簡易規則

呼出しフレームを 1 つ戻る場合にリソースがどこにあるのかを概念的に記述するリソース用規則です。 このため、CFI ディレクティブでリソース名の後にあるアイテムを、リソースのロケーションと呼びます。

追跡対象のリソースが復元されている、つまりこのリソースの場所が既に正しく認識されていることを宣言するには、ロケーションに SAMEVALUEを使用します。 リソースには既に正しい値が含まれているため、概念的には、これによってリソースの復元が不要であることが宣言されます。 たとえば、レジスタREGが同じ値に復元されることを宣言するには、以下のディレクティブを使用します。

CFI REG SAMEVALUE

ARX-1

103

Page 118: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

104

呼出しフレーム情報ディレクティブ

リソースが追跡対象ではないことを宣言するには、ロケーションとしてUNDEFINEDを使用します。 リソースは追跡されないため、概念的には、これによって ( 呼出しフレームを 1 つ戻る場合に ) リソースの復元が不要であることが宣言されます。 これを使用して意味があるのは、リソースの初期ロケーションを宣言する場合のみです。 たとえば、REG がスクラッチレジスタであり復元不要であることを宣言するには、以下のディレクティブを使用します。

CFI REG UNDEFINED

リソースが一時的に他のリソースに格納されていることを宣言するには、ロケーションとしてリソース名を使用します。 たとえば、レジスタ REG1が一時的にレジスタ REG2に格納されており、そのレジスタから復元する必要があることを宣言するには、以下のディレクティブを使用します。

CFI REG1 REG2

リソースが現在、スタック内のどこかに存在することを宣言するには、FRAME(cfaÅAoffset)をリソースのロケーションとして使用します。ここで、cfaは「フレームポインタ」として使用される CFA 識別子であり、offsetはCFA に対して相対的なオフセットです。 たとえば、レジスタ REGがフレームポインタ CFA_SPから数えてオフセット -4 に存在することを宣言するには、以下のディレクティブを使用します。

CFI REG FRAME(CFA_SP,-4)

複合リソースには、追加ロケーションがもう 1 つあります。これは CONCATで、複合リソースのリソースパートを結合するとリソースのロケーションを検出できることを宣言します。 たとえば、リソースパート RETLOと RETHIから成る複合リソース RETを考えてみます。 リソースパートを検証して連結すると RETの値を検出できることを宣言するには、以下のディレクティブを使用します。

CFI RET CONCAT

このためには、リソースパーツの少なくとも 1 つに、前述の規則を使用する定義が必要です。

CFA 用簡易規則

リソース用の規則と違い、CFA 用の規則には呼出しフレームの先頭のアドレスを記述します。 呼出しフレームには、サブルーチン呼出し命令によってプッシュされるリターンアドレスが含まれる場合があります。 CFA 規則は、このアドレスから現在の呼出しフレームの先頭を計算する方法を記述します。 CFAには、スタックフレームと静的オーバーレイフレームという 2 種類の形式があり、それぞれ対応する名前ブロックに宣言されています。 「名前ブロックディレクティブ」(97 ページ ) を参照してください。

各スタックフレーム CFA には、スタックポインタなどのリソースが関連付けられています。 呼出しフレームを 1 つ戻ると、関連リソースは現在の CFA で復元されます。 スタックフレーム CFA には、リソース ( スタックフレーム

ARX-1

IAR アセンブラ

リファレンスガイド

Page 119: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

CFA に関連付けられたリソースとは限らない ) からのオフセット、またはNOTUSEDという 2 種類の簡易規則があります。

CFA を使用せず、関連するリソースは通常のリソースとして追跡する必要があることを宣言するには、CFA のアドレスとして NOTUSED を使用します。 たとえば、CFA_SPという名前の CFA をこのコードブロックで使用しないことを宣言するには、以下のディレクティブを使用します。

CFI CFA_SP NOTUSED

CFA のアドレスが、リソースの値に相対的なオフセットであることを宣言するには、リソースとオフセットを指定します。 たとえば、SPというリソースの値に 4 を足すと CFA_SP という名前の CFA を取得できることを宣言するには、以下のディレクティブを使用します。

CFI CFA_SP SP + 4

静的オーバーレイフレーム CFA では、共通ブロックの内部で宣言できるのはUSEDと NOTUSEDの 2 種類のみです。

CFI 式

リソースと CFA 用の簡易規則では十分に記述できない場合には、呼出しフレーム情報式 (CFI 式 ) を使用できます。 ただし、可能な限り、簡易規則を使用するようにしてください。

CFI 式は、オペランドと演算子から構成されています。 CFI 式で許可されている演算子は以下に挙げるもののみです。 ほぼ、通常のアセンブラ式と同じ演算子を使用できます。

オペランドの記述では、cfiexprは以下のいずれかを示します。

● オペランド付きの CFI 演算子

● 数値の定数

● CFA 名

● リソース名

単項演算子

全体的な構文: OPERATOR(operand)

演算子 オペランド 説明

COMPLEMENT cfiexpr CFI 式のビット単位の NOT を実行します。

LITERAL expr アセンブラ式の値を取得します。 これにより、通常の

アセンブラ式の値を CFI 式に挿入できます。

NOT cfiexpr 論理 CFI 式を否定します。

UMINUS cfiexpr CFI 式を算術的に論理否定します。

表 27: CFI 式の単項演算子

ARX-1

105

Page 120: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

106

呼出しフレーム情報ディレクティブ

2 項演算子

全体的な構文: OPERATOR(operand1,operand2)

演算子 オペランド 説明

ADD cfiexpr、cfiexpr 加算

AND cfiexpr、cfiexpr ビット単位の AND

DIV cfiexpr、cfiexpr 除算

EQ cfiexpr、cfiexpr 等しい

GE cfiexpr、cfiexpr 以上

GT cfiexpr、cfiexpr より大きい

LE cfiexpr、cfiexpr 以下

LSHIFT cfiexpr、cfiexpr 左オペランドの論理左シフト。 シフト対象のビッ

ト数は、右オペランドで指定します。 シフト時に

符号ビットは保護されません。

LT cfiexpr、cfiexpr より小さい

MOD cfiexpr、cfiexpr 剰余

MUL cfiexpr、cfiexpr 乗算

NE cfiexpr、cfiexpr 等しくない

OR cfiexpr、cfiexpr ビット単位の OR

RSHIFTA cfiexpr、cfiexpr 左オペランドの算術右シフト。 シフト対象のビッ

ト数は、右オペランドで指定します。 RSHIFTLと違い、符号ビットはシフト時に保護されます。

RSHIFTL cfiexpr、cfiexpr 左オペランドの論理右シフト。 シフト対象のビッ

ト数は、右オペランドで指定します。 シフト時に

符号ビットは保護されません。

SUB cfiexpr、cfiexpr 減算

XOR cfiexpr、cfiexpr ビット単位の XOR

表 28: CFI 式の 2 項演算子

ARX-1

IAR アセンブラ

リファレンスガイド

Page 121: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

3 項演算子

全体的な構文: OPERATOR(operand1,operand2,operand3)

ここで示すのは一般的な例であり、RX マイクロコントローラに固有の例ではありません。 これにより、例がシンプルになり、CFI ディレクティブの用途がわかりやすくなります。 ターゲット固有の例を取得するには、C ソースファイルのコンパイル時にアセンプラ出力を生成してください。

SPというスタックポインタと、R0とR1という2つのレジスタのある一般的なプロセッサを考えます。 レジスタ R0は、スクラッチレジスタとして使用され (レジスタは関数呼出し時に廃棄され ) ますが、レジスタ R1は関数呼出し後に復元する必要があります。 シンプルにするために、すべての命令、レジスタ、アドレスは 16 ビット幅とします。

以下の短いサンプルコードと、対応するバックトレース行および列を考えてみましょう。 開始時点で、スタックには 16 ビットのリターンアドレスが含まれていると仮定します。 スタックは上位アドレスからゼロに向かって大きくな

演算子 オペランド 説明

FRAME cfa、size、offset スタックフレームから値を取得します。 オペランドを

以下に示します。

cfa 以前に宣言された CFA を指定する識別子。

size サイズをバイト単位で指定する定数式。

offset オフセットをバイト単位で指定する定数式。

サイズが sizeのアドレス cfa+offsetから値を取

得します。

IF cond、true、false 条件演算子。 オペランドを以下に示します。

cond 条件を示す CFA 式。

true 任意の CFA 式。

false 任意の CFA 式。

条件式がゼロ以外である場合、結果は true式の値と

なりますが、それ以外の場合は false式の値となり

ます。

LOAD size、type、addr メモリから値を取得します。 オペランドを以下に示し

ます。

size サイズをバイト単位で指定する定数式。

type メモリタイプ。

addr メモリアドレスを示す CFA 式。

サイズが sizeで、segment タイプが typeであるア

ドレス addrから値を取得します。

表 29: CFI 式の 3 項演算子

ARX-1

107

Page 122: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

108

呼出しフレーム情報ディレクティブ

ります。 CFA は呼出しフレームのトップを指定します。つまり、関数から戻ったときのスタックポインタの値です。

各バックトレース行は、命令を実行する前の追跡対象リソースの状態を示します。 たとえば、MOV R1,R0命令では、R1レジスタの元の値は R0レジスタにあり、関数フレーム (CFA 列 ) のトップは SP + 2です。 アドレス 0000のバックトレース行は 初の行であり、関数に使用された呼出し規約の結果です。

CFA はスタックポインタに関して定義されるため、SP 列は空です。 RET 列はリターンアドレスの列です。つまり、リターンアドレスのロケーションです。 R0 列の 初の行は「」です。これは、R0の値が未定義であり、関数の終了時に復元する必要がないことを示します。 R1 列の 初の行は SAME です。これは、R1レジスタの値が、既知の値と同じ値に復元されることを示します。

名前ブロックの定義

上の例で指定する名前ブロックは次のようになります。

CFI NAMES trivialNamesCFI RESOURCE SP:16, R0:16, R1:16CFI STACKFRAME CFA SP DATA

;; The virtual resource for the return address columnCFI VIRTUALRESOURCE RET:16CFI ENDNAMES trivialNames

共通ブロックの定義

上の例で指定する共通ブロックは次のようになります。

CFI COMMON trivialCommon USING trivialNamesCFI RETURNADDRESS RET DATACFI CFA SP + 2CFI R0 UNDEFINEDCFI R1 SAMEVALUECFI RET FRAME(CFA,-2) ; Offset -2 from top of frameCFI ENDCOMMON trivialCommon

アドレス CFA SP R0 R1 RET アセンブラコード

0000 SP + 2 SAME CFA - 2 func1: PUSH R1

0002 SP + 4 CFA - 4 MOV R1,#4

0004 CALL func2

0006 POP R0

0008 SP + 2 R0 MOV R1,R0

000A SAME RET

表 30: バックトレース行と列付きのサンプルコード

ARX-1

IAR アセンブラ

リファレンスガイド

Page 123: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

アセンブラディレクティブ

注記 : SPは、CFAに関連付けられたリソースであるため、CFI ディレクティブを使用して変更することはできません。

データブロックの定義

上の例の続きとして、データブロックは次のようになります。

RSEG CODE:CODECFI BLOCK func1block USING trivialCommonCFI FUNCTION func1

func1:PUSH R1CFI CFA SP + 4CFI R1 FRAME(CFA,-4)MOV R1,#4CALL func2POP R0CFI R1 R0CFI CFA SP + 2MOV R1,R0CFI R1 SAMEVALUERETCFI ENDBLOCK func1block

CFI ディレクティブは、バックトレース情報に影響を与える命令の後に配置します。

ARX-1

109

Page 124: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

110

呼出しフレーム情報ディレクティブ

ARX-1

IAR アセンブラ

リファレンスガイド

Page 125: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

プラグマディレクティブこの章では、RX 用 IAR アセンブラのプラグマディレクティブについ

て説明します。

プラグマディレクティブは、アセンブラの動作 ( 警告メッセージの表

示 / 非表示など ) を制御します。 プラグマディレクティブは前処理さ

れ、マクロに置換されます。

プラグマディレクティブの一覧以下の表に、アセンブラのプラグマディレクティブを示します。

プラグマディレクティブの詳細値の指定に =を使用するすべてのプラグマディレクティブは、次のように入力する必要があります。

#pragma pragmaname=pragmavalue

または

#pragma pragmaname = pragmavalue

#pragma diag_default #pragma diag_default=tag,tag,...

タグで指定される診断メッセージの重要度をデフォルトに戻すか、コマンドラインでの定義に変更する場合に使用します。 次に例を示します。

#pragma diag_default=Pe117

診断メッセージの詳細については、「診断」の章を参照してください。

#pragma ディレクティブ 説明

#pragma diag_default 診断メッセージの重要度を変更します。

#pragma diag_error 診断メッセージの重要度を変更します。

#pragma diag_remark 診断メッセージの重要度を変更します。

#pragma diag_suppress 診断メッセージを無効にします。

#pragma diag_warning 診断メッセージの重要度を変更します。

#pragma message メッセージを出力します。

表 31: プラグマディレクティブの一覧

ARX-1

111

Page 126: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

112

プラグマディレクティブの詳細

#pragma diag_error #pragma diag_error=tag,tag,...

指定した診断メッセージの重要度を errorに変更します。 次に例を示します。

#pragma diag_error=Pe117

診断メッセージの詳細については、「診断」の章を参照してください。

#pragma diag_remark #pragma diag_remark=tag,tag,...

指定した診断メッセージの重要度を remarkに変更します。 次に例を示します。

#pragma diag_remark=Pe177

診断メッセージの詳細については、「診断」の章を参照してください。

#pragma diag_suppress #pragma diag_suppress=tag,tag,...

指定したタグで診断メッセージを無効にします。 次に例を示します。

#pragma diag_suppress=Pe117,Pe177

診断メッセージの詳細については、「診断」の章を参照してください。

#pragma diag_warning #pragma diag_warning=tag,tag,...

指定した診断メッセージの重要度を warning に変更します。 次に例を示します。

#pragma diag_warning=Pe826

診断メッセージの詳細については、「診断」の章を参照してください。

#pragma message #pragma message(string)

ファイルのアセンブル時にメッセージを stdoutに出力させます。 次に例を示します。

#ifdef TESTING#pragma message("Testing")#endif

ARX-1

IAR アセンブラ

リファレンスガイド

Page 127: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

診断ここでは、診断メッセージのフォーマットと診断メッセージの重要度

について説明します。

メッセージフォーマット診断メッセージはすべて、説明を要しない完結型のメッセージとして出力されます。 アセンブラの診断メッセージは、次のフォーマットで生成されます。

filename,linenumber level[tag]: message

ここで、filenameはエラーが検出されたソースファイルの名前、linenumberはアセンブラがエラーを検出した行番号、levelは診断の重要度、tagは診断メッセージを特定する固有のタグ、messageは説明メッセージ (場合によっては複数行 ) です。

診断メッセージは、オプションのリストファイルに出力されるとともに、画面に表示されます。 IAR Embedded Workbench IDE では、診断メッセージは [ ビルドメッセージ ] ウィンドウに表示されます。

重要度診断は、以下の重要度に分類されます。

リマーク

生成したコードで誤った動作を引き起こす可能性があるソースコードをアセンブラが検出した場合に生成される診断メッセージ。 リマークはデフォルトでは出力されません。有効にする方法については、「--remarks」(30 ページ )を参照してください。

警告

アセンブラがプログラミングエラーや欠落を検出したが、コンパイルの完了に障害となるほど重大ではない場合に生成される診断メッセージ。 警告は、--no_warningsコマンドラインオプションを使用して無効にできます。「--no_warnings」(28 ページ ) を参照してください。

ARX-1

113

Page 128: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

114

重要度

エラー

アセンブラがコードの生成に支障のあるような明確な言語規則違反を検出した場合に生成される診断メッセージ。 エラーが発生した場合は、ゼロ以外の終了コードが生成されます。

致命的なエラー

コードが生成できなくなるだけでなく、それ以降のソースコードの処理が無意味となるような状態をアセンブラが検出した場合に生成される診断メッセージ。 この診断が出力された後、アセンブラが終了します。 致命的なエラーが発生した場合は、ゼロ以外の終了コードが生成されます。

重要度の設定

致命的なエラーや一部の通常エラーを除くすべてのタイプの診断に対し、診断メッセージの出力抑制や重要度の変更ができます。

重要度の設定に使用可能なアセンブラオプションについては、「アセンブラオプションの概要」(17 ページ ) を参照してください。

重要度の設定に使用可能なプラグマディレクティブについては、「プラグマディレクティブ」を参照してください。

インターナルエラー

インターナルエラーは、アセンブラでの問題が原因で、重大かつ予期しない障害が発生したことを示す診断メッセージです。 このメッセージは、以下の形式で生成されます。

Internal error: message

ここで、messageはエラーの説明を示します。 インターナルエラーが発生した場合は、ソフトウェアの配布元か IAR システムズの技術サポートまでご報告ください。 その際、問題を再現するための情報をお知らせください。 次のような情報が考えられます。

● 製品名

● アセンブラのバージョン番号(アセンブラの生成するリストファイルのヘッダで確認できます )

● ライセンス番号

● インターナルエラーメッセージ本文

● インターナルエラーの原因となったプログラムのソースファイル

● インターナルエラー発生時に指定していたオプションの一覧

ARX-1

IAR アセンブラ

リファレンスガイド

Page 129: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

索引

AADD(CFI 演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106ALIGNRAM( アセンブラディレクティブ ) . . . . . . . . . . 60ALIGN( アセンブラディレクティブ ) . . . . . . . . . . . . . . 59AND(CFI 演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106AND( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 38ARGFRAME( アセンブラディレクティブ ) . . . . . . . . . 95_args( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 73_args( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . . . . . 75__ARX__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 10ARX_INC( 環境変数 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4ASCII 文字定数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7ASEGN( アセンブラディレクティブ ) . . . . . . . . . . . . . . 60ASEG( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 60ASMRX( 環境変数 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4asm( ファイル名の拡張子 ) . . . . . . . . . . . . . . . . . . . . . . . . 3ASSIGN( アセンブラディレクティブ ) . . . . . . . . . . . . . 67

B__BIG_ENDIAN__( 定義済シンボル ) . . . . . . . . . . . . . . 10BINAND( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . 38BINNOT( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . 38BINOR( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 39BINXOR( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . 39BLOCK( アセンブラディレクティブ ). . . . . . . . . . . . . . 57__BUILD_NUMBER__ ( 定義済シンボル ) . . . . . . . . . . 10BYTE1( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 39BYTE2( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 39BYTE3( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 40BYTE4( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 40

CCASEOFF( アセンブラディレクティブ ) . . . . . . . . . . . . 92CASEON( アセンブラディレクティブ ) . . . . . . . . . . . . 92--case_insensitive( アセンブラオプション ) . . . . . . . . . . 18CFI ディレクティブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

CFI 演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105CFI 式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105__CODE_MODEL__( 定義済シンボル ) . . . . . . . . . . . . . 10--no_code_model( コンパイラオプション ) . . . . . . . . . . 19CODE( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 60COL( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 80COMMON( アセンブラディレクティブ ) . . . . . . . . . . . 60COMPLEMENT(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . 105CRC、アセンブラリストファイル内 . . . . . . . . . . . . . . . 13C 形式のプリプロセッサディレクティブ . . . . . . . . . . . 84C++ 用語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

D-D( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . 19__DATA_MODEL__( 定義済シンボル ) . . . . . . . . . . . . . 10DATA( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 60__DATE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . 10DATE( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . 40DC8( アセンブラディレクティブ ). . . . . . . . . . . . . . . . . 89DC16( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 89DC24( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 89DC32( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 89DC64( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 89DEFINE( アセンブラディレクティブ ) . . . . . . . . . . . . . 67--dependencies( アセンブラオプション ) . . . . . . . . . . . . 20DF32( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 90DF64( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 90--diagnostics_tables( アセンブラオプション ). . . . . . . . . 23diag_default(#pragma ディレクティブ ) . . . . . . . . . . . . 111--diag_error( アセンブラオプション ) . . . . . . . . . . . . . . . 22diag_error(#pragma ディレクティブ ) . . . . . . . . . . . . . . 112--diag_remark( アセンブラオプション ) . . . . . . . . . . . . . 22diag_remark(#pragma ディレクティブ ) . . . . . . . . . . . . 112--diag_suppress( アセンブラオプション ) . . . . . . . . . . . . 22diag_suppress(#pragma ディレクティブ ) . . . . . . . . . . . 112--diag_warning( アセンブラオプション ) . . . . . . . . . . . . 22diag_warning(#pragma ディレクティブ ). . . . . . . . . . . . 112--dir_first( アセンブラオプション ). . . . . . . . . . . . . . . . . 23

索引

ARX-1

115

Page 130: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

116

DIV(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106__DOUBLE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . 10--double( アセンブラオプション ). . . . . . . . . . . . . . . . . . 23DQ15( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 90DQ31( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 90DS8( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . 90DS16( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 90DS24( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 90DS32( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 90DS64( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 90

E#elif( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . 84#else( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 84ELSEIF( アセンブラディレクティブ ) . . . . . . . . . . . . . . 70ELSE( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 70--enable_multibytes( アセンブラオプション ). . . . . . . . . 24--endian( アセンブラオプション ) . . . . . . . . . . . . . . . . . . 24#endif( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 84ENDIF( アセンブラディレクティブ ). . . . . . . . . . . . . . . 71ENDMOD( アセンブラディレクティブ ) . . . . . . . . . . . . 54ENDM( アセンブラディレクティブ ). . . . . . . . . . . . . . . 73ENDR( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 73END( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 53EQU( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 67EQ(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106EQ( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . 40#error( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 84--error_limit( アセンブラオプション ) . . . . . . . . . . . . . . 24EVEN( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 60EXITM( アセンブラディレクティブ ) . . . . . . . . . . . . . . 73EXTERN( アセンブラディレクティブ ). . . . . . . . . . . . . 57

F-f( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 25false 値、アセンブラ式内 . . . . . . . . . . . . . . . . . . . . . . . . . 8__FILE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 10

FRAME(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 107FUNCALL( アセンブラディレクティブ ) . . . . . . . . . . . 95FUNCTION( アセンブラディレクティブ ) . . . . . . . . . . 95

GGE(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106GE( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . 41GT(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106GT( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . 41

H--header_context( アセンブラオプション ) . . . . . . . . . . . 25HIGH( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . 41HWRD( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 41

I-I( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 25IAR 技術サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114__IAR_SYSTEMS_ASM__( 定義済シンボル ) . . . . . . . . 10#if( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . . 84#ifdef( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 84#ifndef( アセンブラディレクティブ ). . . . . . . . . . . . . . . 84IF(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107IF( アセンブラディレクティブ ). . . . . . . . . . . . . . . . . . . 71IMPORT( アセンブラディレクティブ ) . . . . . . . . . . . . . 57

L-l( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 26LE(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106LE( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 42LIBRARY( アセンブラディレクティブ ) . . . . . . . . . 52, 54lightbulb アイコン、本ガイドの . . . . . . . . . . . . . . . . . . xiiiLIMIT( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 67__LINE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 10#line( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 84

ARX-1

IAR アセンブラ

リファレンスガイド

Page 131: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

索引

LITERAL(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 105__LITTLE_ENDIAN__( 定義済シンボル ) . . . . . . . . . . . 10LOAD(CFI 演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107LOCAL( アセンブラディレクティブ ) . . . . . . . . . . . . . . 73LOCFRAME( アセンブラディレクティブ ). . . . . . . . . . 95LOW( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 42LSHIFT(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 106LSTCND( アセンブラディレクティブ ) . . . . . . . . . . . . . 80LSTCOD( アセンブラディレクティブ ) . . . . . . . . . . . . . 80LSTEXP( アセンブラディレクティブ ) . . . . . . . . . . . . . 80LSTMAC( アセンブラディレクティブ ) . . . . . . . . . . . . 80LSTOUT( アセンブラディレクティブ ) . . . . . . . . . . . . . 80LSTPAGE( アセンブラディレクティブ ) . . . . . . . . . . . . 80LSTREP( アセンブラディレクティブ ) . . . . . . . . . . . . . 80LSTXRF( アセンブラディレクティブ ) . . . . . . . . . . . . . 80LT(CFI 演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106LT( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 42LWRD( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . 42

M-M( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . 27MACRO( アセンブラディレクティブ ) . . . . . . . . . . . . . 73message(#pragma ディレクティブ ). . . . . . . . . . . . . . . . 112--mnem_first( アセンブラオプション ) . . . . . . . . . . . . . . 27MODULE( アセンブラディレクティブ ) . . . . . . . . . . . . 54MOD(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106MOD( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . 43msa( ファイル名の拡張子 ) . . . . . . . . . . . . . . . . . . . . . . . . 3MUL(CFI 演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

NNAME( アセンブラディレクティブ ). . . . . . . . . . . . . . . 54NE(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106NE( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . 43NOT(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105NOT( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 43--no_path_in_file_macros( アセンブラオプショ ) . . . . . . 27

--no_warnings( アセンブラオプション ) . . . . . . . . . . . . . 28--no_wrap_diagnostics( アセンブラオプション ) . . . . . . 28

O-o( アセンブラオプション ). . . . . . . . . . . . . . . . . . . . . . . 28ODD( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 60--only_stdout( アセンブラオプション ). . . . . . . . . . . . . . 28ORG( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 60OR(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106OR( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . 43OVERLAY( アセンブラディレクティブ ) . . . . . . . . . . . 57

PPAGE( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 80PAGSIZ( アセンブラディレクティブ ) . . . . . . . . . . . . . . 80PLC → プログラムロケーションカウンタを参照

#pragma( アセンブラディレクティブ ) . . . . . . . . . 84, 111--preinclude( アセンブラオプション ). . . . . . . . . . . . . . . 29--preprocess( アセンブラオプション ). . . . . . . . . . . . . . . 29PROGRAM( アセンブラディレクティブ ) . . . . . . . . . . . 54PUBLIC( アセンブラディレクティブ ) . . . . . . . . . . . . . 57PUBWEAK( アセンブラディレクティブ ). . . . . . . . . . . 57

R-r( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 30RADIX( アセンブラディレクティブ ) . . . . . . . . . . . . . . 92REPTC( アセンブラディレクティブ ) . . . . . . . . . . . . . . 73REPTI( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 73REPT( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 73REQUIRE( アセンブラディレクティブ ) . . . . . . . . . . . . 57RSEG( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 60RSHIFTA(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 106RSHIFTL(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 106RTMODEL( アセンブラディレクティブ ) . . . . . . . . . . . 54RX アーキテクチャと命令セット . . . . . . . . . . . . . . . . . xir54 ( ファイル名の拡張子 ) . . . . . . . . . . . . . . . . . . . . . . . . 3

ARX-1

117

Page 132: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

118

SSET( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . 67SFB( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . 44SFE( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . 44SFR( 特殊機能レジスタ ) . . . . . . . . . . . . . . . . . . . . . . . . . 14SHL( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 45SHR( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 45--silent( アセンブラオプション ). . . . . . . . . . . . . . . . . . . 30SIZEOF( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . 45stderr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28stdout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

__SUBVERSION__( 定義済シンボル ) . . . . . . . . . . . . . . 11SUB(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106SYMBOL( アセンブラディレクティブ ) . . . . . . . . . . . . 57s54( ファイル名の拡張子 ) . . . . . . . . . . . . . . . . . . . . . . . . 3

T__TIME__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . 11true 値、アセンブラ式内 . . . . . . . . . . . . . . . . . . . . . . . . . . 8

UUGT( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 46ULT( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . 46UMINUS(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 105#undef( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 84UPPER( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . 47

VVAR( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 67__VER__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 11

W--warnings_affect_exit_code( アセンブラオプション )4, 31--warnings_are_errors( アセンブラオプション ) . . . . . . . 31

Xxcl( ファイル名の拡張子 ) . . . . . . . . . . . . . . . . . . . . . . . . 25XOR(CFI 演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106XOR( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 47

あアセンブラ BLOCK( アセンブラディレクティブ ) . . . 57アセンブラオプション

アセンブラへの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . 3パラメータの指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

アセンブラシンボル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8インポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58–59エクスポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58ローカル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69再定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68再配置可能式内 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12定義済 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

アセンブラソースファイル、インクルード . . . . . . . . . 86アセンブラソースフォーマット . . . . . . . . . . . . . . . . . . . . 5アセンブラディレクティブ

ARGFRAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

C 形式のプリプロセッサ . . . . . . . . . . . . . . . . . . . . . . 84FUNCALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95FUNCTION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95LOCFRAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

アセンブラ制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92シンボル制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57セグメント制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59データ定義または割当て . . . . . . . . . . . . . . . . . . . . . . 89マクロ処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73モジュール制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53リストファイル制御 . . . . . . . . . . . . . . . . . . . . . . . . . . 80概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94呼出しフレーム情報 (CFI) . . . . . . . . . . . . . . . . . . . . . 96条件付きアセンブリ . . . . . . . . . . . . . . . . . . . . . . . . . . 70

ARX-1

IAR アセンブラ

リファレンスガイド

Page 133: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

索引

C 形式のプリプロセッサディレクティブも参照

値割当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67#pragma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

アセンブラのサブバージョン番号 . . . . . . . . . . . . . . . . . 11アセンブラの環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4アセンブラの出力、デバッグ情報を含める . . . . . . 20, 30アセンブラマクロ

インラインルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . 77引数、受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75引用符、指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76生成された行、リストファイルでの制御 . . . . . . . . 81定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74定義済シンボル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75特殊文字、使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

アセンブララベル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9フォーマット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

アセンブラリストファイル

アドレスフィールド . . . . . . . . . . . . . . . . . . . . . . . . . . 13クロスリファレンス、生成 . . . . . . . . . . . . . . . . . 26, 81コメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93シンボルとクロスリファレンスの表 . . . . . . . . . . . . 13データフィールド . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13ファイル名、指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26マクロで生成された行、制御 . . . . . . . . . . . . . . . . . . 81条件付きコードと文字列 . . . . . . . . . . . . . . . . . . . . . . 81生成された行、制御 . . . . . . . . . . . . . . . . . . . . . . . . . . 81無効 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81有効 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

アセンブラ演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33式内 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6優先順位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

アセンブラ式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6アセンブラ診断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113アセンブラ制御ディレクティブ . . . . . . . . . . . . . . . . . . . 92アセンブラ命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5アセンブラ、呼出し構文. . . . . . . . . . . . . . . . . . . . . . . . . . 3アセンブリモード、設定. . . . . . . . . . . . . . . . . . . . . . . . . 62アセンブル、構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

アドレスフィールド、アセンブラリストファイル . . . 13アラインメントエラー、考えられる理由 . . . . . . . . . . . 62アラインメント、セグメント. . . . . . . . . . . . . . . . . . . . . 63アーキテクチャ、RX. . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

い#include ファイル、指定 . . . . . . . . . . . . . . . . . . . . . . . . . 25#include( アセンブラディレクティブ ). . . . . . . . . . . . . . 84インクルードパス、指定. . . . . . . . . . . . . . . . . . . . . . . . . 25インターナルエラー . . . . . . . . . . . . . . . . . . . . . . . . . . . 114インラインコーディング、マクロ使用 . . . . . . . . . . . . . 77

うエラーメッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22#error、表示のために使用 . . . . . . . . . . . . . . . . . . . . . 87

おオプションの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17オペランド

アセンブラ式内 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6フォーマット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

くクロスリファレンス、アセンブラリストファイル内 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26, 81グローバル値、定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

ここのガイドで使用されている規則 . . . . . . . . . . . . . . . . xiiiコマンドプロンプトアイコン、本ガイド . . . . . . . . . . xiiiコマンドラインオプション

呼出し構文のパート . . . . . . . . . . . . . . . . . . . . . . . . . . . 3受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

ARX-1

119

Page 134: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

120

表記規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiiコマンドラインオプション、拡張 . . . . . . . . . . . . . . . . . 25コメント

C 形式のプリプロセッサディレクティブでの. . . . . 87アセンブラソースコード内 . . . . . . . . . . . . . . . . . . . . . 5アセンブラリストファイル . . . . . . . . . . . . . . . . . . . . 93複数行、アセンブラディレクティブで使用 . . . . . . 93

コンピュータスタイル、表記規則 . . . . . . . . . . . . . . . . xiiiコードモデル

コマンドラインで指定 (--code_model) . . . . . . . . . . . 19特定 (__CODE_MODEL__) . . . . . . . . . . . . . . . . . . . . . 10

さサポート、技術 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

しシンボル

アセンブラシンボルも参照

ユーザ定義、大文字 / 小文字を区別する . . . . . . . . . 18他のモジュールへのエクスポート . . . . . . . . . . . . . . 58定義済、アセンブラマクロ内 . . . . . . . . . . . . . . . . . . 75定義済、アセンブラ内 . . . . . . . . . . . . . . . . . . . . . . . . 10

シンボルとクロスリファレンスの表、アセンブラリストファイル内. . . . . . . . . . . . . . . . . . . . . 13

アセンブラリストファイル内のクロスリファレンスも参照

シンボル制御ディレクティブ. . . . . . . . . . . . . . . . . . . . . 57シンボル値、チェック . . . . . . . . . . . . . . . . . . . . . . . . . . 68

せセグメント

アラインメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63共通、開始 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63再配置可能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62絶対 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

セグメント制御ディレクティブ . . . . . . . . . . . . . . . . . . . 59

そソースファイル

インクルード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86すべての参照先をリスト化 . . . . . . . . . . . . . . . . . . . . 25

ソースフォーマット、アセンブラ . . . . . . . . . . . . . . . . . . 5ソース行番号、変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

つツールアイコン、本ガイド. . . . . . . . . . . . . . . . . . . . . . xiii

てディレクティブ。 アセンブラディレクティブを参照

--debug( コンパイラオプション ) . . . . . . . . . . . . . . . . . . 20デバッグ情報、アセンブラ出力に含める . . . . . . . . 20, 30デフォルトベース、定数用. . . . . . . . . . . . . . . . . . . . . . . 93データフィールド、アセンブラリストファイル . . . . . 13--data_model( アセンブラオプション ) . . . . . . . . . . . . . . 19データ割当てディレクティブ. . . . . . . . . . . . . . . . . . . . . 89データ定義ディレクティブ. . . . . . . . . . . . . . . . . . . . . . . 89

はバイトオーダ

指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

バックトレース情報、定義. . . . . . . . . . . . . . . . . . . . . . . 96パラメータ

指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16表記規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

バージョン、アセンブラの. . . . . . . . . . . . . . . . . . . . . . . 11

ひビッグエンディアンアプリケーション、リンク . . . . . 62

ARX-1

IAR アセンブラ

リファレンスガイド

Page 135: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

索引

ふファイルタイプ

アセンブラソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3アセンブラ出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3コマンドライン拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . 25#include、パスを指定 . . . . . . . . . . . . . . . . . . . . . . . . . 25

ファイル依存関係、追跡. . . . . . . . . . . . . . . . . . . . . . . . . 20ファイル拡張子。 ファイル名の拡張子を参照

ファイル名の拡張子asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3msa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3r54 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3s54 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3xcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

ファイル名、アセンブラオブジェクトファイルの指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28フォーマット、アセンブラソースコード . . . . . . . . . . . . 5プリプロセッサシンボル

コマンドラインで定義 . . . . . . . . . . . . . . . . . . . . . . . . 19定義と定義取消し . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

プログラミングのヒント. . . . . . . . . . . . . . . . . . . . . . . . . 14プログラミング経験、必須. . . . . . . . . . . . . . . . . . . . . . . xiプログラムカウンタ。 プログラムロケーションカウンタも参照

プログラムモジュール、開始. . . . . . . . . . . . . . . . . . . . . 55プログラムロケーションカウンタ (PLC) . . . . . . . . . . . . 9

設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

へペア ( レジスタペア ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9ヘッダファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

まマクロの引用符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27マクロ処理ディレクティブ. . . . . . . . . . . . . . . . . . . . . . . 73

マクロ。 アセンブラマクロも参照

マルチバイト文字のサポート. . . . . . . . . . . . . . . . . . . . . 24

めメッセージ、標準出力ストリームから除外 . . . . . . . . . 30メモリ空間、予約と初期化. . . . . . . . . . . . . . . . . . . . . . . 91メモリ、空間の予約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

もモジュール

終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55複数モジュールファイルのアセンブル . . . . . . . . . . 55

モジュールの互換性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56モジュール制御ディレクティブ . . . . . . . . . . . . . . . . . . . 53

ゆユーザシンボル、大文字 / 小文字を区別する . . . . . . . 18

らライブラリモジュール . . . . . . . . . . . . . . . . . . . . . . . . . . 55ラベル。 アセンブララベルを参照

ランタイムモデル属性、宣言. . . . . . . . . . . . . . . . . . . . . 56

りリストファイルのフォーマット . . . . . . . . . . . . . . . . . . . 13

CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

シンボルとクロスリファレンス . . . . . . . . . . . . . . . . 13ヘッダ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13ボディ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

リスト制御ディレクティブ. . . . . . . . . . . . . . . . . . . . . . . 80--remarks( アセンブラオプション ). . . . . . . . . . . . . . . . . 30リマーク ( 診断メッセージ ) . . . . . . . . . . . . . . . . . . . . . 113

分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22有効 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

ARX-1

121

Page 136: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

122

れレジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

ろロケーションカウンタ。 プログラムロケーションカウンタも参照

ローカル値、定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

記号^( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 39_args( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 73_args( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . . . . . 75__ARX__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 10__BIG_ENDIAN__( 定義済シンボル ) . . . . . . . . . . . . . . 10__BUILD_NUMBER__ ( 定義済シンボル ) . . . . . . . . . . 10__CODE_MODEL__( 定義済シンボル ) . . . . . . . . . . . . . 10__DATA_MODEL__( 定義済シンボル ) . . . . . . . . . . . . . 10__DATE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . 10__DOUBLE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . 10__FILE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 10__IAR_SYSTEMS_ASM__( 定義済シンボル ) . . . . . . . . 10__LINE__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 10__LITTLE_ENDIAN__( 定義済シンボル ) . . . . . . . . . . . 10__SUBVERSION__( 定義済シンボル ) . . . . . . . . . . . . . . 11__TIME__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . 11__VER__( 定義済シンボル ) . . . . . . . . . . . . . . . . . . . . . . 11-D( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . 19-f( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 25-I( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 25-l( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 26-M( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . 27-o( アセンブラオプション ). . . . . . . . . . . . . . . . . . . . . . . 28-r( アセンブラオプション ) . . . . . . . . . . . . . . . . . . . . . . . 30--case_insensitive( アセンブラオプション ) . . . . . . . . . . 18--data_model( アセンブラオプション ) . . . . . . . . . . . . . . 19--debug( コンパイラオプション ) . . . . . . . . . . . . . . . . . . 20

--dependencies( アセンブラオプション ) . . . . . . . . . . . . 20--diagnostics_tables( アセンブラオプション ). . . . . . . . . 23--diag_error( アセンブラオプション ) . . . . . . . . . . . . . . . 22--diag_remark( アセンブラオプション ) . . . . . . . . . . . . . 22--diag_suppress( アセンブラオプション ) . . . . . . . . . . . . 22--diag_warning( アセンブラオプション ) . . . . . . . . . . . . 22--dir_first( アセンブラオプション ). . . . . . . . . . . . . . . . . 23--double( アセンブラオプション ). . . . . . . . . . . . . . . . . . 23--enable_multibytes( アセンブラオプション ). . . . . . . . . 24--endian( アセンブラオプション ) . . . . . . . . . . . . . . . . . . 24--error_limit( アセンブラオプション ) . . . . . . . . . . . . . . 24--header_context( アセンブラオプション ) . . . . . . . . . . . 25--mnem_first( アセンブラオプション ) . . . . . . . . . . . . . . 27--no_code_model( コンパイラオプション ) . . . . . . . . . . 19--no_path_in_file_macros( アセンブラオプショ ) . . . . . . 27--no_warnings( アセンブラオプション ) . . . . . . . . . . . . . 28--no_wrap_diagnostics( アセンブラオプション ) . . . . . . 28--only_stdout( アセンブラオプション ). . . . . . . . . . . . . . 28--output( アセンブラオプション ) . . . . . . . . . . . . . . . . . . 28--preinclude( アセンブラオプション ). . . . . . . . . . . . . . . 29--preprocess( アセンブラオプション ). . . . . . . . . . . . . . . 29--remarks( アセンブラオプション ). . . . . . . . . . . . . . . . . 30--silent( アセンブラオプション ). . . . . . . . . . . . . . . . . . . 30--warnings_affect_exit_code( アセンブラオプション )4, 31--warnings_are_errors( アセンブラオプション ) . . . . . . . 31-( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 37! ( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 43!=( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 43?: ( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 38() ( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 36*( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 36/( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . 37/*...*/( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 92//( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . . . 92&( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . 38&&( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . 38#define( アセンブラディレクティブ ) . . . . . . . . . . . . . . 84#elif( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . 84#else( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 84

ARX-1

IAR アセンブラ

リファレンスガイド

Page 137: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

索引

#endif( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 84#error( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 84#ifdef( アセンブラディレクティブ ). . . . . . . . . . . . . . . . 84#ifndef( アセンブラディレクティブ ). . . . . . . . . . . . . . . 84#if( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . . 84#include ファイル、指定 . . . . . . . . . . . . . . . . . . . . . . . . . 25#include( アセンブラディレクティブ ). . . . . . . . . . . . . . 84#line( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . 84#pragma( アセンブラディレクティブ ) . . . . . . . . . 84, 111#undef( アセンブラディレクティブ ) . . . . . . . . . . . . . . . 84%( アセンブラ演算子 ). . . . . . . . . . . . . . . . . . . . . . . . . . . 43+( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . 36–37<( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<<( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 45<=( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 42<>( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 43=( アセンブラディレクティブ ) . . . . . . . . . . . . . . . . . . . 67=( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 40==( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 40>( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 41>=( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 41>>( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 45|( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39||( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 43~( アセンブラ演算子 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 38$( プログラムロケーションカウンタ ) . . . . . . . . . . . . . . 9

ARX-1

123

Page 138: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

124

ARX-1

IAR アセンブラ

リファレンスガイド

Page 139: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

ARX-1-J

www.iar.com

IAR アセンブラリファレンスガイド

ルネサス製

RX マイクロコンピュータファミリ対象

Page 140: IAR アセンブラnetstorage.iar.com/SuppDB/Public/UPDINFO/007248/ew/doc/EWRX... · ARX-1 iv IAR アセンブラ リファレンスガイド レジスタシンボル .....9

<-- ê‹ÇËñ•

îwï\éÜ

îwï\éÜ

<-- ê‹ÇËñ•

ARX-1-J

AR

X-1-J

IARアセンブラ

リフ

ァレ

ンス

ガイ

ドR

X対象