FRファミリSOFTUNEアセンブラマニュアルV6対応

Similar documents
始める スタート > 全てのプログラム > Cypress > PSoC Creator 2.0 > PSoC Creator 2.0 をクリックします プロジェクトを作成する / 開く Start Page の "Create New Project" をクリックし 要求されたプロジェクト情報を入

RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コンパイラオプション・アセンブラオプション)(CA78K0R→CC-RL)

プレポスト【解説】

この時お使いの端末の.ssh ディレクトリ配下にある known_hosts ファイルから fx.cc.nagoya-u.ac.jp に関する行を削除して再度ログインを行って下さい

説明書

Microsoft Word - Training10_プリプロセッサ.docx

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ

CASL入門

プログラミング基礎

操作方法 XXXTOEMF は コマンドライン形式のアプリケーションです 通常のコマンドと同じように コマンドラインからの実行やバッチファイルに組み込むことが可能です インストールについては, 別紙の KDxxxx コンバートソフトの特記事項について を参照してください ここでは 直接コマンドライン

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

Cコンパイラパッケージお知らせ

Fortran 勉強会 第 5 回 辻野智紀

講習No.12

インテル(R) Visual Fortran コンパイラ 10.0

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

Polycom RealConnect for Microsoft Office 365

Moodleアンケートの質問一括変換ツール

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

スクールCOBOL2002

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

セットアップカード

book

Microsoft PowerPoint - CproNt02.ppt [互換モード]

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

NEC COBOL SQL アクセス Server Runtime V1.0 COBOL SQL アクセス Server Runtime V1.0 (1 年間保守付 ) COBOL SQL アクセス Server Runtime V1.0 (1 年間時間延長保守付 ) セットアップカード SL438

eYACHO 管理者ガイド

7th CodeGear Developer Camp

PowerPoint Presentation

intra-mart EX申請システム version.7.2 事前チェック

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

24th Embarcadero Developer Camp

Oracle Enterprise Linux 5における認証

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

ポインタ変数

免責事項 Samsung Electronics は 製品 情報 および仕様を予告なく変更する権利を留保します 本書に記載されている製品および仕様は 参照のみを目的としています 本書に記載されているすべての情報は 現状有姿 のまま 何らの保証もない条件で提供されます 本書および本書に記載されているす

CS+ 統合開発環境 ユーザーズマニュアル CC-RL ビルド・ツール操作編

Microsoft PowerPoint - 計算機言語 第7回.ppt


Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕



JavaプログラミングⅠ

CLUSTERPRO MC RootDiskMonitor 1.0 for Windows インストールガイド 2013(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

商標類 Microsoft は, 米国およびその他の国における米国 Microsoft Corp. の登録商標です Microsoft Office は, 米国 Microsoft Corp. の商品名称です Microsoft Excel は, 米国 Microsoft Corp. の商品名称です

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

Microsoft Word - ModelAnalys操作マニュアル_

<4D F736F F D C A8DED8F9C8EE88F878F E C5816A2E646F63>

Novell FilrデスクトップアプリケーションReadme

使用する前に

障害管理テンプレート仕様書

PowerPoint プレゼンテーション

スクールCOBOL2002

COBOL EE開発環境 ご紹介資料

Section1_入力用テンプレートの作成


プログラミング実習I

CONTEC DIOプロバイダ ユーザーズガイド

PowerPoint プレゼンテーション

2. システム構成 の運用環境によってインストールするソフトウェアが異なりますので 本項にあわせ次項の構成例もご確認いただき 必要なソフトウェアを選択してください 3 からの変更点は ESMPRO/AC による電源管理を行うために 4 以外に別途 ESMPRO/AC の制御端末となるサーバが必須にな

INDEX ソフトウェア使用許諾契約書 インストール時に必要なシステム NAVI OFFICE 2のセットアップ お問い合わせ NAVI OFFICE 2 セットアップマニュアル < NAVISTUDIO_EV_7-B >

無償コンパイラ(JDK(Java Development Kit))を用いたJavaプログラムの実行方法

PGRelief C/C++ 強化ポイント説明書

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

1. ユーザー管理 サーバーや特定のサービスにアクセスするためには サーバー上にユーザーアカウントが設定されている必要があります また ユーザーごとに利用環境などを個別に設定することができます また ユーザーの管理の簡便化を図るためにグループが設定できます グループを設定することで ユーザーごとの設

資産ファイルのエクスポート(会計王19シリーズ) 運用ガイド

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

1

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

XMP structure: 1

OpenLAB Data Store Release Notes

CLUSTERPRO MC ProcessSaver 2.3 for Windows ユーザーズガイド ( コマンド編 ) 2018(Jun) NEC Corporation はじめに コマンドリファレンス メッセージ一覧

Microsoft Word - ESX_Setup_R15.docx

設定ファイル R 起動時に読み込まれ, R における種々の設定を項目別にファイルに記述してあります R の主な設定ファイルは Rconsole, Rdevga, Renviron, Rprofile の 4 つです いずれもテキストファイルですが, 改行コードが Windows のものと異なる場合が

CLUSTERPRO X for Windows PPガイド

工程’S 9 ヘルプ Excelバーチャート

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

2006年10月5日(木)実施

Microsoft Kinect for Windows Software Development Kit (SDK) 本マイクロソフトソフトウェアライセンス条項 ( 以下 本ライセンス条項 といいます ) は お客様と Microsoft Corporation ( またはお客様の所在地に応じた関

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

CLUSTERPRO MC StorageSaver for BootDisk 1.2 (for Windows) インストールガイド 2014(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

LINE WORKS セットアップガイド目次 管理者画面へのログイン... 2 ドメイン所有権の確認... 3 操作手順... 3 組織の登録 / 編集 / 削除... 7 組織を個別に追加 ( マニュアル操作による登録 )... 7 組織を一括追加 (XLS ファイルによる一括登録 )... 9

改版履歴 版数改版内容 新規作成 i

CLUSTERPRO MC ProcessSaver 1.0 for Windows ユーザーズガイド ( コマンド編 ) 2012(Sep) NEC Corporation はじめに コマンドリファレンス メッセージ一覧

AppsWF ワークフロー設定ガイド Ver.1.1 株式会社オプロ

Microsoft Word - Cubesuite+_78K0R.doc

パソコン決裁7 Business 試用版

Windows Graphic Loader for Label Printers

譲渡人複数証明データコンバータ操作説明書 平成 26 年 6 月

第 1 条 ( 規約の適用 ) セキュリティ 360 powered by Symantec サービス利用規約 ( 以下 本規約 といいます ) は 株式会社つなぐネットコミュニケーションズ ( 以下 当社 といいます ) が株式会社シマンテック ( 以下 シマンテック といいます ) のソフトウェ

Microsoft Word - Manage_Add-ons

整理番号変換ツール 操作説明書 平成 20 年 11 月 厚生労働省保険局調査課

UNIX 初級講習会 (第一日目)

CLUSTERPRO MC StorageSaver for BootDisk 2.1 (for Windows) インストールガイド 2016(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

NEC Express5800 シリーズ COBOL Enterprise Edition クライアントライセンス V1 COBOL Enterprise Edition クライアントライセンス V1 (1 年間保守付き ) COBOL Enterprise Edition クライアントライセンス

"ソフトウェア カフェテリアサービス向けソフトウェア説明書

Transcription:

FR???? Cover Sheet FR ファミリ SOFTUNE TM アセンブラマニュアル V6 対応 Spec. # 002-04567 Rev. *A Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone (USA): 800.858.1810 Phone (Intnl): 408.943.2600 http://www.cypress.com

Copyrights Cypress Semiconductor Corporation, 2002-2016. 本書面は Cypress Semiconductor Corporation 及び Spansion LLC を含むその子会社 ( 以下 Cypress という ) に帰属する財産である 本書面 ( 本書面に含まれ又は言及されているあらゆるソフトウェア又はファームウェア ( 以下 本ソフトウェア という ) を含む ) は アメリカ合衆国及び世界のその他の国における知的財産法令及び条約に基づき Cypress が所有する Cypress はこれらの法令及び条約に基づく全ての権利を留保し また 本段落で特に記載されているものを除き Cypress の特許権 著作権 商標権又はその他の知的財産権のライセンスを一切許諾していない 本ソフトウェアにライセンス契約書が伴っておらず かつ あなたが Cypress との間で別途本ソフトウェアの使用方法を定める書面による合意をしていない場合 Cypress は あなたに対して (1) 本ソフトウェアの著作権に基づき (a) ソースコード形式で提供されている本ソフトウェアについて Cypress ハードウェア製品と共に用いるためにのみ 組織内部でのみ 本ソフトウェアの修正及び複製を行うこと 並びに (b)cypress のハードウェア製品ユニットに用いるためにのみ ( 直接又は再販売者及び販売代理店を介して間接のいずれかで ) エンドユーザーに対して バイナリーコード形式で本ソフトウェアを外部に配布すること 並びに (2) 本ソフトウェア (Cypress により提供され 修正がなされていないもの ) に抵触する Cypress の特許権のクレームに基づき Cypress ハードウェア製品と共に用いるためにのみ 本ソフトウェアの作成 利用 配布及び輸入を行うことについての非独占的で譲渡不能な一身専属的ライセンス ( サブライセンスの権利を除く ) を付与する 本ソフトウェアのその他の使用 複製 修正 変換又はコンパイルを禁止する 適用される法律により許される範囲内で Cypress は 本書面又はいかなる本ソフトウェアに関しても 明示又は黙示をとわず いかなる保証 ( 商品性及び特定の目的への適合性の黙示の保証を含むがこれらに限られない ) も行わない 適用される法律により許される範囲内で Cypress は 別途通知することなく 本書面を変更する権利を留保する Cypress は 本書面に記載のあるいかなる製品又は回路の適用又は使用から生じる一切の責任を負わない 本書面で提供されたあらゆる情報 ( あらゆるサンプルデザイン情報又はプログラムコードを含む ) は 参照目的のためのみに提供されたものである この情報で構成するあらゆるアプリケーション及びその結果としてのあらゆる製品の機能性及び安全性を適切に設計し プログラムし かつテストすることは 本書面のユーザーの責任において行われるものとする Cypress 製品は 兵器 兵器システム 原子力施設 生命維持装置若しくは生命維持システム 蘇生用の設備及び外科的移植を含むその他の医療機器若しくは医療システム 汚染管理若しくは有害物質管理の運用のために設計され若しくは意図されたシステムの重要な構成部分として用いるため 又はシステムの不具合が人身傷害 死亡若しくは物的損害を生じさせることになるその他の使用 ( 以下 本目的外使用 という ) のためには 設計 意図又は承認されていない 重要な構成部分とは 装置又はシステムのその構成部分の不具合が その装置若しくはシステムの不具合を生じさせるか又はその安全性若しくは実効性に影響すると合理的に予想できる 機器又はシステムのあらゆる構成部分をいう Cypress 製品のあらゆる本目的外使用から生じ 若しくは本目的外使用に関連するいかなる請求 損害又はその他の責任についても Cypress はその全部又は一部をとわず一切の責任を負わず かつ あなたは Cypress をそれら一切から免除するものとし 本書により免除する あなたは Cypress 製品の本目的外使用から生じ又は本目的外使用に関連するあらゆる請求 費用 損害及びその他の責任 ( 人身傷害又は死亡に基づく請求を含む ) から Cypress を免責補償する Cypress Cypress のロゴ Spansion Spansion のロゴ及びこれらの組み合わせ PSoC CapsSense EZ-USB F-RAM 及び Traveo は 米国及びその他の国における Cypress の商標又は登録商標である Cypress の商標のより完全なリストは cypress.com を参照のこと その他の名称及びブランドは それぞれの権利者の財産として権利主張がなされている可能性がある 2 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

Contents Overview はじめに 本書の目的と対象読者 本書は, Cypress SOFTUNE アセンブラの機能および使用方法を説明したものです 本書は, FR ファミリマイクロコントローラを使用した応用プログラムを開発する技術者を対象にしています 本書をご一読ください 本書の全体構成 本書は, 以下に示す 2 部構成となっています 第 1 部使用手引き編この部では, SOFTUNE アセンブラの使用方法について説明します 第 2 部文法編この部では, アセンブラのソースプログラムを記述する際の文法や記述形式について説明します 付録付録では, エラーメッセージの一覧, 制限事項を掲載します FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 3

4 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

Contents 第 1 部使用手引き編...11 第 1 章概要... 13 1.1 SOFTUNE アセンブラ... 14 1.2 アセンブラ文法... 15 第 2 章環境変数, 開発環境のディレクトリ構造... 17 2.1 FETOOL... 18 2.2 FELANG... 19 2.3 TMP... 20 2.4 INC911... 21 2.5 OPT911... 22 2.6 開発環境のディレクトリ構造... 23 第 3 章起動方法... 25 3.1 fasm911s コマンド... 26 3.2 ファイル指定... 27 3.3 ファイル名の扱い... 28 3.3.1 ファイル名の指定形式... 29 3.3.2 ファイル名の省略指定... 30 3.4 オプションファイル... 31 3.5 オプションファイルに記述できるコメント... 32 3.6 デフォルトオプションファイル... 33 3.7 終了コード... 34 第 4 章起動時オプション... 35 4.1 起動時オプションの規則... 36 4.2 起動時オプション一覧... 37 4.3 起動時オプションの詳細... 39 4.4 オブジェクトおよびデバッグに関するオプション... 40 4.4.1 -o, -Xo... 41 4.4.2 -g, -Xg... 42 4.5 リスティングに関するオプション... 43 4.5.1 -l, -lf, -Xl... 44 4.5.2 -pl, -pw... 45 4.5.3 -linf, -lsrc, -lsec, -lcros... 46 4.5.4 -linc, -lexp... 48 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 5

4.5.5 -tab... 49 4.6 プリプロセッサに関するオプション... 50 4.6.1 -p... 51 4.6.2 -P, -Pf... 52 4.6.3 -D, -U... 53 4.6.4 -I... 54 4.6.5 -H... 55 4.6.6 -C... 56 4.7 ターゲット依存オプション... 57 4.7.1 -O... 58 4.7.2 -cpu... 59 4.7.3 -cif... 60 4.8 その他のオプション... 61 4.8.1 -Xdof... 62 4.8.2 -f... 63 4.8.3 -w... 64 4.8.4 -name... 65 4.8.5 -V, -XV... 66 4.8.6 -cmsg, -Xcmsg... 67 4.8.7 -cwno, -Xcwno... 68 4.8.8 -help... 69 4.8.9 -UDSW, -XUDSW... 70 4.8.10 -OVFW, -XOVFW... 71 4.8.11 -reglst_check, -Xreglst_check... 74 4.8.12 -CO... 76 第 5 章最適コードチェック機能について... 79 5.1 fasm911s の最適コードチェック機能... 80 5.1.1 最適コードチェックのレベル... 81 5.1.2 前方参照シンボルの最適化機能... 82 5.1.3 LDI 命令の最適化... 84 5.1.4 分岐命令の最適化... 85 5.1.5 LDI:20, LDI:32 命令の最適化... 92 5.1.6 レジスタ干渉インタロック回避の最適化... 93 5.1.7 通常分岐命令の置換最適化... 94 5.1.8 遅延分岐命令の置換最適化... 96 第 6 章アセンブルリスト... 99 6.1 全体形式... 100 6.2 ページの形式... 101 6.3 インフォメーションリスト... 103 6.4 ソースリスト... 105 6.4.1 プリプロセッサと最適コードチェック処理... 106 6.4.2 エラー表示... 107 6.4.3 インクルードファイル... 108 6.4.4.END,.PROGRAM,.SECTION... 109 6.4.5.ALIGN,.ORG,.SKIP... 110 6.4.6.EXPORT,.GLOBAL,.IMPORT... 111 6 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

6.4.7.EQU,.REG,.FREG... 112 6.4.8.DATA,.BYTE,.HALF,.LONG,.WORD,.DATAB... 113 6.4.9.FDATA,.FLOAT,.DOUBLE,.FDATAB... 115 6.4.10.RES,.FRES... 116 6.4.11.SDATA,.ASCII,.SDATAB... 117 6.4.12.DEBUG... 118 6.4.13.LIBRARY... 119 6.4.14.FORM,.TITLE,.HEADING,.LIST,.PAGE,.SPACE... 120 6.5 セクションリスト... 122 6.6 クロスリファレンスリスト... 123 第 2 部文法編... 125 第 7 章言語の基本規則... 127 7.1 文の形式... 128 7.2 文字セット... 130 7.3 名前... 131 7.4 前方参照シンボルと後方参照シンボル... 133 7.5 整数定数... 134 7.6 ロケーションカウンタシンボル... 135 7.7 文字定数... 136 7.8 文字列... 138 7.9 浮動小数点定数... 139 7.10 浮動小数点定数のデータ形式... 141 7.11 式... 142 7.11.1 項... 144 7.11.2 オペランド値の範囲... 145 7.11.3 演算子... 147 7.11.4 名前から算出される値... 149 7.11.5 演算子の優先順位... 151 7.12 レジスタリスト... 152 7.13 コメント... 153 第 8 章セクション... 155 8.1 セクションの記述形式... 156 8.2 セクションのタイプについて... 158 8.3 セクションタイプと属性... 161 8.4 セクションの配置形式について... 162 8.5 セクションの結合方法... 164 8.6 セクションの分割記述... 166 8.7 ROM 化セクションの書き方... 167 第 9 章機械命令... 169 9.1 機械命令の記述形式... 170 9.2 オペランドフィールドの記述形式... 171 第 10 章アセンブラ擬似命令... 173 10.1 擬似命令で扱う整数定数の範囲... 174 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 7

10.2 プログラム構造定義命令... 175 10.2.1.PROGRAM 命令... 176 10.2.2.END 命令... 177 10.2.3.SECTION 命令... 178 10.3 アドレス制御命令... 180 10.3.1.ALIGN 命令... 181 10.3.2.ORG 命令... 182 10.3.3.SKIP 命令... 183 10.4 プログラム結合命令... 184 10.4.1.EXPORT 命令... 185 10.4.2.GLOBAL 命令... 186 10.4.3.IMPORT 命令... 187 10.5 シンボル定義命令... 188 10.5.1.EQU 命令... 189 10.5.2.REG 命令... 190 10.5.3.FREG 命令... 191 10.6 領域定義命令... 192 10.6.1.DATA 命令,.BYTE/.HALF/.LONG/.WORD 命令... 193 10.6.2.DATAB 命令... 195 10.6.3.FDATA 命令,.FLOAT 命令,.DOUBLE 命令... 196 10.6.4.FDATAB 命令... 198 10.6.5.RES 命令... 199 10.6.6.FRES 命令... 200 10.6.7.SDATA 命令,.ASCII 命令... 201 10.6.8.SDATAB 命令... 202 10.6.9.STRUCT 命令,.ENDS 命令... 203 10.7 デバッグ情報出力制御命令... 205 10.8 ライブラリファイル指定命令... 206 10.9 リスト出力制御命令... 207 10.9.1.FORM 命令... 208 10.9.2.TITLE 命令... 209 10.9.3.HEADING 命令... 210 10.9.4.LIST 命令... 211 10.9.5.PAGE 命令... 213 10.9.6.SPACE 命令... 214 第 11 章プリプロセッサ処理... 215 11.1 プリプロセッサ... 216 11.2 プリプロセッサの基本規則... 218 11.2.1 プリプロセッサ命令の記述形式... 219 11.2.2 コメント... 220 11.2.3 行の継続... 221 11.2.4 整数定数... 222 11.2.5 文字定数... 223 11.2.6 マクロ名... 225 11.2.7 仮引数... 226 11.2.8 ローカルシンボル... 227 11.3 プリプロセッサの式... 228 8 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

11.4 マクロ定義... 231 11.4.1 #macro 命令... 232 11.4.2 #local 命令... 233 11.4.3 #exitm 命令... 234 11.4.4 #endm 命令... 235 11.5 マクロコール命令... 236 11.6 リピート展開... 237 11.7 条件付きアセンブル命令... 239 11.7.1 #if 命令... 240 11.7.2 #ifdef 命令... 241 11.7.3 #ifndef 命令... 242 11.7.4 #else 命令... 243 11.7.5 #elif 命令... 244 11.7.6 #endif 命令... 246 11.8 マクロ名の置換処理... 247 11.8.1 #define 命令... 249 11.8.2 マクロ仮引数の文字列化 (# 演算子 )... 251 11.8.3 マクロ置換の文字の連結 (## 演算子 )... 252 11.8.4 #set 命令... 253 11.8.5 #undef 命令... 254 11.8.6 #purge 命令... 255 11.9 #include 命令... 256 11.10#line 命令... 258 11.11#error 命令... 259 11.12#pragma 命令... 260 11.13 空命令... 261 11.14 既定義マクロ名... 262 11.15C 言語プリプロセッサとの違い... 264 第 12 章アセンブラ擬似機械命令... 265 12.1 アセンブラ擬似機械命令... 266 付録... 275 付録 A エラーメッセージ一覧... 276 付録 B 制限事項... 306 付録 C 主な変更内容... 307 索引... 309 改訂履歴... 319 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 9

10 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 1 部 使用手引き編 この部では, SOFTUNE アセンブラの使用方法について説明します 第 1 章概要第 2 章環境変数, 開発環境のディレクトリ構造第 3 章起動方法第 4 章起動時オプション第 5 章最適コードチェック機能について第 6 章アセンブルリスト FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 11

12 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 1 章 概要 この章では, SOFTUNE アセンブラの概要について説明します 1.1 SOFTUNE アセンブラ 1.2 アセンブラ文法 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 13

第 1 章概要 1.1 SOFTUNE アセンブラ 本アセンブラは, FR ファミリアセンブリ言語で記述されたソースプログラムをアセンブルします 本アセンブラの処理は大きく分けて, プリプロセッサフェーズとアセンブルフェーズの 2 つのフェーズがあります 概要 本アセンブラは, FR ファミリアセンブリ言語で記述されたソースプログラムをアセンブルします そして, リロケータブルなオブジェクトとアセンブルリストを出力します 本アセンブラの処理は, 大きく分けて, プリプロセッサフェーズとアセンブルフェーズの 2 つのフェーズがあります 本アセンブラの構成を, 図 1.1-1 に示します 図 1.1-1 アセンブラの構成 fasm911s プリプロセッサフェーズ アセンブルフェーズ 前処理を行います 前処理とは, マクロ定義, マクロ展開など, テキストを加工する処理のことをいいます 機能仕様に, C 言語のプリプロセッサ仕様をサポートしました これにより, プリプロセッサ処理に関しては C 言語とのヘッダファイルの共有化が可能です C 言語と共有可能な命令は, C 言語のプリプロセッサ命令と, 範囲指定型のコメント記述 (/*~*/) のみです また, このほかにも, マクロ定義 マクロ展開などのアセンブラ特有の機能もサポートしています 前処理を行った結果をファイルに残すことも可能です 機械命令, 擬似命令を翻訳してオブジェクトコードを生成します アセンブルフェーズは, 次に示す機能を備えています C 言語に対応したコメント記述 デバッグ情報出力 機械命令の最適化チェック機能 14 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 1 章概要 1.2 アセンブラ文法 本アセンブラは, IEEE-649 仕様に準拠した言語仕様に加え, ユーザがプログラミングしやすいように, さらに機能を拡張してあります 概要 本アセンブラは, IEEE-649 仕様に準拠した言語仕様に加え, 次の機能を備えています C 言語に対応したコメント記述アセンブラにおいても, C 言語と同じコメントが記述できます 例 /*---------------------- メイン処理 ----------------------*/.SECTION CODE,CODE,ALIGN=2 CALL _init /* 初期化処理 */ アセンブラ擬似命令 IEEE-649 仕様のアセンブラ擬似命令に加え, リスト制御命令, 領域定義命令などの命令を追加し, 機能を充実しました プリプロセッサ処理 C 言語のプリプロセッサ仕様をサポートしました これにより, プリプロセッサ処理に関しては C 言語とのヘッダファイルの共有化が可能です C 言語と共有化可能な命令は C 言語のプリプロセッサ命令と, 範囲指定型のコメント記述 (/* ~ */) のみです また, このほかにマクロ定義 マクロ展開などのアセンブラ特有の機能もサポートしています 例 #ifdef #include #endif SPC_MODE "spc.h" : #define SIZE_MAX 256 /* サイズの最大値 */ デバッグ情報出力 オブジェクトにデバッグ情報を含めることができます プログラムのデバッグには必要不可欠な機能です FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 15

第 1 章概要 16 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 2 章 環境変数, 開発環境のディレクトリ構造 この章では, 本アセンブラで使用する環境変数と開発環境ディレクトリ構造について説明します 2.1 FETOOL 2.2 FELANG 2.3 TMP 2.4 INC911 2.5 OPT911 2.6 開発環境のディレクトリ構造 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 17

第 2 章環境変数, 開発環境のディレクトリ構造 2.1 FETOOL 開発環境をインストールするディレクトリを指定します この環境変数が設定されていない場合は, 起動したアセンブラがあるディレクトリの親のディレクトリをインストールディレクトリとみなします FETOOL 記述形式 SET FETOOL= ディレクトリ 説明 開発環境をインストールするディレクトリを指定します インストールするディレクトリからメッセージファイル, インクルードファイル, ライブラリファイルなどの開発環境に必要なファイルがアクセスされます 開発環境のディレクトリ構造の詳細は, 2.6 開発環境のディレクトリ構造 を参照してください FETOOL が設定されていない場合は, 起動したアセンブラのあるディレクトリの親ディレクトリ ( アセンブラがあるディレクトリの位置 \..) をインストールディレクトリとみなします 例 SET FETOOL=D:\SOFTUNE 18 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 2 章環境変数, 開発環境のディレクトリ構造 2.2 FELANG メッセージの出力形式を指定します この環境変数は省略できます FELANG 記述形式 SET FELANG={ASCII EUC SJIS} 説明 メッセージの出力形式を指定します ASCII を指定した場合 メッセージを ASCII コードで出力します メッセージの言語は英語となります 日本語環境のないシステムの場合は, この形式にしてください EUC を指定した場合 メッセージを EUC コードで出力します メッセージの言語は日本語となります 端末が EUC コードの場合は, この形式にしてください SJIS を指定した場合 メッセージを SJIS コードで出力します メッセージの言語は日本語となります 端末が SJIS コードの場合は, この形式にしてください Windows 環境では, 普通この指定で日本語が表示されます < 参考 > この指定で影響を受けるメッセージは, ヘルプメッセージとエラーメッセージです この環境変数は省略できます 省略したときの出力形式は, ASCII になります 例 SET FELANG=ASCII FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 19

第 2 章環境変数, 開発環境のディレクトリ構造 2.3 TMP アセンブラが使用する作業用のディレクトリを指定します この環境変数は省略できます TMP 記述形式 SET TMP= ディレクトリ 説明 アセンブラが使用する作業用のディレクトリを指定します アクセスできないディレクトリを指定した場合, 本アセンブラは異常終了します この環境変数は省略できます 省略した場合の作業ディレクトリは, カレントディレクトリです 例 SET TMP=D:\TMP 20 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 2 章環境変数, 開発環境のディレクトリ構造 2.4 INC911 インクルードパスを指定します #include 命令で指定されたインクルードファイルを検索するパスを指定します この環境変数は省略できます INC911 記述形式 SET INC911= パス 説明 インクルードパスを指定します #include 命令で指定されたインクルードファイルを検索するパスを指定します 起動時オプションのインクルードパス指定 (-I) で指定されたパスの方を先に検索します それで見つからなければ, INC911 に設定されているパスを検索します この環境変数は省略できます 例 SET INC911=E:\INCLUDE FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 21

第 2 章環境変数, 開発環境のディレクトリ構造 2.5 OPT911 デフォルトオプションファイルのディレクトリを指定します この環境変数は省略できます OPT911 記述形式 SET OPT911= ディレクトリ 説明 デフォルトオプションファイルのディレクトリを指定します デフォルトオプションファイルについての詳細は, 3.6 デフォルトオプションファイル を参照してください この環境変数は省略できます 省略した場合は, 開発環境ディレクトリ内のデフォルトオプションファイルを参照します 開発環境ディレクトリ内のデフォルトオプションファイルは次のとおりです %FETOOL%\LIB\911\FASM911.OPT 例 SET OPT911=D:\USR 22 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 2 章環境変数, 開発環境のディレクトリ構造 2.6 開発環境のディレクトリ構造 開発環境のディレクトリ構造について説明します 開発環境のディレクトリ構造 開発環境は, 図 2.6-1 に示すような構造になっています 各ディレクトリには, 次のようなファイルが入っています %FETOOL%\BIN ロードモジュールディレクトリ - Cコンパイラ, アセンブラ, リンカ, シミュレータなどが入っています %FETOOL%\LIB ライブラリディレクトリ - ライブラリなど付属されるファイルが入っています %FETOOL%\LIB\911 各 MCU 用ライブラリディレクトリ - メッセージファイル, ライブラリファイル, インクルードファイルなどが入っています %FETOOL%\LIB\911\INCLUDE 各 MCU 用インクルードファイルディレクトリ - Cコンパイラの標準インクルードファイルが入っています このディレクトリは, #include 命令の検索において, 最後に検索されます 図 2.6-1 開発環境のディレクトリ構造 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 23

第 2 章環境変数, 開発環境のディレクトリ構造 24 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 3 章 起動方法 この章では, アセンブラの起動方法について説明します 本アセンブラの起動コマンドは, "fasm911s" です 3.1 fasm911s コマンド 3.2 ファイル指定 3.3 ファイル名の扱い 3.4 オプションファイル 3.5 オプションファイルに記述できるコメント 3.6 デフォルトオプションファイル 3.7 終了コード FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 25

第 3 章起動方法 3.1 fasm911s コマンド fasm911s のコマンド形式は次のとおりです fasm911s [ 起動時オプション ] [ ファイル名 ] fasm911s コマンド行 記述形式 fasm911s [ 起動時オプション ] [ ファイル名 ] 説明 fasm911s コマンド行には, 起動時オプションとファイル名を指定することができます 起動時オプションとファイル名は, コマンド行のどの位置からでも指定できます 起動時オプションは複数指定することができます 起動時オプションとファイル名は, それぞれ空白で区切られます fasm911s コマンドは, 次の順序で起動時オプションとファイル名を区別します オプション識別記号で始まるものを起動時オプションと識別します オプション識別記号は, ハイフン (-) です 起動時オプションに引数がある場合は, 次に続く文字を引数とみなします 起動時オプション以外をファイル名とみなします 起動時オプションについては, 第 4 章起動時オプション を参照してください 起動時オプションに "-f オプションファイル名 " と指定すると, -f で指定したファイルを読み込み, そのファイルに記述されている fasm911s コマンドを実行します この機能により, fasm911s コマンドをファイルにしておくことができます 詳細は, 3.4 オプションファイル を参照してください 起動時オプションとファイル名を省略し, fasm911s コマンド以降に何も指定しなかった場合は, 起動時オプションの一覧 ( ヘルプメッセージ ) が出力されます fasm911s コマンドには, デフォルトオプションファイルという機能があります デフォルトオプションファイルに記述してある fasm911s コマンドは, 最初に実行されます 詳細は, 3.6 デフォルトオプションファイル を参照してください 例 fasm911s -f def.opt -l prog.asm fasm911s -f def.opt prog.asm 26 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 3 章起動方法 3.2 ファイル指定 アセンブルソースファイルを指定します アセンブルソースファイルは 1 つのみ指定できます 拡張子を省略した場合, ".asm" をファイル名に付加します ファイル指定 アセンブルソースファイルを指定します アセンブルソースファイルは 1 つのみ指定できます 拡張子を省略した場合, ".asm" をファイル名に付加します 例 ファイル指定 fasm911s test fasm911s test. fasm911s D:\WORK\test fasm911s..\fr\abc.src アセンブルされるファイル test.asm test. D:\WORK\test.asm..\FR\abc.src < 注意事項 > ファイルの記述方法については, それぞれの OS のマニュアルをご覧ください FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 27

第 3 章起動方法 3.3 ファイル名の扱い 本アセンブラにおける, ファイル名の扱いについて説明します 次の 2 つの項目について説明します ファイル名の指定形式 ファイル名の省略指定 ファイル名の指定形式 ファイル名の省略指定 本アセンブラは, ファイル名を < パス名 >, < 主ファイル名 > と < 拡張子 > の 3 つで構成されているものとして扱います < 拡張子 > は, ピリオド (.) 以降の文字を示します < パス名 >, < 拡張子 > は省略できます ファイル名の各要素が省略された場合のファイル名の扱いについて説明します 28 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 3 章起動方法 3.3.1 ファイル名の指定形式 ファイル名の指定形式について説明します 本アセンブラでは, ファイル名を < パス名 >, < 主ファイル名 > と < 拡張子 > の 3 つで構成されているものとして扱います < 拡張子 > は, ピリオド (.) 以降の文字を示します < パス名 >, < 拡張子 > は省略できます ファイル名の指定形式 記述形式 [< パス名 >] < 主ファイル名 > [< 拡張子 >] 説明 ファイル名の詳細は, 各 OS のマニュアルを参照してください 本アセンブラでは, ファイル名を < パス >, < 主ファイル名 > と < 拡張子 > の 3 つで構成されているものとして扱います < 拡張子 > は, ピリオド (.) 以降の文字を示します < パス名 >, < 拡張子 > は省略できます 省略した場合の扱いについては, 3.3.2 ファイル名の省略指定 を参照してください Windows 版の場合, < ドライブ名 > は < パス名 > に含まれます 例 図 3.3-1 ファイル名の指定例 D:\WORK\SRC\TEST.ASM FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 29

第 3 章起動方法 3.3.2 ファイル名の省略指定 ファイル名の各要素が省略された場合のファイル名の扱いについて説明します ファイル名の省略指定 ファイル名の各要素が省略された場合のファイル名の扱いについて説明します オブジェクトファイルまたはリストファイルの指定にパス名のみを指定した場合は, ソースファイル名の主ファイル名を使用します パス名のみを指定した場合 < 指定したパス名 >< ソースファイルの主ファイル名 >< 省略時の拡張子 > ファイル名省略時の扱いを, 表 3.3-1 に示します 表 3.3-1 ファイル名省略時の扱いファイル名の省略部パス名ソースファイルの拡張子オブジェクトファイルの拡張子拡張子リストファイルの拡張子オプションファイルの拡張子前処理結果ファイルの拡張子 扱いカレント.asm.obj.lst.opt.as 例 fasm911s TEST -o D:\WORK\SRC\TEST -lf abc ソースファイル名 : TEST.asm オブジェクトファイル名 : D:\WORK\SRC\TEST.obj リストファイル名 : abc.lst 30 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 3 章起動方法 3.4 オプションファイル オプションファイル機能は, fasm911s コマンドをファイルに記述しておき, 一括指定することができます この機能により, たくさん指定する起動時オプションなどをファイルにすることができます オプションファイルの指定は, 起動時オプションの "-f" です オプションファイル 記述形式 -f オプションファイル名 説明 オプションファイル機能は, fasm911s コマンドをファイルに記述しておき, 一括指定することができます この機能により, たくさん指定する起動時オプションをファイル化することができます オプションファイルの指定は, 起動時オプションの "-f" です オプションファイル名に拡張子を省略した場合は, ".opt" を補います オプションファイルには, fasm911s コマンドが記述できます オプションファイルには, コメントが記述できます 詳細は 3.5 オプションファイルに記述できるコメント を参照してください オプションファイルのネストは, 最大 8 レベルまで可能です 例 図 3.4-1 オプションファイルの指定例 def.opt -I D:\usr\include -D SMAP -I fasm911s -V -f def.opt test fasm911s -V -I D:\usr\include -D SMAP -l test FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 31

第 3 章起動方法 3.5 オプションファイルに記述できるコメント コメントは, 任意のカラムから始めることができます コメントは, シャープ (#) で始まります 行終端までコメントになります オプションファイルに記述できるコメント 記述形式 # コメント そのほかに次のコメントも使用できます /* コメント */ // コメント ; コメント 説明 コメントは, 任意のカラムから始めることができます コメントは, シャープ (#) で始まります 行終端までコメントになります 例 # # FR80 カスタマイズオプション # # インクルードパス # -I D:\usr\test\include # テストインクルード # # デファイン # -D SMAP -D VER=2 32 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 3 章起動方法 3.6 デフォルトオプションファイル オプションファイル機能の 1 つですが, 起動時オプション "-f" を指定しなくてもあらかじめ指定されているオプションファイルを読み込み実行します この機能をデフォルトオプションファイルといいます デフォルトオプションファイル オプションファイル機能の 1 つですが, 起動時オプション "-f" を指定しなくてもあらかじめ指定されているオプションファイルを読み込み実行します この機能をデフォルトオプションファイルといいます デフォルトオプションファイルは, 常にアセンブラ起動時に読み込まれますので, 使用者の環境にあった起動時オプションをあらかじめ指定しておくことができます デフォルトオプションファイル機能を抑止するには, コマンドライン上で起動時オプション "-Xdof" を指定します このオプションが指定されると, デフォルトオプションファイルは読み込まれません デフォルトオプションファイル名は次のように決まっています コマンド名 fasm911s デフォルトオプションファイル名 FASM911.OPT デフォルトオプションファイルの参照手順を次に示します fasm911s で環境変数 "OPT911" が設定されている場合環境変数 "OPT911" で設定されているディレクトリを参照します %OPT911%\FASM911.OPT fasm911s で環境変数 "OPT911" が設定されていない場合開発環境ディレクトリ内のデフォルトオプションファイルを参照します %FETOOL%\LIB\911\FASM911.OPT デフォルトオプションファイルは, なくてもかまいません FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 33

第 3 章起動方法 3.7 終了コード 本アセンブラが処理を終了して OS へ制御を戻すときの終了コードです 終了コード アセンブラが処理を終了して OS へ制御を戻すときの終了コードです このコード値により, アセンブラのおおよその処理状態を知ることができます 表 3.7-1 に終了コードを示します 表 3.7-1 終了コード 処理状態 終了コード 正常終了 0 ウォーニング発生 0 または 1 エラー発生 2 異常終了 3 < 注意事項 > ウォーニング発生時の終了コードは, -cwno/-xcwno オプションの指定によります 詳しくは 4.8.7 -cwno, -Xcwno を参照してください ウォーニングとエラーが同時に発生した場合は, エラーの終了コードを返します エラーが発生した場合は, オブジェクトファイルは作成されません 34 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章 起動時オプション この章では, アセンブラの起動時オプションについて説明します 起動時オプションは, アセンブル処理を制御することができます 起動時オプションは, オプション識別記号で識別されます オプション識別記号は, ハイフン (-) です 4.1 起動時オプションの規則 4.2 起動時オプション一覧 4.3 起動時オプションの詳細 4.4 オブジェクトおよびデバッグに関するオプション 4.5 リスティングに関するオプション 4.6 プリプロセッサに関するオプション 4.7 ターゲット依存オプション 4.8 その他のオプション FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 35

第 4 章起動時オプション 4.1 起動時オプションの規則 起動時オプションの規則について説明します 起動時オプションの規則 起動時オプション全体に関する仕様について説明します 説明では, 起動時オプションを単にオプションといいます 同一オプションの複数指定同じオプションが複数指定されたときは, 最後に指定されたオプションが有効になります 例 fasm911s -o abc test.asm -o def -o def が有効となり, def.obj というオブジェクトファイルを作ります 複数指定可能オプション -D name[=def] : マクロ名の指定 -U name : マクロ名の取消し -I path : インクルードパスの指定 -f filename : オプションファイルの指定これらのオプションは複数指定可能であり, 指定されたオプションすべてが有効になります オプション指定の位置オプション指定の位置は, 特別な意味はありません すなわち, コマンド行のどの位置で指定しても同じ意味です 例 1) fasm911s -C -name prog test.asm -l 2) fasm911s test.asm -l -name prog -C 1), 2) とも同じ処理が行われます 排他関係と依存関係オプションの中には, オプション間で排他関係を持つもの, または依存関係を持つものがあります これらのオプションが同時に指定されたときは, 最後に指定されたオプションが有効になります 例 fasm911s -lf t1 test.asm -Xl -Xl が有効になりリストファイルは作成されません 36 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.2 起動時オプション一覧 起動時オプションの一覧を, 表 4.2-1 に示します 起動時オプション一覧 表 4.2-1 起動時オプション一覧 指定形式 機能概要 初期値 オブジェクトおよびデバッグに関するオプション -o [filename] オブジェクトファイル名の指定 出力する -Xo オブジェクトファイルを作らない -g デバッグ情報出力 出力しない -Xg デバッグ情報出力の取り消しリスティングに関するオプション -l リストファイル出力 出力しない -lf filename リストファイル出力 ( ファイル名指定 ) -Xl リストファイル出力の取り消し -pl {0 20-255} リストの 1 頁の行数 60 -pw {80-1023} リストの 1 行の桁数 100 -linf {ON OFF} インフォメーションリスト出力 ON -lsrc {ON OFF} ソースリスト出力 ON -lsec {ON OFF} セクションリスト出力 ON -lcros {ON OFF} クロスリファレンスリスト出力 OFF -linc {ON OFF} インクルードファイルリスト出力 ON -lexp {ON OFF OBJ} マクロ展開部リスト出力 OBJ -tab {0-32} タブの展開文字数指定 8 プリプロセッサに関するオプション -p プリプロセッサを起動させない 起動する -P プリプロセッサのみの起動 -Pf filename プリプロセッサのみの起動 ( ファイル名指定 ) -D name[=def] マクロ名の指定 -U name マクロ名の取り消し -I path インクルードパスの指定 -H インクルードパスを出力 出力しない -C プリプロセッサ出力にコメントを残す 残さない ターゲット依存オプション -O [0-2] 最適コードチェックレベルの指定 0 -cpu MB 番号 ターゲットチップ指定 -cif CPU 情報ファイル名 参照する CPU 情報ファイルの指定その他のオプション -Xdof デフォルトオプションファイルの取り消し -f filename オプションファイルの指定 -w [0-3] 警告メッセージ出力のレベル指定 2 -name module-name モジュール名の指定 -V 起動メッセージ出力 表示しない -XV 起動メッセージ出力の取り消し -cmsg 終了メッセージの出力 出力しない -Xcmsg 終了メッセージの出力抑止 -cwno 警告メッセージ出力時終了コード 1 指定 0 指定 -Xcwno 警告メッセージ出力時終了コード 0 指定 -help ヘルプメッセージの出力 表示しない -UDSW 未定義シンボル参照時, WARNING 出力 出力する -XUDSW 未定義シンボル参照時, WARNING 出力抑止 -OVFW オーバフローを WARNING レベルとしてコードを生成する指定 -XOVFW オーバフローを ERROR レベルとしてコード生成を行わなくする指定 エラーとする FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 37

第 4 章起動時オプション表 4.2-1 起動時オプション一覧 指定形式 機能概要 初期値 -reglst_check レジスタリストの重複指定チェック指定 チェックする -Xreglst_check レジスタリストの重複指定チェック抑止指定 -CO 共通オブジェクト出力指定 38 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.3 起動時オプションの詳細 起動時オプションはその機能により, 次のように分類します オブジェクトおよびデバッグに関するオプション リスティングに関するオプション プリプロセッサに関するオプション ターゲット依存オプション その他のオプションここでは, それぞれの起動時オプションの詳細について説明します オブジェクトおよびデバッグに関するオプション オブジェクトファイル名の指定やデバッグ情報の出力制御をするオプションです リスティングに関するオプション リストファイル名の指定やリスト形式の指定をするオプションです プリプロセッサに関するオプション プリプロセッサ処理の動作を指定するオプションです ターゲット依存オプション その他のオプション ターゲットチップに依存するオプションです その他のオプションとして, オプションファイルの指定, 警告メッセージ出力のレベル指定, モジュール名の指定などがあります FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 39

4.4 オブジェクトおよびデバッグに関するオプション 第 4 章起動時オプション オブジェクトファイル名の指定やデバッグ情報の出力制御をするオプションです オブジェクトおよびデバッグに関するオプション オブジェクトおよびデバッグに関するオプションは次の 4 種類があります 4.4.1 -o : オブジェクトファイル名の指定 4.4.1 -Xo : オブジェクトファイルを作らない 4.4.2 -g : デバッグ情報出力 4.4.2 -Xg : デバッグ情報出力の取消し 40 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.4.1 -o, -Xo -o は, 指定したオブジェクトファイル名でオブジェクトファイルを作成します -Xo は, オブジェクトファイルを作成しません -o -Xo 両方とも指定がない場合は, ソースファイル名の主ファイル名に拡張子 ".obj" を付けたファイルにオブジェクトを出力します -o 記述形式 -o [ オブジェクトファイル名 ] 説明 指定したオブジェクトファイル名でオブジェクトファイルを作成します オブジェクトファイル名を省略した場合, またはパス名だけを指定した場合は, ソースファイル名の主ファイル名に拡張子 ".obj" を付けたファイルにオブジェクトを出力します 詳細は, 3.3.2 ファイル名の省略指定 を参照してください -Xo 例 fasm911s ex1 -o ex1_a 記述形式 -Xo 説明 オブジェクトファイルを作成しません 例 fasm911s ex1 -Xo FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 41

第 4 章起動時オプション 4.4.2 -g, -Xg -g は, デバッグ情報を出力します -Xg は, デバッグ情報を出力しません -g オプション指定がない場合は, デバッグ情報を出力しません -g 記述形式 -g 説明 オブジェクトファイルにデバッグ情報を出力します デバッグ情報を出力することにより, シミュレータデバッガまたはエミュレータデバッガによるシンボリックデバッグが可能になります 高級言語デバッグなどを行う場合は, このオプションを指定してください -Xg 例 fasm911s c_test -g 記述形式 -Xg 説明 オブジェクトファイルにデバッグ情報を出力しません 例 fasm911s c_test -Xg 42 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.5 リスティングに関するオプション アセンブルリストファイル名の指定やリスト形式の指定をするオプションです リスティングに関するオプション リスティングに関するオプションは次の 12 種類あります 4.5.1 -l : アセンブルリストファイル出力 4.5.1 -lf : アセンブルリストファイル出力 ( ファイル名指定 ) 4.5.1 -Xl : アセンブルリストファイル出力の取り消し 4.5.2 -pl : アセンブルリストの 1 頁の行数 4.5.2 -pw : アセンブルリストの 1 行の桁数 4.5.3 -linf : インフォメーションリスト出力 4.5.3 -lsrc : ソースリスト出力 4.5.3 -lsec : セクションリスト出力 4.5.3 -lcros : クロスリファレンスリスト出力 4.5.4 -linc : インクルードファイル部リスト出力 4.5.4 -lexp : マクロ展開部リスト出力 4.5.5 -tab : タブの展開文字数指定 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 43

第 4 章起動時オプション 4.5.1 -l, -lf, -Xl -l は, アセンブルリストファイルを作成します -lf は, 指定したファイル名でアセンブルリストファイルを作成します -Xl は, アセンブルリストファイルを作成しません -l, -lf, -Xl の 3 つとも指定がない場合は, アセンブルリストファイルを作りません -l 記述形式 -l 説明 アセンブルリストファイルを作成します ソースファイル名の主ファイル名に拡張子 ".lst" を付けたファイルにアセンブルリストを出力します -lf 例 fasm911s test -l 記述形式 -lf アセンブルリストファイル名 説明 指定したアセンブルリストファイル名でアセンブルリストファイルを作成します パス名だけを指定した場合は, ソースファイル名の主ファイル名に拡張子 ".lst" を付けたファイルに出力します 詳細は, 3.3.2 ファイル名の省略指定 を参照してください -Xl 例 fasm911s test -lf \fasm\src\ 記述形式 -Xl 説明 アセンブルリストファイルを作りません 例 fasm911s test -Xl 44 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.5.2 -pl, -pw -pl は, アセンブルリストの 1 ページの行数を指定します -pw は, アセンブルリストの 1 行の桁数を指定します -pl 記述形式 -pl {0 20 ~ 255} 説明 アセンブルリストの 1 ページの行数を指定します 指定された行数内で 1 ページ分のアセンブルリストが作成されます 行数は, 20 ~ 255 の範囲で指定できます 行数に 0 を指定した場合は, 改ページされません 本オプションの指定がないときの値は, 60 です -pw 例 fasm911s test -pl 0 記述形式 -pw {80 ~ 1023} 説明 アセンブルリストの 1 行の桁数を指定します 桁数は, 80 ~ 1023 の範囲で指定できます 本オプションの指定がないときの値は, 100 です 例 fasm911s test -pw 80 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 45

第 4 章起動時オプション 4.5.3 -linf, -lsrc, -lsec, -lcros アセンブルリストは, 大きく次の 4 つに別れています インフォメーションリスト ソースリスト セクションリスト クロスリファレンスリストこれらのリストをそれぞれ出力するかしないかを指定します -linf は, インフォメーションリストを出力するかしないかを指定します -lsrc は, ソースリストを出力するかしないかを指定します -lsec は, セクションリストを出力するかしないかを指定します -lcros は, クロスリファレンスリストを出力するかしないかを指定します -linf 記述形式 -linf {ON OFF} ON : インフォメーションリストを出力します < デフォルト > OFF: インフォメーションリストを出力しません 説明 インフォメーションリストを出力するかしないかを指定します ON/OFF の文字は大文字 / 小文字を区別しません 本オプションの指定がないときは, ON となります -lsrc 例 fasm911s test -linf off 記述形式 -lsrc {ON OFF} ON : ソースリストを出力します < デフォルト > OFF: ソースリストを出力しません 説明 ソースリストを出力するかしないかを指定します ON/OFF の文字は大文字 / 小文字を区別しません 本オプションの指定がないときは, ON となります 例 fasm911s test -lsrc on 46 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション -lsec 記述形式 -lsec {ON OFF} ON : セクションリストを出力します < デフォルト > OFF: セクションリストを出力しません -lcros 説明 セクションリストを出力するかしないかを指定します ON/OFF の文字は大文字 / 小文字を区別しません 本オプションの指定がないときは, ON となります 例 fasm911s test -lsec on 記述形式 -lcros {ON OFF} ON : クロスリファレンスリストを出力します OFF: クロスリファレンスリストを出力しません < デフォルト > 説明 クロスリファレンスリストを出力するかしないかを指定します ON/OFF の文字は大文字 / 小文字を区別しません 本オプションの指定がないときは, OFF となります 例 fasm911s test -lcros on FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 47

第 4 章起動時オプション 4.5.4 -linc, -lexp ソースリスト中には, インクルードファイル, マクロ展開部が含まれますが, これらのリスト出力を制御します -linc は, インクルードファイルについてリスト出力を制御します -lexp は, マクロ展開部についてリスト出力を制御します -linc 記述形式 -linc {ON OFF} ON : インクルードファイルをリストに出力します < デフォルト > OFF: インクルードファイルをリストに出力しません 説明 インクルードファイルについてリスト出力を制御します ON/OFF の文字は大文字 / 小文字を区別しません 本オプションの指定がないときは, ON となります -lexp 例 fasm911s test -linc off 記述形式 -lexp {ON OFF OBJ} ON : マクロ展開部をリストに出力します OFF: マクロ展開部をリストに出力しません OBJ: マクロ展開部のテキスト部はリストには出力しませんが, オブジェクトコードのみリストに出力します < デフォルト > 説明 マクロ展開部についてリスト出力を制御します ON/OFF の文字は大文字 / 小文字を区別しません 本オプションの指定がないときは, OBJ となります 例 fasm911s test -lexp obj 48 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.5.5 -tab -tab は, リスト出力時に, タブをスペースで展開するときの文字数を指定します -tab 記述形式 -tab {0 ~ 32} 説明 リスト出力時にタブをスペースで展開するときの文字数を指定します 本オプションの指定がないときは, 8 となります 例 fasm911s test -tab 4 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 49

第 4 章起動時オプション 4.6 プリプロセッサに関するオプション プリプロセッサ処理の動作を指定するオプションです プリプロセッサに関するオプション プリプロセッサに関するオプションは次の 8 種類あります 4.6.1 -p : プリプロセッサを起動させない 4.6.2 -P : プリプロセッサのみの起動 4.6.2 -Pf : プリプロセッサのみの起動 ( ファイル名指定 ) 4.6.3 -D : マクロ名の指定 4.6.3 -U : マクロ名の取消し 4.6.4 -I : インクルードパスの指定 4.6.5 -H : インクルードパスを出力 4.6.6 -C : プリプロセッサ出力にコメントを残す 50 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.6.1 -p プリプロセッサを起動させないことを指定します -p は, 小文字です -p 記述形式 -p 説明 プリプロセッサを起動させないことを指定します すなわち, プリプロセッサフェーズを飛ばして直接アセンブルフェーズを行います プリプロセッサ処理が行われないので処理時間が少なくなります 高級言語コンパイラが出力するようなプリプロセッサ命令を含まないアセンブルソースをアセンブルする場合に有効です 例 fasm911s test -p FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 51

第 4 章起動時オプション 4.6.2 -P, -Pf -P は, プリプロセッサフェーズの前処理結果を出力します -Pf は, 指定したファイル名にプリプロセッサフェーズの前処理結果を出力します -P 記述形式 -P 説明 プリプロセッサフェーズの前処理結果をファイルに出力します ソースファイル名の主ファイル名に拡張子 ".as" を付けたファイルに出力します プリプロセッサ処理のみ行い, アセンブルフェーズの処理は行いません -Pf 例 fasm911s test -P 記述形式 -Pf 前処理結果ファイル名 説明 指定したファイル名にプリプロセッサフェーズの前処理結果を出力します パス名だけを指定した場合は, ソースファイル名の主ファイル名に拡張子 ".as" を付けたファイルに出力します 詳細は, 3.3.2 ファイル名の省略指定 を参照してください プリプロセッサ処理のみ行い, アセンブルフェーズの処理は行いません 例 fasm911s test -Pf \fasm\src\ 52 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.6.3 -D, -U -D は, マクロ名に定義文字の列を定義します -U は, -D で指定されたマクロ名を取り消します -D 記述形式 -D マクロ名 [= 定義文字の列 ] 説明 マクロ名に定義文字の列を定義します "-D マクロ名 " と記述し, "= 定義文字の列 " を省略した場合は, 1 が定義されます "-D マクロ名 =" と記述し, " 定義文字の列 " だけ記述がない場合は, 空文字が定義されます 本オプションは, 複数指定が可能です 本オプションは, #define 命令と等しい機能を持ちます -U 例 fasm911s test -D OS_type=3 -D Windows 記述形式 -U マクロ名 説明 -D で指定されたマクロ名を取り消します -D と -U オプションの両方で, 同じマクロ名が指定されたときは, オプションの順番に関係なく, マクロ名を取り消します 本オプションは, 複数指定が可能です 本オプションは, #undef 命令と等しい機能を持ちます 例 fasm911s test -D ABC=10 -U ABC FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 53

第 4 章起動時オプション 4.6.4 -I インクルードパスを指定します #include 命令で指定されたインクルードファイルを検索するパスを指定します -I 記述形式 -I インクルードパス 説明 インクルードパスを指定します #include 命令で指定されたインクルードファイルを検索するパスを指定します 本オプションは, 複数指定が可能です 指定順に検索されます #include 命令については, 文法編 11.9 #include 命令 を参照してください 例 fasm911s test -I \include -I \FR 54 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.6.5 -H #include 命令で読み込まれるインクルードファイルのパス名を標準出力に出力します パス名は読み込まれる順に 1 行に 1 つずつ出力します -H 記述形式 -H 説明 #include 命令で読み込まれるインクルードファイルのパス名を標準出力に出力します パス名は読み込まれる順に 1 行に 1 つずつ出力します インクルードファイルの検索でファイルが見つからなかったパス名は出力しません 例 fasm911s test -I \include -I \FR -H FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 55

第 4 章起動時オプション 4.6.6 -C プリプロセッサ処理で, コメントおよび空白をすべて残します 本オプションの指定がないときは, コメントおよび空白は 1 つの空白文字に置き換えられます -C 記述形式 -C 説明 プリプロセッサ処理で, コメントおよび空白をすべて残します 本オプションの指定がないときは, コメントおよび空白は 1 つの空白文字に置き換えられます こうすることで, アセンブルフェーズの処理の負担を少なくしています 例 fasm911s test -C 56 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.7 ターゲット依存オプション ターゲットチップに依存するオプションです ターゲット依存オプション ターゲット依存オプションには次の 3 種類あります 4.7.1 -O : 最適コードのチェックレベルの指定 4.7.2 -cpu : ターゲットチップの指定 4.7.3 -cif : 参照する CPU 情報ファイルの指定 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 57

第 4 章起動時オプション 4.7.1 -O 機械命令の最適コードのチェックレベルを指定するオプションです -O 記述形式 -O [ チェックレベル ] チェックレベル :0 ~ 2 説明 機械命令の最適コードのチェックレベルを指定するオプションです 最適コードのチェックに関しては, 第 5 章最適コードチェック機能について を参照してください チェックレベルを省略した場合は, 0 となります 本オプションの指定がないときは, 0 となります 例 fasm911s test -O 2 58 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.7.2 -cpu ターゲットチップの指定を行います ターゲットチップには, 使用する製品名を指定します -cpu 記述形式 -cpu ターゲットターゲット : 使用する製品名 説明 ターゲットチップの指定を行います ターゲットには, 使用する製品名を指定します 例 fasm911s test -cpu MB91101 fasm911s test -cpu MB91307 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 59

第 4 章起動時オプション 4.7.3 -cif -cif は, SOFTUNE Tools が参照する CPU 情報ファイルを指定します -cif 記述形式 -cif CPU 情報ファイル名 CPU 情報ファイル名 : 参照する CPU 情報ファイル名 説明 SOFTUNE Tools が参照する CPU 情報ファイルを指定します 例 fasm911s test -cpu MB91101 -cif "C: \Softune6 \lib \911\911.csv" < 注意事項 > SOFTUNE Tools は, CPU 情報ファイルを参照して, CPU に関する情報を取得します 関連するツール間で異なる CPU 情報ファイルを参照した場合, 作成するプログラムに問題が発生する可能性があります SOFTUNE Tools に標準で添付されている CPU 情報ファイルは, 以下の場所にあります インストール先ディレクトリ \lib\911\911.csv コンパイラ アセンブラパックを異なるディレクトリにインストールし, SOFTUNE Workbench を使用せずにコンパイラ, アセンブラおよびリンケージエディタを使用する場合, 各ツールに対して同一の CPU 情報ファイルを参照するように -cif で指定してください 60 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.8 その他のオプション その他のオプションとして, オプションファイルの指定, 警告メッセージ出力のレベル指定, モジュール名の指定などがあります その他のオプション その他のオプションは次の 18 種類 (18 個 ) あります 4.8.1 -Xdof : デフォルトオプションファイルの取り消し 4.8.2 -f : オプションファイルの指定 4.8.3 -w : 警告メッセージ出力のレベル指定 4.8.4 -name : モジュール名の指定 4.8.5 -V : 起動メッセージの表示 4.8.5 -XV : 起動メッセージ表示の取り消し 4.8.6 -cmsg : 終了メッセージの出力 4.8.6 -Xcmsg : 終了メッセージ出力の抑止 4.8.7 -cwno : ウォーニング時終了コード 1 指定 4.8.7 -Xcwno : ウォーニング時終了コード 0 指定 4.8.8 -help : ヘルプメッセージの表示 4.8.9 -UDSW : 未定義シンボル参照時, WARNING 出力 4.8.9 -XUDSW : 未定義シンボル参照時, WARNING 出力抑止 4.8.10 -OVFW : オーバフローを WARNING レベルとしてコードを生成する指定 4.8.10 -XOVFW : オーバフローを ERROR レベルとしてコード生成を行わなくする指定 4.8.11 -reglst_check : レジスタリストの重複指定チェック指定 4.8.11 -Xreglst_check : レジスタリストの重複指定チェック抑止指定 4.8.12 -CO : 共通オブジェクトを出力する FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 61

第 4 章起動時オプション 4.8.1 -Xdof デフォルトオプションファイルの読込みを取り消します 本オプションの指定がないときは, デフォルトオプションファイルは常に読み込まれます -Xdof 記述形式 -Xdof 説明 デフォルトオプションファイルの読込みを取り消します 本オプションの指定がないときは, デフォルトオプションファイルは常に読み込まれます デフォルトオプションファイルに関しては, 3.6 デフォルトオプションファイル を参照してください 例 fasm911s test -Xdof 62 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.8.2 -f 指定したオプションファイルを読み込みます オプションファイルには, fasm911s コマンドが記述できます -f 記述形式 -f オプションファイル名 説明 指定したオプションファイルを読み込みます オプションファイル名に拡張子を省略した場合は, 拡張子 ".opt" を補います オプションファイルには, fasm911s コマンドが記述できます 本オプションファイルは, 複数指定が可能です オプションファイルに関しては, 3.4 オプションファイル を参照してください 例 fasm911s test -f test.opt FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 63

第 4 章起動時オプション 4.8.3 -w 警告メッセージの出力レベルを設定します 警告レベルに 0 を指定した場合は, 警告メッセージは 1 つも出力されません -w 記述形式 -w [ 警告レベル ] 説明 警告メッセージの出力レベルを設定します 警告レベルに 0 を指定した場合は, 警告メッセージは 1 つも出力されません 警告レベルを省略した場合は, 2 となります 本オプションの指定がないときは, 2 となります 警告レベルと出力される警告メッセージに関しては, 付録 A エラーメッセージ一覧 を参照してください 警告レベルと出力される警告メッセージを次に示します 警告レベル警告メッセージ 0 すべての警告メッセージを出力しません 1, 2 エラー番号 W1551A, W1711A 以外の警告メッセージを出力 3 すべての警告メッセージを出力 例 fasm911s test -w 0 < 注意事項 > 次の警告は, 警告レベルに 3 を指定した場合に出力します W1551A ソースファイルの最後に.END 命令がなかったときに, 警告を出力します W1711A.ORG 命令でアドレスが戻ったときに, 警告を出力します 64 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.8.4 -name モジュール名を指定します モジュール名は,.PROGRAM 命令よりも本オプションで指定した名前が有効になります -name 記述形式 -name モジュール名 説明 モジュール名を指定します モジュール名は, 名前の規則に従います モジュール名は,.PROGRAM 命令よりも本オプションで指定した名前が有効になります 例 fasm911s test -name prog < 注意事項 > 本オプションで, モジュール名として不適切な文字列を指定した場合は, ソース行の最終行で WARNING メッセージが出力されます FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 65

第 4 章起動時オプション 4.8.5 -V, -XV -V は, アセンブラ実行時に, 起動メッセージを表示します -XV は, 起動メッセージの表示を取り消します -V, -XV 両方とも指定がない場合は, 起動メッセージは表示されません -V 記述形式 -V 説明 アセンブラ実行時に, 起動メッセージを表示します 起動メッセージは, 実行されたアセンブラのバージョン情報とコピーライトを表示します -XV 例 fasm911s test -V 記述形式 -XV 説明 起動メッセージの表示を取り消します 例 fasm911s test -V -XV 66 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.8.6 -cmsg, -Xcmsg -cmsg は, アセンブラ実行時に, 終了メッセージを表示します -Xcmsg は, 終了メッセージの表示を取り消します -cmsg, -Xcmsg 両方とも指定がない場合は, 終了メッセージは表示されません -cmsg 記述形式 -cmsg 説明 アセンブラ実行時に, 終了メッセージを表示します -Xcmsg 例 fasm911s test -cmsg 記述形式 -Xcmsg 説明 終了メッセージの表示を取り消します 例 fasm911s test -cmsg -Xcmsg FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 67

第 4 章起動時オプション 4.8.7 -cwno, -Xcwno -cwno は, 警告メッセージ出力時のアセンブラの終了コードを 1 にします -Xcwno は, 警告メッセージ出力時のアセンブラの終了コードを 0 にします -cwno, -Xcwno 両方とも指定がない場合は, 警告メッセージ出力時のアセンブラの終了コードは 0 です -cwno 記述形式 -cwno 説明 警告メッセージ出力時のアセンブラの終了コードを 1 にします -Xcwno 例 fasm911s test -cwno 記述形式 -Xcwno 説明 警告メッセージ出力時のアセンブラの終了コードを 0 にします 例 fasm911s test -cwno -Xcwno 68 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.8.8 -help 起動時オプションの一覧を表示します これをヘルプメッセージといいます -help 記述形式 -help 説明 起動時オプションの一覧を表示します これをヘルプメッセージといいます 本オプションを指定したときは, アセンブル処理を行いません 例 fasm911s test -help FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 69

第 4 章起動時オプション 4.8.9 -UDSW, -XUDSW -UDSW は, 未定義シンボル参照時に, WARNING メッセージを表示します -XUDSW は, 未定義シンボル参照時に, WARNING メッセージを表示しません -UDSW, -XUDSW 両方とも指定がない場合は, 未定義シンボル参照時に WARNING メッセージを表示します -UDSW 記述形式 -UDSW -XUDSW 説明 未定義シンボル参照時に, WARNING メッセージを表示します 例 fasm911s test -UDSW 記述形式 -XUDSW 説明 未定義シンボル参照時に, WARNING メッセージを表示しません 例 fasm911s test -XUDSW 70 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 4.8.10 -OVFW, -XOVFW -OVFW オプションは, 式を記述できるオペランドの演算結果が, そのオペランドサイズを超える場合に WARNING メッセージを表示します -XOVFW オプションは, 式を記述できるオペランドの演算結果が, そのオペランドサイズを超える場合に ERROR メッセージを表示します -OVFW 記述形式 -OVFW 説明 -OVFW オプションは, 式を記述できるオペランドの演算結果がそのオペランドサイズを超える場合, 以下のような処理を行います 式が記述できるオペランドには, 即値, アドレス値があります WARNING メッセージ (W1541A : 値が範囲外です ) を出力します オブジェクトファイルを出力します オペランドの演算結果をオペランドサイズに合わせてマスクして, 下位ビットのみを設定してコードを出力します アセンブルリスト出力指定オプション ( -l ) を指定した場合, アセンブルリストを出力します 以下に本オプションの指定例と, アセンブルリスト出力例を示します アセンブルリストを出力する場合は, アセンブルリスト出力指定オプション ( -l ) を指定してください 例 fasm911s test -OVFW -l FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 71

第 4 章起動時オプション 出力リスト 123456H は, 20 ビットでマスクされ, オブジェクトとリストファイルに出力される値は 23456H となります SN LOC OBJ LLINE SOURCE <test.asm> ===== : CO 00000000 9B213456 5 LDI:20 #123456H,R1 *** a.asm(2) W1541A:Value out of range (in operand 1) : -OVFW 指定時は, WARNING が出力されます -XOVFW 記述形式 -XOVFW ( デフォルト ) 説明 -XOVFWオプションは, 式を記述できるオペランドの演算結果がそのオペランドサイズを超える場合, 以下のような処理を行います 式が記述できるオペランドには, 即値, アドレス値があります ERROR メッセージ (E4541A : 値が範囲外です ) を出力します オブジェクトファイルは出力しません アセンブルリストには, オペランドの演算結果をオペランドサイズに合わせてマスクして, 下位ビットのみを設定してアセンブルリストにコードを出力します アセンブルリスト出力指定オプション ( -l ) を指定した場合, アセンブルリストを出力します 以下に本オプションの指定例と, アセンブルリスト出力例を示します アセンブルリストを出力する場合は, アセンブルリスト出力指定オプション ( -l ) を指定してください アセンブルリストは, エラー発生時にも出力されます 例 fasm911s test -XOVFW -l 72 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 出力リスト 123456H は, 20 ビットでマスクされ, リストファイルに出力される値は 23456H となります SN LOC OBJ LLINE SOURCE <test.asm> ===== : CO 00000000 9B213456 5 LDI:20 #123456H,R1 *** test.asm(2) E4541A:Value out of range (in operand 1) : -XOVFW 指定時は, ERROR が出力されます FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 73

第 4 章起動時オプション 4.8.11 -reglst_check, -Xreglst_check -reglst_check は, レジスタリストの指定に重複があった場合, WARNING を出力するオプションです -Xreglst_check は, -reglst_check を抑止するためのオプションです -reglst_check 記述形式 -reglst_check ( デフォルト ) 説明 本オプションを指定すると, レジスタリストの指定に重複があった場合, WARNING (W1546A : レジスタリストの指定に重複がありました ( レジスタ名 )) を出力します レジスタリストの指定に重複があった場合の WARNING 出力例を以下に示します 例 1 ", " で指定 STM (R1, R2, R3, R1) *** sample.asm(2) W1546A : レジスタリストの指定に重複がありました (R1) 例 2 "-" で指定 STM (R1-R5, R3-R6) *** sample.asm(3) W1546A : レジスタリストの指定に重複がありました (R3, R4, R5) 例 3 "-" と ", " で指定 STM (R1-R5, R3, R6, R7) *** sample.asm(4) W1546A : レジスタリストの指定に重複がありました (R3) 例 4 複数のレジスタリストシンボルで指定 WKREG :.REG (R1-R4) WKREG2 :.REG (R3-R6) STM (WKREG, WKREG2) *** sample.asm(8) W1546A : レジスタリストの指定に重複がありました (R3, R4) 例 5 レジスタリストシンボルと ", " で指定 WKREG :.REG (R1-R4) STM (WKREG, R2, R4, R7) *** sample.asm(8) W1546A : レジスタリストの指定に重複がありました (R2, R4) 例 6 レジスタリストシンボルと "-" で指定 WKREG :.REG (R1-R4) STM (WKREG, R2-R5, R7) 74 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション *** sample.asm(8) W1546A : レジスタリストの指定に重複がありました (R2, R3, R4) 例 7 レジスタリストシンボル内での重複指定 WKREG :.REG (R1, R4, R7, R3-R7) *** sample.asm(8) W1546A : レジスタリストの指定に重複がありました (R4, R7) -Xreglst_check 記述形式 -Xreglst_check 説明 本オプションを指定すると, -reglst_check オプションを抑止します 本オプションは, デフォルトです FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 75

第 4 章起動時オプション 4.8.12 -CO -CO は, 共通オブジェクトを出力します ターゲット CPU が FR または FR80 のとき, -CO は全 FR 共通オブジェクトを出力します ターゲット CPU が FPU なしの FR81 または FPU 付きの FR81 のとき, -CO は FR81 共通オブジェクトを出力します -CO 記述形式 -CO 説明 ターゲット CPU が FR または FR80 のとき, -CO は全 FR 共通オブジェクトを出力します 全 FR 共通オブジェクトは, 全ての FR 用オブジェクトにリンクすることができます 全 FR 共通オブジェクト出力時, 表 4.8-1 に示す命令で以下のエラーが発生します E4601A: 共通オブジェクトでは使用できない命令ニーモニックです ( 命令名 ) 表 4.8-1 全 FR 共通オブジェクトで使用できない命令一覧 (1 / 2) CALL21 label21 FCMPS FRk,FRj FST FRi, @-R15 CALL21:D label21 FDIVS FRk,FRj,FRi FST FRi, @Ri COPLD #u4,#cc,rj,cri FITOS FRj,FRi FSTM (frlist) COPOP #u4,#cc,crj,cri FLD @(BP,udisp18), FRi FSTOI FRj,FRi COPST #u4,#cc,crj,ri FLD @(R13,Ri), FRi FSUBS FRk,FRj,FRi COPSV #u4,#cc,crj,ri FLD @(R14,disp16), FRi LCALL label21 FABSS FRj,FRi FLD @(R15,udisp16), FRi LCALL:D label21 FADDS FRk,FRj,FRi FLD @R15+, FRi LD @(BP,udisp18), Ri FBA label17 FLD @Ri, FRi LDRES @Ri+,#u4 FBA:D label17 FLDM (frlist) LDUB @(BP,udisp16), Ri FBA20 label20, Ri FMADDS FRk,FRj,FRi LDUH @(BP,udisp17), Ri FBA20:D label20, Ri FMOVS FRj,FRi MOV FRi, Ri FBA32 label32, Ri FMSUBS FRk,FRj,FRi MOV Ri, FRi FBA32:D label32, Ri FMULS FRk,FRj,FRi SRCH0 Ri FBcc label17 FNEGS FRj,FRi SRCH1 Ri 76 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 4 章起動時オプション 表 4.8-1 全 FR 共通オブジェクトで使用できない命令一覧 (2 / 2) FBcc:D label17 FSQRTS FRj,FRi SRCHC Ri FBcc20 label20, Ri FST FRi, @(BP,udisp18) ST Ri, @(BP,udisp18) FBcc20:D label20, Ri FST FRi, @(R13,Ri) STB Ri, @(BP,udisp16) FBcc32 label32, Ri FST FRi, @(R14,disp16) STH Ri, @(BP,udisp17) FBcc32:D label32, Ri FST FRi, @(R15,udisp16) STRES #u4,@ri ターゲット CPU が FPU なしの FR81 または FPU 付きの FR81 のとき, -CO は FR81 共通オブジェクトを 出力します FR81 共通オブジェクトは, FPU なしの FR81 用オブジェクトと FPU 付きの FR81 用オブジェクト両方に リンクすることができます FR81 共通オブジェクト出力時, 表 4.8-2 に示す命令で以下のエラーが発生します E4601A: 共通オブジェクトでは使用できない命令ニーモニックです ( 命令名 ) 表 4.8-2 FR81 共通オブジェクトで使用できない命令一覧 COPLD #u4,#cc,rj,cri FITOS FRj,FRi FST FRi, @(BP,udisp18) COPOP #u4,#cc,crj,cri FLD @(BP,udisp18), FRi FST FRi, @(R13,Ri) COPST #u4,#cc,crj,ri FLD @(R13,Ri), FRi FST FRi, @(R14,disp16) COPSV #u4,#cc,crj,ri FLD @(R14,disp16), FRi FST FRi, @(R15,udisp16) FABSS FRj,FRi FLD @(R15,udisp16), FRi FST FRi, @-R15 FADDS FRk,FRj,FRi FLD @R15+, FRi FST FRi, @Ri FBcc label17 FLD @Ri, FRi FSTM (frlist) FBcc:D label17 FLDM (frlist) FSTOI FRj,FRi FBcc20 label20, Ri FMADDS FRk,FRj,FRi FSUBS FRk,FRj,FRi FBcc20:D label20, Ri FMOVS FRj,FRi LDRES @Ri+,#u4 FBcc32 label32, Ri FMSUBS FRk,FRj,FRi MOV FRi, Ri FBcc32:D label32, Ri FMULS FRk,FRj,FRi MOV Ri, FRi FCMPS FRk,FRj FNEGS FRj,FRi STRES #u4,@ri FDIVS FRk,FRj,FRi FSQRTS FRj,FRi FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 77

第 4 章起動時オプション 例 全 FR 共通オブジェクトを出力 - -cpu で FR の MB 番号を指定 fasm911s -cpu MB91101 -CO sample.asm - -cpu で FR80 の MB 番号を指定 fasm911s -cpu MB91605 -CO sample.asm FR81 共通オブジェクトを出力 - -cpu で FPU なしの FR81 の MB 番号を指定 fasm911s -cpu MB91815 -CO sample.asm - -cpu で FPU 付きの FR81 の MB 番号を指定 fasm911s -cpu MB91815F -CO sample.asm < 注意事項 > -cpu オプションは必須オプションです FR/FR80 共通オブジェクトを出力する場合も, -cpu オプションを必ず指定してください 78 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章 最適コードチェック機能について この章では, アセンブラの最適コードチェック機能について説明します 最適コードチェック機能とは, プログラムをさらに高速に実行できる命令コードに書換え可能な箇所を検出する機能です 5.1 fasm911s の最適コードチェック機能 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 79

5.1 fasm911s の最適コードチェック機能 第 5 章最適コードチェック機能について fasm911s では, プログラムの動作に支障がない範囲で, 最適化可能なプログラム箇所の検出を行います 分岐命令の最適化以外のものについては, 警告メッセージが出力されます fasm911s の最適コードチェック機能 fasm911s では, 次の 6 つの最適化可能なプログラム箇所の検出を行います LDI 命令の最適化 分岐命令の最適化 LDI:20, LDI:32 命令の最適化 レジスタ干渉インタロック回避の最適化 通常分岐命令の置換最適化 遅延分岐命令の置換最適化 80 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について 5.1.1 最適コードチェックのレベル チェックレベルと検出する最適コードチェック処理を表 5.1-1 に示します チェックレベルは, 起動時オプションの "-O" で指定します チェックレベルを指定しなかった場合は, "0" が設定されます チェックレベルと最適コードチェック処理 表 5.1-1 チェックレベルと最適コードチェック処理 チェックレベル LDI 命令の最適化および分岐命令の最適化 LDI:20 LDI:32 命令の最適化 レジスタ干渉インタロック回避の最適化 通常分岐命令の置換最適化 : 最適コードチェックを行い, 警告メッセージを出力します - : 最適コードチェックを行いません : 最適化処理を行います 遅延分岐命令の置換最適化 0 - - - - 1 - - 2 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 81

第 5 章最適コードチェック機能について 5.1.2 前方参照シンボルの最適化機能 本アセンブラでは, 前方参照シンボルの最適化機能を備えています 前方参照シンボルの最適化機能 本アセンブラでは, 前方参照シンボルの最適化機能を備えています この最適化機能は, 次の命令のみに機能します LDI 命令 - LDI 拡張分岐命令 - CALL20 BRA20 Bcc20 FBA20 FBcc20 CALL20:D BRA20:D Bcc20:D FBA20:D FBcc20:D - CALL32 BRA32 Bcc32 FBA32 FBcc32 CALL32:D BRA32:D Bcc32:D FBA32:D FBcc32:D - CALL21 CALL21:D アセンブラソースに記述可能な拡張命令はターゲット CPU ごとに異なります ターゲット CPU で使用できない拡張分岐命令を使用すると, 以下のエラーが発生します E4600A: 不正な命令ニーモニック名です ( 命令名 ) 表 5.1-2 にアセンブラソースに記述可能な拡張分岐命令を示します 表 5.1-2 ターゲットごとにアセンブラソースに記述可能な拡張分岐命令 拡張分岐命令 FR/FR80 FPU なしの FR81 FPU 付きの FR81 CALL20 BRA20 Bcc20 CALL20:D BRA20:D Bcc20:D CALL32 BRA32 Bcc32 CALL32:D BRA32:D Bcc32:D FBA20 FBA20:D FBA32 FBA32:D CALL21 CALL21:D FBcc20 FBcc20:D FBcc32 FBcc32:D : 使用可能 : 使用不可能 前方参照シンボルの最適化機能は, オペランドの即値や分岐アドレスの式の記述に, 以下の条件があります シンボルは前方参照と後方参照の両方を意味します 82 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について LDI 命令の場合 シンボルが絶対値を持つアドレス値であること シンボルが機械命令と同じセクション内にあること, またはシンボルがコードセクション以外のセクションにあること 式の形式が次のいずれかになっていること - シンボル - シンボル + オフセット値 - シンボル - オフセット値 例.SECTION P,CODE,ALIGN=2 LDI #fwd_no+3,r2.section D,DATA,LOCATE=0x1000 fwd_no:.data 1,2,3 拡張分岐命令の場合 シンボルが絶対値か相対値を持つアドレス値であること シンボルが機械命令と同じセクション内にあること 式の形式が次のいずれかになっていること - シンボル - シンボル + オフセット値 - シンボル - オフセット値 例.SECTION P,CODE,ALIGN=2 BRA32 #label,r2 : label: ADD #4,R1 以上のような条件がありますが, 一般的な使い方では, ほとんどすべての命令が問題なく最適化可能となります FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 83

第 5 章最適コードチェック機能について 5.1.3 LDI 命令の最適化 LDI 命令に対して行われる最適化です (LDI:8, LDI:20, LDI:32 命令は対象外です ) LDI 命令の最適化 本最適化は常に行われます LDI 命令に対して行われる最適化です (LDI:8, LDI:20, LDI:32 命令は対象外です ) 通常, 即値の式に前方参照シンボルが記述されている場合, 7.4 前方参照シンボルと後方参照シンボル の章で説明しているように, 最大ビット数が選択されてしまいます 例 前方参照シンボルの最適化を行わない場合.SECTION P,CODE,ALIGN=2 LDI #fwd_no,r2 LDI:32 #fwd_no,r2 と 32 ビットになってしまう.SECTION D,DATA,LOCATE=0x1000 fwd_no:.data 1,2,3 例 前方参照シンボルの最適化を行った場合.SECTION P,CODE,ALIGN=2 LDI #fwd_no,r2 LDI:20 #fwd_no,r2 と 20 ビット命令が生成される.SECTION D,DATA,LOCATE=0x1000 fwd_no:.data 1,2,3 上記の例のように, LDI 命令は前方参照シンボル "fwd_no" の値に応じて最適な命令形式を選択します ( この場合, fwd_no の値は 0x1000 なので LDI:20 命令が選択された ) < 注意事項 > 最適化に条件があります 詳細は, 5.1.2 前方参照シンボルの最適化機能 を参照してください 84 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について 5.1.4 分岐命令の最適化 拡張分岐命令に対して, 分岐ラベルまでの距離に応じた最適化を行います 本最適化は常に行われます 拡張分岐命令を以下に示します CALL 命令用 CALL20 CALL20:D CALL32 CALL32:D CALL21 CALL21:D 整数条件分岐命令用 BRA20 Bcc20 BRA20:D Bcc20:D BRA32 Bcc32 BRA32:D Bcc32:D 浮動小数点条件分岐命令用 FBA20 FBcc20 FBA20:D FBcc20:D FBA32 FBcc32 FBA32:D FBcc32:D 分岐命令の最適化 本最適化は常に行われます まず, 分岐先までの距離を計算します 次の計算式で距離を求めます CALL 命令用, 整数条件分岐命令用 距離 = 分岐先ラベル - 現在のロケーション -2 浮動小数点条件分岐命令用 距離 = 分岐先ラベル - 現在のロケーション -4 次に, 分岐先までの距離に対して最適な命令が生成されます 分岐先までの距離と生成される命令の関係を表 5.1-5 に示します 分岐先ラベルが外部参照シンボルの場合はその他になります FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 85

第 5 章最適コードチェック機能について 整数条件分岐命令用の条件指定部分 ("cc") には, 以下のものが指定できます 表 5.1-3 整数条件分岐命令の条件指定部 ("cc") 条件指定 条件 EQ NE BC NC N P V NV LT GE LE GT LS HI (Z)=1 (Z)=0 (C)=1 (C)=0 (N)=1 (N)=0 (V)=1 (V)=0 (V)or(N)=1 (V)or(N)=0 ((V)xor(N))or(Z)=1 ((V)xor(N))or(Z)=0 (C)or(Z)=1 (C)or(Z)=0 86 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について 浮動小数点条件分岐命令用の条件指定部分 ("cc") には, 以下のものが指定できます 表 5.1-4 浮動小数点数条件分岐命令の条件指定部 ("cc") 条件指定 条件 NE (L) or (G) or (U) = 1 E (E) = 1 LG (L) or (G) = 1 UE (U) or (E) = 1 UL (U) or (L) = 1 GE (G) or (E) = 1 L (L) = 1 UGE (U) or (G) or (E) = 1 UG (U) or (G) = 1 LE (L) or (E) = 1 G (G) = 1 ULE (U) or (L) or (E) = 1 U (U) = 1 O (E) or (L) or (G) = 1 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 87

第 5 章最適コードチェック機能について 表 5.1-5 分岐命令の距離と生成される命令 (1 / 4) 使用可能なターゲット CPU 拡張分岐命令距離生成される命令 FR/ FR80 FPU なしの FR81 FPU 付きの FR81-0x800 ~ +0x7fe CALL label CALL20 label,ri その他 LDI:20 #label,ri CALL @Ri 0x800 ~ +0x7fe CALL:D label CALL20:D label,ri その他 LDI:20 #label,ri CALL:D @Ri -0x100 ~ +0xfe BRA label BRA20 label,ri その他 LDI:20 #label,ri JMP @Ri -0x100 ~ +0xfe BRA:D label BRA20:D label,ri その他 LDI:20 #label,ri JMP:D @Ri -0x100 ~ +0xfe Bcc label Bcc20 label,ri その他 Bxcc false * LDI:20 #label,ri JMP @Ri false: -0x100 ~ +0xfe Bcc:D label Bcc20:D label,ri その他 Bxcc false * LDI:20 #label,ri JMP:D @Ri false: -0x800 ~ +0x7fe CALL label CALL32 label,ri その他 LDI:32 #label,ri CALL @Ri 88 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について 表 5.1-5 分岐命令の距離と生成される命令 (2 / 4) 使用可能なターゲット CPU 拡張分岐命令距離生成される命令 FR/ FR80 FPU なしの FR81 FPU 付きの FR81-0x800 ~ +0x7fe CALL:D label CALL32:D label,ri その他 LDI:32 #label,ri CALL:D @Ri -0x100 ~ +0xfe BRA label BRA32 label,ri その他 LDI:32 #label,ri JMP @Ri -0x100 ~ +0xfe BRA:D label BRA32:D label,ri その他 LDI:32 #label,ri JMP:D @Ri -0x100 ~ +0xfe Bcc label Bcc32 label,ri その他 Bxcc false * LDI:32 #label,ri JMP @Ri false: -0x100 ~ +0xfe Bcc label Bcc32:D label,ri その他 Bxcc false * LDI:32 #label,ri JMP:D @Ri false: CALL21 label CALL21:D label -0x800 ~ 0x7FE CALL label その他 LCALL label -0x800 ~ 0x7FE CALL:D label その他 LCALL:D label -0x10000 ~ 0xFFFE FBA label FBA20 label, Ri その他 LDI:20 #label,ri JMP @Ri FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 89

第 5 章最適コードチェック機能について 表 5.1-5 分岐命令の距離と生成される命令 (3 / 4) 使用可能なターゲット CPU 拡張分岐命令距離生成される命令 FR/ FR80 FPU なしの FR81 FPU 付きの FR81-0x10000 ~ 0xFFFE FBA:D label FBA20:D label, Ri その他 LDI:20 #label,ri JMP:D @Ri -0x10000 ~ 0xFFFE FBcc label FBcc20 label, Ri その他 FBxcc false * LDI:20 #label,ri JMP @Ri false: -0x10000 ~ 0xFFFE FBcc:D label FBcc20:D label, Ri その他 FBxcc false * LDI:20 #label,ri JMP:D @Ri false: -0x10000 ~ 0xFFFE FBA label FBA32 label, Ri その他 LDI:32 #label,ri JMP @Ri -0x10000 ~ 0xFFFE FBA:D label FBA32:D label, Ri その他 LDI:32 #label,ri JMP:D @Ri -0x10000 ~ 0xFFFE FBcc label FBcc32 label, Ri その他 FBxcc false * LDI:32 #label,ri JMP @Ri false: 90 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について 表 5.1-5 分岐命令の距離と生成される命令 (4 / 4) 使用可能なターゲット CPU 拡張分岐命令距離生成される命令 FR/ FR80 FPU なしの FR81 FPU 付きの FR81-0x10000 ~ 0xFFFE FBcc:D label FBcc32:D label, Ri その他 FBxcc false * LDI:32 #label,ri JMP:D @Ri false: * : xcc は cc の背反条件です FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 91

第 5 章最適コードチェック機能について 5.1.5 LDI:20, LDI:32 命令の最適化 この最適化処理は, LDI:20 命令, LDI:32 命令に対して行われます 即値の値が, もっと短い命令でも実現できる場合, 警告メッセージを出力して短い命令に変更します ただし, 即値は前方参照シンボルを含まない絶対値のみ有効です 最適化対象命令を次に示します 対象命令 :LDI:20, LDI:32 LDI:20, LDI:32 命令の最適化 この最適化処理は, LDI:20 命令, LDI:32 命令に対して行われます 即値の値が, もっと短い命令でも実現できる場合, 警告メッセージを出力して短い命令に変更します ただし, 即値は前方参照シンボルを含まない絶対値のみです LDI:20 #i20,ri i20 の値が, 0 ~ 0xff のとき, LDI:8 命令に変更します LDI:32 #i32,ri i32 の値が, 0 ~ 0xff のとき, LDI:8 命令に変更します i32 の値が, 0x100 ~ 0xffff のとき, LDI:20 命令に変更します 例 最適化前 LDI:20 #0,R0 LDI:20 #0xff,R0 LDI:32 #0,R0 LDI:32 #0xff,R0 LDI:32 #0xffff,R0 LDI:8 LDI:8 LDI:8 LDI:8 LDI:20 最適化後 #0,R0 #0xff,R0 #0,R0 #0xff,R0 #0xffff,R0 92 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A

第 5 章最適コードチェック機能について 5.1.6 レジスタ干渉インタロック回避の最適化 本最適化は, レジスタ干渉でインタロックがかかる命令について, その命令の前後関係を調べて前の命令と入替えができる場合は警告メッセージを出力して置換処理を行い, インタロックの回避を行います 最適化対象命令を次に示します 対象命令 :LD, LDUH, LDUB, LEAVE, MOV Ri, PS, ANDCCR, ORCCR DIV1, DMOV @dir10, R13, DMOVB @dir8, R13 レジスタ干渉インタロック回避の最適化 FR はレジスタハザードが発生した場合, インタロックをかけてパイプライン動作を制御することで, ハザードを回避します しかし, レジスタ干渉が起こらなければハザードは発生せず, インタロックもかかりません 本最適化は, レジスタ干渉でインタロックがかかる命令について, その命令の前後関係を調べて前の命令と入替えができる場合は警告メッセージを出力して置換処理を行い, インタロックの回避を行います 最適化対象命令は インストラクションマニュアル でマシンサイクル数が, "b" となっている命令です 例 1 置換処理されるケース ADDN LD CMP ST DMOV MOV ADDN LEAVE MOV 最適化前 最適化後 コメント #4,R1 LD @R4,R0 LD の R0 がレジスタ干渉 @R4,R0 ADDN #4,R1 #0,R0 CMP #0,R0 LD と ADDN を置換 R1,@R2 DMOV @dir10,r13 DMOV の R13 がレジスタ干渉 @dir10,r13 ST R1,@R2 R13,R0 MOV R13,R0 DMOV と ST を置換 #4,R1 LEAVE LEAVE の R14 がレジスタ干渉 ADDN #4,R1 R14,R0 MOV R14,R0 LEAVE と ADDN を置換 例 2 置換処理されないケース ADDN LD CMP ST LD CMP ADDN LEAVE MOV 最適化前 最適化後 コメント #4,R1 レジスタ干渉していないので置 @R4,R0 換しません #0,R2 R2,@R4 LD の R0 がレジスタ干渉してい @R4,R0 ますが, LD の @R4 が ST にあ #0,R0 るため置換できません #4,R1 LEAVE の R15 はインタロック @R15+,RP しません FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A 93

第 5 章最適コードチェック機能について 5.1.7 通常分岐命令の置換最適化 本最適化は通常分岐命令について, その命令の前後関係を調べて前の命令と入替えができる場合は, 警告メッセージを出力し遅延分岐命令に命令を変更して, 前の命令を遅延スロットへ移動させる置換処理を行います こうすることで, 遅延スロットに命令が読み込まれるため分岐するときの実行速度の低下を防ぐことができます 最適化対象命令を次に示します 対象命令 :JMP, RET CALL, BRA, Bcc, LCALL, FBA, FBcc CALL20, BRA20, Bcc20, FBA20, FBcc20 CALL32, BRA32, Bcc32, FBA32, FBcc32 CALL21 通常分岐命令の置換最適化 FR は, パイプライン動作のため分岐命令であることが判明した段階ですでに次の命令を読み込んでしまっています 通常分岐命令は, 分岐をするとき, 余計に読み込んだ命令を実行途中でキャンセルします そのため, 実行速度が低下します 本最適化は, 通常分岐命令について, その命令の前後関係を調べて, 前の命令と入替えができる場合に, 警告メッセージを出力し, 遅延分岐命令に命令を変更して, 前の命令を遅延スロットに移動させる置換処理を行います こうすることで, 遅延スロットに命令が読み込まれるため, 分岐するときの実行速度の低下を防ぐことができます 遅延分岐に関しての詳細は, インストラクションマニュアル を参照してください 例 1 置換処理されるケース ADDN BRA ADDN CALL ADDN BEQ 最適化前 最適化後 コメント #4,R0 BRA:D label BRA を BRA:D に変更 label ADDN #4,R0 ADDN を遅延スロットへ移動 #4,R0 CALL:D label CALL を CALL:D に変更 label ADDN #4,R0 ADDN を遅延スロットへ移動 #4,R0 BEQ:D label BEQ を BEQ:D に変更 label ADDN #4,R0 ADDN を遅延スロットへ移動 94 FR ファミリ SOFTUNE アセンブラマニュアル V6 対応, Spec. # 002-04567 Rev. *A