本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 富士通マイクロエレクトロニクス CONTROLLER MANUAL CM71-00105-1 FR81 ファミリ 32 ビット・マイクロコントローラ プログラミング マニュアル FR81 ファミリ 32 ビット・マイクロコントローラ プログラミング マニュアル 富士通マイクロエレクトロニクスのマイコンを効率的に開発するための情報を下記 URL にてご紹介いたします。 ご採用を検討中 , またはご採用いただいたお客様に有益な情報を公開しています。 http://edevice.fujitsu.com/micom/jp-support/ 富士通マイクロエレクトロニクス株式会社 はじめに ■ 本書の目的と対象読者 FR81 ファミリは , 新しい RISC アーキテクチャの CPU をコアとした 32 ビットシング ルチップマイクロコントローラです。FR81 ファミリは , 高性能な CPU 処理パワーを要 求される組込み用途に最適な仕様になっています。 本書は , 実際にこの FR81 ファミリマイクロコントローラを使用して , 製品を開発され る技術者の方 , 特に FR/FR80/FR81 ファミリ用アセンブラのアセンブリ言語を用いてプ ログラムを制作されるプログラマの方を対象に , FR81 ファミリのプログラミングモデ ルと実行命令について解説したものです。 アセンブリ言語の文法規約およびアセンブラプログラムの使用方法については , 『FR ファミリ アセンブラマニュアル』を参照してください。 * : FR は , FUJITSU RISC controller の略で , 富士通マイクロエレクトロニクス株式会社 の製品です。 ■ 本書の全体構成 本書は , 以下に示す 7 つの章と付録から構成されます。 第 1 章 FR81 ファミリ CPU の概要 FR81 ファミリ CPU の特長と従来 FR ファミリとの相違点について説明します。 第 2 章 メモリアーキテクチャ FR81 ファミリ CPU の持つメモリアーキテクチャについて説明します。メモリアー キテクチャとは , メモリ空間の割り当て , メモリ空間へアクセスする方法のことで す。 第 3 章 プログラミングモデル FR81 ファミリ CPU のプログラミングモデルとして , CPU 内に存在するレジスタに ついて説明します。 第 4 章 リセットと EIT 処理 FR81 ファミリ CPU のリセットと EIT 処理について説明します。EIT 処理は , 例外 , 割込み , トラップの総称です。 第 5 章 パイプライン動作 FR81 ファミリ CPU の特長であるパイプライン動作 , 遅延分岐処理などについて説 明します。 第 6 章 命令概要 FR81 ファミリ CPU の命令概要について説明します。 第 7 章 命令細則 FR81 ファミリ CPU の実行命令をアルファベット順にリファレンス形式で説明しま す。 付録 FR81 ファミリ CPU の命令一覧と命令マップを示します。 i • • • • • • • 本資料の記載内容は , 予告なしに変更することがありますので , ご用命の際は営業部門にご確認くださ い。 本資料に記載された動作概要や応用回路例は , 半導体デバイスの標準的な動作や使い方を示したもので , 実際に使用する機器での動作を保証するものではありません。したがいまして , これらを使用するにあ たってはお客様の責任において機器の設計を行ってください。これらの使用に起因する損害などについ ては , 当社はその責任を負いません。 本資料に記載された動作概要・回路図を含む技術情報は , 当社もしくは第三者の特許権 , 著作権等の知的 財産権やその他の権利の使用権または実施権の許諾を意味するものではありません。また , これらの使用 について , 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。し たがって , これらの使用に起因する第三者の知的財産権やその他の権利の侵害について , 当社はその責任 を負いません。 本資料に記載された製品は , 通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途に使用 されることを意図して設計・製造されています。極めて高度な安全性が要求され , 仮に当該安全性が確保 されない場合 , 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途(原子力 施設における核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生 命維持のための医療機器 , 兵器システムにおけるミサイル発射制御をいう), ならびに極めて高い信頼性 が要求される用途(海底中継器 , 宇宙衛星をいう)に使用されるよう設計・製造されたものではありませ ん。したがって , これらの用途にご使用をお考えのお客様は , 必ず事前に営業部門までご相談ください。 ご相談なく使用されたことにより発生した損害などについては , 責任を負いかねますのでご了承くださ い。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても , 結果的に人身事故 , 火災事故 , 社会的な損害を生じさせないよう , お客様は , 装置の冗長設計 , 延焼対策設計 , 過電流防止対策 設計 , 誤動作防止設計などの安全設計をお願いします。 本資料に記載された製品を輸出または提供する場合は , 外国為替及び外国貿易法および米国輸出管理関 連法規等の規制をご確認の上 , 必要な手続きをおとりください。 本書に記載されている社名および製品名などの固有名詞は , 各社の商標または登録商標です。 Copyright ©2009 FUJITSU MICROELECTRONICS LIMITED All rights reserved. ii 目次 第1章 1.1 1.2 第2章 FR81 ファミリ CPU の概要 ....................................................................... 1 FR81 ファミリ CPU の特長 ................................................................................................... 2 従来 FR ファミリとの変更点.................................................................................................. 4 メモリアーキテクチャ ............................................................................... 7 2.1 アドレス空間 .......................................................................................................................... 8 2.1.1 ダイレクトアドレス領域 .............................................................................................. 8 2.1.2 ベクタテーブル領域 ..................................................................................................... 9 2.1.3 20 ビットアドレッシング領域と 32 ビットアドレッシング領域............................... 10 2.2 データ構造............................................................................................................................ 12 2.2.1 バイトデータ .............................................................................................................. 12 2.2.2 ハーフワードデータ ................................................................................................... 12 2.2.3 ワードデータ .............................................................................................................. 13 2.2.4 バイトオーダ .............................................................................................................. 13 2.3 ワードアライメント ............................................................................................................. 14 2.3.1 プログラムアクセス ................................................................................................... 14 2.3.2 データアクセス .......................................................................................................... 14 第3章 プログラミングモデル ............................................................................. 15 3.1 レジスタ構成 ........................................................................................................................ 16 3.2 汎用レジスタ ........................................................................................................................ 17 3.2.1 汎用レジスタの構成 ................................................................................................... 17 3.2.2 汎用レジスタの特殊な使い方..................................................................................... 17 3.2.3 スタックポインタと R15 の関係 ................................................................................ 18 3.3 専用レジスタ ........................................................................................................................ 19 3.3.1 専用レジスタの構成 ................................................................................................... 19 3.3.2 プログラムカウンタ (PC)........................................................................................... 20 3.3.3 プログラムステータス (PS) ....................................................................................... 21 3.3.4 システムステータスレジスタ (SSR) .......................................................................... 21 3.3.5 割込みレベルマスクレジスタ (ILM) ........................................................................... 22 3.3.6 コンデションコードレジスタ (CCR).......................................................................... 23 3.3.7 システムコンデションコードレジスタ (SCR) ........................................................... 26 3.3.8 リターンポインタ (RP) .............................................................................................. 27 3.3.9 システムスタックポインタ (SSP).............................................................................. 28 3.3.10 ユーザスタックポインタ (USP) ................................................................................. 29 3.3.11 テーブルベースレジスタ (TBR) ................................................................................. 30 3.3.12 乗除算結果レジスタ (MDH,MDL) ............................................................................... 31 3.3.13 ベースポインタ (BP) .................................................................................................. 33 3.3.14 FPU 制御レジスタ (FCR) ........................................................................................... 33 3.3.15 例外ステータスレジスタ (ESR) ................................................................................. 38 3.3.16 デバッグレジスタ (DBR)............................................................................................ 40 3.4 浮動小数点レジスタ ............................................................................................................. 41 iii 第4章 リセットと EIT 処理................................................................................. 43 4.1 リセット ............................................................................................................................... 44 4.2 EIT 処理の基本動作 .............................................................................................................. 45 4.2.1 EIT 処理の種類と事前準備 ......................................................................................... 45 4.2.2 EIT 処理シーケンス.................................................................................................... 46 4.2.3 EIT 処理からの復帰.................................................................................................... 47 4.3 プロセッサ動作状態 ............................................................................................................. 48 4.4 例外 ...................................................................................................................................... 50 4.4.1 不正命令例外 .............................................................................................................. 50 4.4.2 命令アクセス保護違反例外 ........................................................................................ 51 4.4.3 データアクセス保護違反例外..................................................................................... 51 4.4.4 FPU 例外 .................................................................................................................... 52 4.4.5 命令ブレーク .............................................................................................................. 53 4.4.6 ガーデッドアクセスブレーク..................................................................................... 54 4.5 割込み ................................................................................................................................... 55 4.5.1 一般割込み ................................................................................................................. 55 4.5.2 ノンマスカブルインタラプト (NMI)........................................................................... 57 4.5.3 ブレーク割込み .......................................................................................................... 57 4.5.4 データアクセスエラー割込み..................................................................................... 58 4.6 トラップ ............................................................................................................................... 59 4.6.1 INT 命令...................................................................................................................... 59 4.6.2 INTE 命令 ................................................................................................................... 59 4.6.3 ステップトレーストラップ ........................................................................................ 60 4.7 多重 EIT 処理と優先順位 ...................................................................................................... 63 4.7.1 多重 EIT 処理.............................................................................................................. 63 4.7.2 EIT 要因の優先順位.................................................................................................... 64 4.7.3 分岐命令実行時の EIT 受付け..................................................................................... 65 4.8 レジスタ設定の反映されるタイミング................................................................................. 66 4.8.1 割込み許可フラグ (I) の反映タイミング..................................................................... 66 4.8.2 割込みレベルマスクレジスタ (ILM) の反映タイミング.............................................. 66 4.9 一般割込みの使用手順.......................................................................................................... 68 4.9.1 一般割込みを使用するときの準備.............................................................................. 68 4.9.2 割込み処理ルーチンでの処理..................................................................................... 68 4.9.3 一般割込みを使用するときの注意事項 ...................................................................... 69 4.10 注意事項 ............................................................................................................................... 70 4.10.1 EIT シーケンス , RETI シーケンスでの例外発生 ...................................................... 70 4.10.2 マルチプルロード , マルチプルストア命令での例外発生 .......................................... 70 4.10.3 ダイレクトアドレス転送命令での例外発生 ............................................................... 70 第5章 パイプライン動作 .................................................................................... 71 5.1 パイプラインによる命令実行 ............................................................................................... 72 5.1.1 整数パイプライン....................................................................................................... 72 5.1.2 浮動小数点パイプライン ............................................................................................ 74 5.2 パイプライン動作と割込み処理 ........................................................................................... 75 5.2.1 割込みの受付けと取消しの前後不一致 ...................................................................... 75 5.2.2 前後不一致の防止方法 ............................................................................................... 75 5.3 パイプラインハザード.......................................................................................................... 76 5.3.1 データハザードの発生 ............................................................................................... 76 5.3.2 レジスタバイパス....................................................................................................... 76 iv 5.3.3 インターロック .......................................................................................................... 77 5.3.4 スタックフラグ (S) の書換え後の R15 レジスタ参照によるインターロック ............ 77 5.3.5 構造ハザード .............................................................................................................. 78 5.3.6 制御ハザード .............................................................................................................. 78 5.4 ノンブロッキングロード ...................................................................................................... 79 5.5 遅延分岐処理 ........................................................................................................................ 80 5.5.1 遅延なし分岐命令の処理例 ........................................................................................ 80 5.5.2 遅延分岐命令の処理例 ............................................................................................... 81 第6章 命令概要................................................................................................... 83 6.1 命令体系 ............................................................................................................................... 84 6.1.1 整数系命令 ................................................................................................................. 84 6.1.2 浮動小数点系命令....................................................................................................... 86 6.2 命令形式 ............................................................................................................................... 88 6.2.1 命令記述形式 .............................................................................................................. 88 6.2.2 アドレス指定形式....................................................................................................... 89 6.2.3 命令フォーマット....................................................................................................... 90 6.2.4 レジスタ指定フィールド ............................................................................................ 94 6.3 データフォーマット ............................................................................................................. 96 6.3.1 整数系命令で使用するデータフォーマット ( 全 FR ファミリ共通 ) .......................... 96 6.3.2 浮動小数点系命令で使用するフォーマット ............................................................... 97 6.4 リードモディファイライト系命令........................................................................................ 99 6.5 分岐命令と遅延スロット .................................................................................................... 100 6.5.1 遅延分岐命令 ............................................................................................................ 100 6.5.2 遅延分岐命令の具体例 ............................................................................................. 101 6.5.3 遅延なし分岐命令..................................................................................................... 102 6.6 ステップ除算命令 ............................................................................................................... 103 6.6.1 符号付き除算 ............................................................................................................ 103 6.6.2 符号なし除算 ............................................................................................................ 104 第7章 命令細則................................................................................................. 107 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 7.12 7.13 7.14 7.15 7.16 7.17 7.18 ADD (Add 4bit Immediate Data to Destination Register).................................................... 109 ADD (Add Word Data of Source Register to Destination Register) .................................... 111 ADD2 (Add 4bit Immediate Data to Destination Register).................................................. 113 ADDC (Add Word Data of Source Register and Carry Bit to Destination Register) ........... 115 ADDN (Add Immediate Data to Destination Register) ........................................................ 117 ADDN (Add Word Data of Source Register to Destination Register) ................................. 118 ADDN2 (Add Immediate Data to Destination Register) ...................................................... 120 ADDSP (Add Stack Pointer and Immediate Data).............................................................. 121 AND (And Word Data of Source Register to Data in Memory) ........................................... 122 AND (And Word Data of Source Register to Destination Register) .................................... 124 ANDB (And Byte Data of Source Register to Data in Memory) .......................................... 126 ANDCCR (And Condition Code Register and Immediate Data) ......................................... 128 ANDH (And Halfword Data of Source Register to Data in Memory)................................... 130 ASR (Arithmetic shift to the Right Direction)....................................................................... 132 ASR (Arithmetic shift to the Right Direction)....................................................................... 134 ASR2 (Arithmetic shift to the Right Direction)..................................................................... 136 BANDH (And 4bit Immediate Data to Higher 4bit of Byte Data in Memory) ....................... 138 BANDL (And 4bit Immediate Data to Lower 4bit of Byte Data in Memory)......................... 140 v 7.19 7.20 7.21 7.22 7.23 7.24 7.25 7.26 7.27 7.28 7.29 7.30 7.31 7.32 7.33 7.34 7.35 7.36 7.37 7.38 7.39 7.40 7.41 7.42 7.43 7.44 7.45 7.46 7.47 7.48 7.49 7.50 7.51 7.52 7.53 7.54 7.55 7.56 7.57 7.58 7.59 7.60 7.61 Bcc (Branch relative if Condition satisfied) ......................................................................... 142 Bcc:D (Branch relative if Condition satisfied)...................................................................... 144 BEORH (Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory)........................ 146 BEORL (Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory) ......................... 148 BORH (Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory)............................ 150 BORL (Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory) ............................. 152 BTSTH (Test Higher 4bit of Byte Data in Memory)............................................................. 154 BTSTL (Test Lower 4bit of Byte Data in Memory) .............................................................. 156 CALL (Call Subroutine)....................................................................................................... 158 CALL (Call Subroutine)....................................................................................................... 160 CALL:D (Call Subroutine) ................................................................................................... 161 CALL:D (Call Subroutine) ................................................................................................... 163 CMP (Compare Immediate Data and Destination Register)............................................... 165 CMP (Compare Word Data in Source Register and Destination Register) ........................ 167 CMP2 (Compare Immediate Data and Destination Register)............................................. 169 DIV0S (Initial Setting Up for Signed Division)..................................................................... 171 DIV0U (Initial Setting Up for Unsigned Division)................................................................. 173 DIV1 (Main Process of Division) ......................................................................................... 175 DIV2 (Correction When Remain is zero) ............................................................................ 177 DIV3 (Correction When Remain is zero) ............................................................................ 179 DIV4S (Correction Answer for Signed Division) ................................................................. 181 DMOV (Move Word Data from Direct Address to Register) ............................................... 183 DMOV (Move Word Data from Register to Direct Address) ............................................... 185 DMOV (Move Word Data from Direct Address to Post Increment Register Indirect Address) ............................................................................................................................................ 187 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) ............................................................................................................................................ 189 DMOV (Move Word Data from Direct Address to Pre Decrement Register Indirect Address) ............................................................................................................................................ 191 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) ............................................................................................................................................ 193 DMOVB (Move Byte Data from Direct Address to Register) .............................................. 195 DMOVB (Move Byte Data from Register to Direct Address) .............................................. 197 DMOVB (Move Byte Data from Direct Address to Post Increment Register Indirect Address) ............................................................................................................................................ 199 DMOVB (Move Byte Data from Post Increment Register Indirect Address to Direct Address) ............................................................................................................................................ 201 DMOVH (Move Halfword Data from Direct Address to Register) ....................................... 203 DMOVH (Move Halfword Data from Register to Direct Address) ....................................... 205 DMOVH (Move Halfword Data from Direct Address to Post Increment Register Indirect Address) ............................................................................................................................. 207 DMOVH (Move Halfword Data from Post Increment Register Indirect Address to Direct Address) ............................................................................................................................. 209 ENTER (Enter Function)..................................................................................................... 211 EOR (Exclusive Or Word Data of Source Register to Data in Memory) ............................. 213 EOR (Exclusive Or Word Data of Source Register to Destination Register) ...................... 215 EORB (Exclusive Or Byte Data of Source Register to Data in Memory) ............................ 217 EORH (Exclusive Or Halfword Data of Source Register to Data in Memory)..................... 219 EXTSB (Sign Extend from Byte Data to Word Data) .......................................................... 221 EXTSH (Sign Extend from Byte Data to Word Data).......................................................... 222 EXTUB (Unsign Extend from Byte Data to Word Data)...................................................... 223 vi 7.62 7.63 7.64 7.65 7.66 7.67 7.68 7.69 7.70 7.71 7.72 7.73 7.74 7.75 7.76 7.77 7.78 7.79 7.80 7.81 7.82 7.83 7.84 7.85 7.86 7.87 7.88 7.89 7.90 7.91 7.92 7.93 7.94 7.95 7.96 7.97 7.98 7.99 7.100 7.101 7.102 7.103 7.104 7.105 7.106 7.107 7.108 7.109 7.110 EXTUH (Unsign Extend from Byte Data to Word Data)...................................................... 224 FABSs (Single Precision Floating Point Absolute Value) ................................................... 225 FADDs (Single Precision Floating Point Add)..................................................................... 226 FBcc (Floating Point Conditional Branch)........................................................................... 228 FBcc:D (Floating Point Conditional Branch with Delay Slot) .............................................. 230 FCMPs (Single Precision Floating Point Compare)............................................................ 232 FDIVs (Single Precision Floating Point Division) ................................................................ 234 FiTOs (Convert from Integer to Single Precision Floating Point)........................................ 236 FLD (Single Precision Floating Point Data Load) ............................................................... 237 FLD (Single Precision Floating Point Data Load) ............................................................... 238 FLD (Single Precision Floating Point Data Load) ............................................................... 239 FLD (Single Precision Floating Point Data Load) ............................................................... 240 FLD (Single Precision Floating Point Data Load) ............................................................... 241 FLD (Load Word Data in Memory to Floating Register) ..................................................... 242 FLDM (Single Precision Floating Point Data Load to Multiple Register) ............................ 243 FMADDs (Single Precision Floating Point Multiply and Add) ............................................. 245 FMOVs (Single Precision Floating Point Move).................................................................. 247 FMSUBs (Single Precision Floating Point Multiply and Subtract)....................................... 248 FMULs (Single Precision Floating Point Multiply)............................................................... 250 FNEGs (Single Precision Floating Point sign reverse) ....................................................... 252 FSQRTs (Single Precision Floating Point Square Root) .................................................... 253 FST (Single Precision Floating Point Data Store)............................................................... 254 FST (Single Precision Floating Point Data Store)............................................................... 255 FST (Single Precision Floating Point Data Store)............................................................... 256 FST (Single Precision Floating Point Data Store)............................................................... 257 FST (Single Precision Floating Point Data Store)............................................................... 258 FST (Store Word Data in Floating Point Register to Memory)............................................ 259 FSTM (Single Precision Floating Point Data Store from Multiple Register)........................ 260 FsTOi (Convert from Single Precision Floating Point to Integer)........................................ 262 FSUBs (Single Precision Floating Point Subtract).............................................................. 264 INT (Software Interrupt) ...................................................................................................... 266 INTE (Software Interrupt for Emulator) ............................................................................... 268 JMP (Jump) ........................................................................................................................ 270 JMP:D (Jump)..................................................................................................................... 271 LCALL (Long Call Subroutine)............................................................................................ 272 LCALL:D (Long Call Subroutine) ........................................................................................ 273 LD (Load Word Data in Memory to Register) ..................................................................... 274 LD (Load Word Data in Memory to Register) ..................................................................... 275 LD (Load Word Data in Memory to Register) ..................................................................... 277 LD (Load Word Data in Memory to Register) ..................................................................... 279 LD (Load Word Data in Memory to Register) ..................................................................... 281 LD (Load Word Data in Memory to Register) ..................................................................... 283 LD (Load Word Data in Memory to Register) ..................................................................... 284 LD (Load Word Data in Memory to Program Status Register) ........................................... 286 LDI:20 (Load Immediate 20bit Data to Destination Register) ............................................. 288 LDI:32 (Load Immediate 32 bit Data to Destination Register) ............................................ 290 LDI:8 (Load Immediate 8bit Data to Destination Register) ................................................. 292 LDM0 (Load Multiple Registers) ......................................................................................... 293 LDM1 (Load Multiple Registers) ......................................................................................... 295 vii 7.111 7.112 7.113 7.114 7.115 7.116 7.117 7.118 7.119 7.120 7.121 7.122 7.123 7.124 7.125 7.126 7.127 7.128 7.129 7.130 7.131 7.132 7.133 7.134 7.135 7.136 7.137 7.138 7.139 7.140 7.141 7.142 7.143 7.144 7.145 7.146 7.147 7.148 7.149 7.150 7.151 7.152 7.153 7.154 7.155 7.156 7.157 7.158 7.159 LDUB (Load Byte Data in Memory to Register).................................................................. 297 LDUB (Load Byte Data in Memory to Register).................................................................. 298 LDUB (Load Byte Data in Memory to Register).................................................................. 300 LDUB (Load Byte Data in Memory to Register).................................................................. 302 LDUH (Load Halfword Data in Memory to Register)........................................................... 303 LDUH (Load Halfword Data in Memory to Register)........................................................... 304 LDUH (Load Halfword Data in Memory to Register)........................................................... 306 LDUH (Load Halfword Data in Memory to Register)........................................................... 308 LEAVE (Leave Function) .................................................................................................... 309 LSL (Logical Shift to the Left Direction) .............................................................................. 311 LSL (Logical Shift to the Left Direction) .............................................................................. 313 LSL2 (Logical Shift to the Left Direction) ............................................................................ 315 LSR (Logical Shift to the Right Direction) ........................................................................... 316 LSR (Logical Shift to the Right Direction) ........................................................................... 318 LSR2 (Logical Shift to the Right Direction) ......................................................................... 320 MOV (Move Word Data in Source Register to Destination Register) ................................. 321 MOV (Move Word Data in Source Register to Destination Register) ................................. 322 MOV (Move Word Data in Program Status Register to Destination Register).................... 323 MOV (Move Word Data in Source Register to Destination Register) ................................. 324 MOV (Move Word Data in Source Register to Program Status Register) .......................... 326 MOV (Move Word Data in General Purpose Register to Floating Point Register) ............. 328 MOV (Move Word Data in Floating Point Register to General Purpose Register) ............. 329 MUL (Multiply Word Data) .................................................................................................. 330 MULH (Multiply Halfword Data) .......................................................................................... 332 MULU (Multiply Unsigned Word Data)................................................................................ 334 MULUH (Multiply Unsigned Halfword Data) ....................................................................... 336 NOP (No Operation) ........................................................................................................... 338 OR (Or Word Data of Source Register to Data in Memory)................................................ 339 OR (Or Word Data of Source Register to Destination Register)......................................... 341 ORB (Or Byte Data of Source Register to Data in Memory)............................................... 343 ORCCR (Or Condition Code Register and Immediate Data).............................................. 345 ORH (Or Halfword Data of Source Register to Data in Memory) ....................................... 347 RET (Return from Subroutine)............................................................................................ 349 RET:D (Return from Subroutine) ........................................................................................ 350 RETI (Return from Interrupt)............................................................................................... 352 SRCH0 (Search First Zero bit position distance From MSB).............................................. 355 SRCH1 (Search First One bit position distance From MSB) .............................................. 357 SRCHC (Search First bit value change position distance From MSB) ............................... 359 ST (Store Word Data in Register to Memory)..................................................................... 361 ST (Store Word Data in Register to Memory)..................................................................... 362 ST (Store Word Data in Register to Memory)..................................................................... 364 ST (Store Word Data in Register to Memory)..................................................................... 366 ST (Store Word Data in Register to Memory)..................................................................... 368 ST (Store Word Data in Register to Memory)..................................................................... 370 ST (Store Word Data in Register to Memory)..................................................................... 371 ST (Store Word Data in Program Status Register to Memory)........................................... 373 STB (Store Byte Data in Register to Memory).................................................................... 375 STB (Store Byte Data in Register to Memory).................................................................... 376 STB (Store Byte Data in Register to Memory).................................................................... 378 viii 7.160 7.161 7.162 7.163 7.164 7.165 7.166 7.167 7.168 7.169 STB (Store Byte Data in Register to Memory).................................................................... 380 STH (Store Halfword Data in Register to Memory)............................................................. 381 STH (Store Halfword Data in Register to Memory)............................................................. 383 STH (Store Halfword Data in Register to Memory)............................................................. 385 STH (Store Halfword Data in Register to Memory)............................................................. 387 STILM (Set Immediate Data to Interrupt Level Mask Register) .......................................... 388 STM0 (Store Multiple Registers)......................................................................................... 390 STM1 (Store Multiple Registers)......................................................................................... 392 SUB (Subtract Word Data in Source Register from Destination Register) ......................... 394 SUBC (Subtract Word Data in Source Register and Carry bit from Destination Register) ............................................................................................................................................ 396 7.170 SUBN (Subtract Word Data in Source Register from Destination Register)....................... 398 7.171 XCHB (Exchange Byte Data).............................................................................................. 400 付録 ............................................................................................................... 403 付録 A 命令一覧 ........................................................................................................................ 404 A.1 記号の意味 .................................................................................................................. 405 A.1.1 ニーモニック欄および動作欄................................................................................... 405 A.1.2 動作欄....................................................................................................................... 410 A.1.3 型欄 .......................................................................................................................... 411 A.1.4 OP 欄........................................................................................................................ 411 A.1.5 CYC 欄 ..................................................................................................................... 412 A.1.6 FLAG 欄.................................................................................................................... 413 A.1.7 RMW 欄 .................................................................................................................... 413 A.1.8 参照欄....................................................................................................................... 413 A.2 命令一覧表 .................................................................................................................. 414 A.3 遅延スロットに配置可能な命令一覧 .......................................................................... 429 付録 B 命令マップ..................................................................................................................... 431 B.1 命令マップ .................................................................................................................. 432 B.2 拡張命令マップ ........................................................................................................... 433 付録 C FPU 例外処理についての補足 ....................................................................................... 436 C.1 IEEE754-1985 規格準拠 ............................................................................................. 436 C.2 FPU 例外..................................................................................................................... 437 C.3 丸め処理...................................................................................................................... 439 索引 ............................................................................................................... 441 ix x 第1章 FR81 ファミリ CPU の概要 この章では , FR81 ファミリ CPU の特長と従来 FR ファミリとの変更点について説明します。 1.1 FR81 ファミリ CPU の特長 1.2 従来 FR ファミリとの変更点 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 1 第 1 章 FR81 ファミリ CPU の概要 1.1 FR81 ファミリ CPU の特長 1.1 FR81 ファミリ FR81 ファミリ CPU の特長 FR81 ファミリ CPU は富士通オリジナルの FR81 アーキテクチャを持つ , 32 ビット RISC ベースコントローラ向け CPU です。FR81 アーキテクチャは , FR ファミリ命 令セットを採用し , 浮動小数点機能 , メモリ保護機能 , デバッグ機能の改善を行った マイクロコントローラのアーキテクチャです。 ■ 汎用レジスタアーキテクチャ R0 ∼ R15 の 16 本の 32 ビット汎用レジスタによるロード / ストアアーキテクチャで す。メモリ‐メモリ間転送 , ビット処理などの組込み用途に適した命令もあります。 ■ 32 ビットアドレス (4G バイト ) 指定のリニア空間 アドレス空間をバイト単位で管理します。32 ビットのアドレスにより , リニアにアド レス指定します。 ■ 16 ビット固定命令長(即値データ転送命令を除く) 32/20 ビットの即値データ転送命令を除いて , 16 ビット固定長の命令フォーマットで す。高いオブジェクト効率を得ることができます。 ■ 浮動小数点演算ユニット (FPU) 単精度の浮動小数点演算 (IEEE754 に準拠 ) をサポートしています。FR0 ∼ FR15 の 16 本の 32 ビット浮動小数点レジスタがあります。積和演算系の演算 ( 乗算+加減算 ) を 1 命令で実行できます。浮動小数点系命令の命令長は 32 ビットです。 ■ パイプライン構造 5 段のパイプライン動作により , 基本命令を 1 命令あたり 1 サイクルの高速処理が行 えます。パイプラインは次の 5 ステージから構成されています。 •IF ステージ:命令取込み •ID ステージ:命令解釈 •EX ステージ:命令実行 •MA ステージ:メモリアクセス •WB ステージ:レジスタ書込み FR81 ファミリでは , 浮動小数点系命令を実行するための 6 段パイプラインを持ってい ます。 ■ ノンブロッキングロード FR81 ファミリはノンブロッキングロードが行われ , LD( ロード ) 命令を効率良く実行 することができます。最大 4 つの LD( ロード ) 命令を先行して発行可能です。ノンブ ロッキングロードでは , ロード命令で値を格納する汎用レジスタを後続の命令で参照 しない場合に , ロード命令の完了を待たずに後続の命令が実行されます。 2 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 1 章 FR81 ファミリ CPU の概要 1.1 FR81 ファミリ CPU の特長 FR81 ファミリ ■ ハーバードアーキテクチャ 命令アクセスのための命令バスと , データアクセスのためのデータバスが独立した ハーバードアーキテクチャにより , 効率的に命令を実行できます。 ■ 乗算命令 乗算器を内蔵して乗除算演算を命令レベルで実行できます。符号付き / 符号なしの 32 ビット乗算を 5 サイクルで実行します。16 ビット乗算を 3 サイクルで実行します。 ■ ステップ除算命令 ステップ除算命令を組み合わせることにより , 符号付き / 符号なしの 32 ビット÷ 32 ビットの除算を実行できます。 ■ 周辺アクセスのためのダイレクトアドレッシング命令 アドレス空間の先頭(下位アドレス)から 256 ワード /256 ハーフワード /256 バイトを 直接アドレス指定できます。周辺リソースの I/O レジスタのアドレス指定に便利です。 ■ 6 サイクルで完了する高速割込み処理 割込みの受付けを 6 サイクルで高速に処理します。割込み要求に 16 レベルの優先順位 を付けます。CPU の持つ割込みマスクレベルにより , 優先順位に対応したマスク処理 が行えます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 3 第 1 章 FR81 ファミリ CPU の概要 1.2 従来 FR ファミリとの変更点 1.2 FR81 ファミリ 従来 FR ファミリとの変更点 FR81 ファミリは , それ以前の FR ファミリ(FR30 ファミリ , FR60 ファミリなど), 一部の命令の追加と削除 , 動作相違があります。 ■ FR81/FR80 ファミリで使用できない命令 FR81/FR80 ファミリでは次の命令が使用できません。 • コプロセッサ命令(COPOP, COPLD, COPST, COPSV) • リソース命令(LDRES, STRES) コプロセッサ命令を実行しようとすると , コプロセッサ不在トラップではなく未定義 命令例外が発生します。リソース命令を実行しようとすると , 未定義命令例外が発生し ます。 ■ FR81/FR80 ファミリで追加された命令 FR81/FR80 ファミリでは次の命令が追加されています。これは周辺機能として組み込 まれていたビットサーチモジュールに代わる命令です。 •SRCH1(ビットサーチ命令 MSB から LSB へ最初の 1 ビット検出) •SRCH0(ビットサーチ命令 MSB から LSB へ最初の 0 ビット検出) •SRCHC(ビットサーチ命令 MSB から LSB へ最初の変化点検出) ビットサーチ命令の動作については「第 7 章 命令細則」および「付録 A.2 命令一覧表」 を参照してください。 ■ 浮動小数点系命令の追加 FR81 ファミリでは , 浮動小数点系命令と FR0 ∼ FR15 の 16 本の 32 ビット浮動小数点 レジスタが追加されています。 ■ 特権モード FR81 ファミリでは , 特権モードが追加されています。CPU の動作モードとして特権 モードとユーザモードの 2 つがあります。 ■ 例外処理 FR81 ファミリでは , 例外処理が改善されています。次の例外が追加されています。 •FPU 例外 • 命令アクセス保護違反例外 • データアクセス保護違反例外 • 不正命令例外 ( 未定義命令例外からの定義変更 ) • データアクセスエラー例外 •FPU 不在例外 4 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 1 章 FR81 ファミリ CPU の概要 1.2 従来 FR ファミリとの変更点 FR81 ファミリ ■ ステップ実行中の INTE 命令の動作 FR81 ファミリでは , ステップトレーストラップによるステップ実行中においても INTE 命令によるトラップ処理が起動されます。 従来の FR ファミリでは , ステップ実行中は INTE 命令によるトラップ処理は起動され ません。 ステップトレーストラップ , INTE 命令によるトラップ処理については 「4.6 トラップ」 を参照してください。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 5 第 1 章 FR81 ファミリ CPU の概要 1.2 従来 FR ファミリとの変更点 6 FUJITSU MICROELECTRONICS LIMITED FR81 ファミリ CM71-00105-1 第2章 メモリアーキテクチャ この章では , FR81 ファミリ CPU の持つメモリ アーキテクチャについて説明します。メモリアー キテクチャとは , メモリ空間の割り当て , およびメ モリ空間へアクセスする方法のことです。 2.1 アドレス空間 2.2 データ構造 2.3 ワードアライメント CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 7 第 2 章 メモリアーキテクチャ 2.1 アドレス空間 2.1 FR81 ファミリ アドレス空間 FR81 ファミリ CPU のアドレス空間は 32 ビット (4G バイト ) です。 CPU はアドレス空間をバイト単位で管理します。CPU からは , アドレス空間上のアド レスを32ビットの値で指定してアクセスします。アドレス空間を 図 2.1-1 に示します。 図 2.1-1 アドレス空間 0000 0000 H バイトデータ 0000 0100 H ハーフワードデータ ダイレクト アドレッシング領域 0000 0200 H ワードデータ 0000 0400 H ~ ~ 20ビット アドレッシング領域 TBR 000F FC00 H ベクタテーブル 0010 0000 H ~ ~ 32ビット アドレッシング領域 FFFF FFFF H アドレス空間をメモリ空間ともよびます。アドレス空間は CPU からみた論理アドレス 空間です。アドレス変換は行いません。CPU からみた論理アドレスと , 実際にメモリ や I/O の配置されている物理アドレスは同一になります。 2.1.1 ダイレクトアドレス領域 アドレス空間の下位アドレスにダイレクトアドレス領域があります。 ダイレクトアドレス領域は , ダイレクトアドレス指定命令の中でアドレスを直接指定 します。汎用レジスタを使用せずに命令中のオペランド情報だけで , この領域へのアク セスを行います。ダイレクトアドレス指定可能なアドレス領域の大きさは , アクセスす るデータタイプに依存して変化します。 データタイプとダイレクトアドレス指定領域の対応は , 次のようになります。 • バイトデータアクセス :0000 0000H ∼ 0000 00FFH • ハーフワードデータアクセス :0000 0000H ∼ 0000 01FFH • ワードデータアクセス 8 :0000 0000H ∼ 0000 03FFH FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 2 章 メモリアーキテクチャ 2.1 アドレス空間 FR81 ファミリ ダイレクトアドレス指定命令のオペランドである 8 ビットのアドレス情報の使い方は , 次のようになります。 • バイトデータアクセス :そのままアドレスの下位 8 ビットとして使用 • ハーフワードデータアクセス :2 倍してアドレスの下位 9 ビットとして使用 • ワードデータアクセス :4 倍してアドレスの下位 10 ビットとして使用 ダイレクトアドレス指定のデータタイプとメモリアドレスの関係を図 2.1-2 に示します。 図 2.1-2 ダイレクトアドレス指定のデータタイプとメモリアドレスの関係 〔例1〕バイトデータの場合:DMOVB R13,@58H オブジェクトコード:1A58H ⇒ シフトなし ⇒⇒⇒⇒⇒58H メモリ空間 ~ ~ ⇒ R13 1234 5678 0000 0058 H 〔例2〕ハーフワードデータの場合:DMOVH R13,@58H 右1ビットシフト オブジェクトコード:192CH ⇒ 左1ビットシフト ⇒⇒⇒58H 78 ~ ~ メモリ空間 ~ ~ ⇒ R13 1234 5678 0000 0058 H 〔例3〕ワードデータの場合:DMOV R13,@58H 右2ビットシフト オブジェクトコード:1816H ⇒ 左2ビットシフト ⇒⇒⇒58H 5678 ~ ~ メモリ空間 ~ ~ ⇒ R13 1234 5678 1234 5678 0000 0058 H ~ ~ ベクタテーブル領域 2.1.2 テーブルベースレジスタ (TBR) の内容が示すアドレスから 1K バイトの領域は , EIT の ベクタテーブル領域になります。 テーブルベースレジスタ (TBR) は , ベクタテーブル領域の先頭アドレスを示します。こ のベクタテーブル領域に , EIT 処理(例外処理 , 割込み処理 , トラップ処理)のエント リアドレスを記述します。テーブルベースレジスタ (TBR) とベクタテーブル領域の関 係を図 2.1-3 に示します。 図 2.1-3 テーブルベースレジスタ (TBR) とベクタテーブルアドレスの関係 メモリ空間 番号 TBRからの オフセット EIT要因 FFH 000H INT命令のエントリアドレス FEH 004H INT命令のエントリアドレス FDH 008H INT命令のエントリアドレス FCH 00CH INT命令のエントリアドレス 00H 3FCH リセット処理のエントリアドレス 0000 0000 H ~ TBR 1Kバイト FFFF FFFF H CM71-00105-1 ~ ベクタ テーブル 領域 ~ ~ FUJITSU MICROELECTRONICS LIMITED 9 第 2 章 メモリアーキテクチャ 2.1 アドレス空間 FR81 ファミリ リセットにより , テーブルベースレジスタ (TBR) が 000F FC00H になりますので , ベ クタテーブル領域は 000F FC00H から 000F FFFFH になります。テーブルベースレジス タ (TBR) を書き換えることにより , 任意の領域にベクタテーブル領域を割り当てられ ます。 ベクタテーブルは各 EIT 処理プログラムのエントリアドレスで構成されます。各ベク タは, CPU のアーキテクチャにより固定されて使用されるものと, 内蔵する周辺機能 の種類により変化するものがあります。ベクタテーブル領域の構造を表 2.1-1 に示しま す。 表 2.1-1 ベクタテーブル領域の構造 TBR からの オフセット 3FCH 3F8H 3F4H 3F0H 3ECH 3E8H 3E4H 3E0H 3DCH 3D8H 3D4H 3D0H 3CCH 3C8H 3C4H 3C0H 3BCH EIT 処理内容 ベクタ番号 品種依存 備考 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 0FH なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし リセット システム予約 システム予約 システム予約 システム予約 FPU 例外 命令アクセス保護違反例外 データアクセス保護違反例外 データアクセスエラー割込み INTE 命令 命令ブレーク システム予約 ステップトレーストラップ システム予約 不正命令例外 NMI 要求 ∼ 304H 300H 2FCH 2F8H 2F4H ∼ 3EH 3FH 40H 41H 42H あり 一般割込み ( 外部割込み , 周辺 機能からの割込みに使用 ) 各品種のハードウェア マニュアルを参照 なし なし なし 一般割込み システム予約 システム予約 遅延割込みに使用 REALOS にて使用 REALOS にて使用 ∼ 000H ∼ FFH なし INT 命令で使用 使用禁止 使用禁止 使用禁止 エミュレータ用に使用 実際の品種のベクタテーブルについては , 各品種のハードウェアマニュアルを参照し てください。 2.1.3 20 ビットアドレッシング領域と 32 ビットアドレッ シング領域 アドレス空間の下位側の 0000 0000H ∼ 000F FFFFH(1M バイト)は 20 ビットアドレッ シング領域です。アドレス空間全体の 0000 0000H ∼ FFFF FFFFH は 32 ビットアドレッ シング領域です。 10 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 2 章 メモリアーキテクチャ 2.1 アドレス空間 FR81 ファミリ 20 ビットアドレッシング領域内にプログラム領域やデータ領域をすべて配置すると , 32ビットアドレッシング領域に比べて, コンパクトで高速なプログラムが実現できます。 20 ビットアドレッシング領域では , アドレス値が 20 ビット以内の値になるため , ア ドレス情報の即値ロードに LDI:20 命令を使用することができます。LDI:20 命令の命令 長(コードサイズ)は 4 バイトです。LDI:20 命令を使用すると , 6 バイトの命令長で ある LDI:32 命令を使用するよりもプログラムがコンパクトになります。 20 ビットアドレッシング例 コードサイズ LDI:20 #label20,Ri ; 4 バイト JMP @Ri ; 2 バイト 計 6 バイト 32 ビットアドレッシング例 コードサイズ LDI:32 #label32,Ri ; 6 バイト JMP @Ri ; 2 バイト 計 8 バイト CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 11 第 2 章 メモリアーキテクチャ 2.2 データ構造 2.2 FR81 ファミリ データ構造 FR81 ファミリ CPU はバイトデータ (8 ビット ), ハーフワードデータ (16 ビット ), ワードデータ (32 ビット ) の3つのデータタイプがあります。バイトオーダはビッグ エンディアンです。 バイトデータ 2.2.1 8 ビットを単位としたデータタイプです。ビットオーダはリトルエンディアンで , MSB が bit7, LSB が bit0 です。バイトデータの構造を図 2.2-1 に示します。 図 2.2-1 バイトデータの構造 MSB bit 7 6 5 4 3 2 1 0 LSB ハーフワードデータ 2.2.2 16 ビット (2 バイト ) を単位としたデータタイプです。ビットオーダはリトルエンディ アンで , MSB が bit15, LSB が bit0 です。MSB 側の bit15 ∼ bit8 が上位バイト , LSB 側の bit7 ∼ bit0 が下位バイトです。ハーフワードデータの構造を図 2.2-2 に示します。 図 2.2-2 ハーフワードデータの構造 MSB bit 15 14 13 12 11 上位バイト 12 10 9 8 7 6 5 4 3 2 1 0 LSB 下位バイト FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 2 章 メモリアーキテクチャ 2.2 データ構造 FR81 ファミリ ワードデータ 2.2.3 32 ビット (4 バイト ) を単位としたデータタイプです。ビットオーダはリトルエンディ アンで , MSB が bit31, LSB が bit0 です。MSB 側の bit31 ∼ bit16 が上位のハーフワード , LSB 側の bit15 ∼ bit0 が下位のハーフワードです。ワードデータの構造を図 2.2-3 に示 します。 図 2.2-3 ワードデータの構造 MSB bit31 12 23 16 15 87 上位ハーフワード 0 LSB 下位ハーフワード バイトオーダ 2.2.4 FR81 ファミリ CPU のバイトオーダはビッグエンディアンです。ワードデータまたは ハーフワードデータをアドレス空間に配置するときに , 上位側のバイトが下位アドレ ス側 , 下位側のバイトが上位アドレス側の順番に並びます。ビッグエンディアンのバ イトデータの並びを図 2.2-4 に示します。 たとえば , メモリ空間のアドレス 0004 1234 H 番地のメモリ (RAM) にワードデータを 書き込んだとすると , 最上位のバイトは 0004 1234 H 番地に , 最下位のバイトは 0004 1237H 番地に格納されます。 図 2.2-4 ビッグエンディアンのバイトオーダ アドレス バイト MSB ハーフワード LSB アドレス アドレス+1 MSB 上位バイト 下位バイト アドレス アドレス+1 MSB 最上位バイト ワード 上位ハーフワード CM71-00105-1 LSB アドレス+2 アドレス+3 最下位バイト LSB 下位ハーフワード FUJITSU MICROELECTRONICS LIMITED 13 第 2 章 メモリアーキテクチャ 2.3 ワードアライメント 2.3 FR81 ファミリ ワードアライメント 使用するデータタイプにより指定するアドレス(ワードアライメント)に制約があ ります。 2.3.1 プログラムアクセス 命令長はハーフワード(2 バイト)単位であり , すべての命令は 2 の倍数のアドレス (2n 番地 ) に配置されます。 命令実行時には , プログラムカウンタ (PC) の bit0 は自動的に "0" になり , 常に偶数ア ドレスになります。分岐命令などで , 分岐先アドレス計算の結果として奇数アドレス となった場合でも , アドレスの bit0 を "0" とみなして偶数アドレスに分岐します。 プログラムアクセスにおけるアドレス例外はありません。 2.3.2 データアクセス データタイプにより , データアクセスのアドレスに次のような制約があります。 ワードデータ 4 の倍数 (4n 番地 ) のアドレスに配置します。4 の倍数のアドレスの制約をワー ドバウンダリとよびます。指定したアドレスが 4 の倍数でない場合 , アドレスの 下位2ビットを強制的に "00" とみなします。 ハーフワードデータ 2 の倍数 (2n 番地 ) のアドレスに配置します。2 の倍数のアドレスの制約をハー フワードバウンダリとよびます。指定したアドレスが 2 の倍数でない場合 , アド レスの下位 1 ビットを強制的に "0" とみなします。 バイトデータ アドレスの配置に制約はありません。 ワードおよびハーフワードのデータアクセスのときに , アドレスの下位ビットが "0" で なければならないのは , 実効アドレスの計算結果に対してです。計算途中の値はそのま ま使用されます。 14 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第3章 プログラミングモデル この章では , FR81 ファミリ CPU のプログラミン グモデルについて説明します。 3.1 レジスタ構成 3.2 汎用レジスタ 3.3 専用レジスタ 3.4 浮動小数点レジスタ CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 15 第 3 章 プログラミングモデル 3.1 レジスタ構成 3.1 FR81 ファミリ レジスタ構成 FR81 ファミリ CPU には汎用レジスタ , 専用レジスタと浮動小数点レジスタの三種 類のレジスタがあります。 汎用レジスタは , 演算情報やアドレス情報を保持するレジスタです。R0 ∼ R15 の 16 本 のレジスタで構成します。専用レジスタは , 用途別の情報を保持するレジスタです。 浮動小数点レジスタは , 浮動小数点演算の演算情報を保持するレジスタです。FR0 ∼ FR15 の 16 本のレジスタで構成します。 16 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.2 汎用レジスタ FR81 ファミリ 3.2 汎用レジスタ 汎用レジスタは , 各種演算結果のデータの保持 , メモリアクセスのポインタなどのア ドレス情報の保持に使用します。 3.2.1 汎用レジスタの構成 汎用レジスタは 32 ビット長のレジスタで , 16 本あります。汎用レジスタは R0 ∼ R15 の名称が付けられています。 一般的な命令では , 16 本の汎用レジスタは区別なく使用できます。一部の命令では R13, R14, R15 の 3 本のレジスタを , 特定の用途のために使用します。 汎用レジスタの構成と初期値を図 3.2-1 に示します。 図 3.2-1 汎用レジスタの構成 と初期値 32 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 AC R14 FP R15 SP R0 ∼ R14 はリセットによって初期化されません。 R15 はリセットにより 0000 0000H に 初期化されます。 3.2.2 汎用レジスタの特殊な使い方 汎用レジスタの R13 ∼ R15 は , 一般的な汎用レジスタとして使用されるほか , 一部 の命令では次のように使用されます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 17 第 3 章 プログラミングモデル 3.2 汎用レジスタ FR81 ファミリ R13(仮想アキュムレータ:AC) • メモリとのロード / ストア命令でのベースアドレスレジスタ 例:LD @(R13,Rj),Ri • ダイレクトアドレス指定におけるアキュムレータ 例:DMOV @dir10,R13 • ダイレクトアドレス指定におけるメモリポインタ 例:DMOV @dir10,@R13+ R14(フレームポインタ:FP) • メモリとのロードストア命令でのインデックスレジスタ 例:LD @(R14,disp10),Ri • 動的領域の確保 / 開放でのフレームポインタ 例:ENTER #u10 R15(スタックポインタ:SP) • メモリとのロード / ストア命令でのインデックスレジスタ 例:LD @(R15,udisp6),Ri • スタックポインタ 例:LD @R15+,Ri • 動的領域の確保 / 開放でのスタックポインタ 例:ENTER #u10 3.2.3 スタックポインタと R15 の関係 R15 は間接レジスタとして機能します。物理的には専用レジスタのシステムスタック ポインタ (SSP) またはユーザスタックポインタ (USP) のいずれかになります。命令記 述で R15 を指定した場合 , スタックフラグ (S) の値が "1" のときは USP として , "0" のときは SSP として使用します。汎用レジスタ R15 とスタックポインタとの対応を表 3.2-1 に示します。 汎用レジスタとして , R15 に書き込んだ場合には , スタックフラグ (S) の値によりシ ステムスタックポインタ (SSP) またはユーザスタックポインタ (USP) に書き込まれま す。 表 3.2-1 汎用レジスタ R15 とスタックポインタとの対応 汎用レジスタ R15 S フラグ 1 0 スタックポインタ ユーザスタックポインタ (USP) システムスタックポインタ (SSP) スタックフラグ (S) は , プログラムステータス (PS) の中にあるコンデションコードレ ジスタ (CCR) にあります。 18 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 3.3 専用レジスタ FR81 ファミリ CPU には用途を定めた専用レジスタがあります。 3.3.1 専用レジスタの構成 専用レジスタは , 特定の目的のために使用します。専用レジスタとして以下のレジス タがあります。 • プログラムカウンタ (PC) • プログラムステータス (PS) • リターンポインタ (RP) • システムスタックポインタ (SSP) • ユーザスタックポインタ (USP) • テーブルベースレジスタ (TBR) • 乗除算レジスタ (MDH, MDL) • ベースポインタ (BP) • FPU 制御レジスタ (FCR) • 例外ステータスレジスタ (ESR) • デバッグレジスタ (DBR) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 19 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 専用レジスタの構成と初期値を図 3.3-1 に示します。 図 3.3-1 専用レジスタの構成と初期値 32 PC PS - ILM - SCR CCR TBR RP SSP USP MDH MDL BP FCR ESR DBR 3.3.2 プログラムカウンタ (PC) プログラムカウンタ (PC) は , 実行している命令のアドレスを示す 32 ビットのレジス タです。 プログラムカウンタ (PC) のビット構成を図 3.3-2 に示します。 図 3.3-2 プログラムカウンタ (PC) のビット構成 bit31 bit0 初期値 XXXX XXXXH プログラムカウンタ (PC) の最下位の 1 ビット (LSB) は "0" として扱われます。分岐先 のアドレス計算で最下位ビットが "1" になることがあっても , 分岐アドレスの最下位 ビットは "0" になります。命令実行によるプログラムカウンタ (PC) の更新で , 次の命 令を示すときには最下位ビットは必ず "0" になります。 リセットにより , プログラムカウンタ (PC) はベクタテーブルのリセットベクタに書か れている値(リセットエントリアドレス)になります。リセットにより , テーブルベー スレジスタ (TBR) が先に初期化されるため , リセットベクタのアドレスは 000F FFFCH になります。 20 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 3.3.3 プログラムステータス (PS) プログラムステータス (PS) は , プログラム実行の状態を示す 32 ビットのレジスタで す。割込み許可レベルの設定 , CPU 内のプログラムトレースブレーク機能の制御 , 命令 実行の状態を示します。 プログラムステータス (PS) は , 以下の 4 つのレジスタから構成されます。 • システムステータスレジスタ (SSR) • 割込みレベルマスクレジスタ (ILM) • システムコンデションコードレジスタ (SCR) • コンデションコードレジスタ (CCR) プログラムステータス (PS) のビット構成を図 3.3-3 に示します。 図 3.3-3 プログラムステータス (PS) のビット構成 bit31 bit27 SSR bit20 予約 bit15 ILM bit10 bit7 予約 SCR bit0 CCR プログラムステータス (PS) の予約ビットは , すべて将来の拡張用として予約済みで す。予約ビットの読出し値は "0" です。書込み値は "0" を書き込んでください。 3.3.4 システムステータスレジスタ (SSR) システムステータスレジスタ (SSR) は , CPU の状態を示す 4 ビットのレジスタです。 プログラムステータス (PS) の bit31 ∼ bit28 に位置します。 システムステータスレジスタ (SSR) のビット構成を図 3.3-4 に示します。 図 3.3-4 システムステータスレジスタ (SSR) のビット構成 bit31 bit30 bit29 bit28 初期値 DBG UM FPU MPU 0011B 各ビットの内容を以下に説明します。 [bit31] DBG:デバッグステートフラグ デバッグ走行状態のデバッグステートを示すフラグです。デバッグステートに遷 移すると "1" になり , RETI 命令でデバッグステートを抜けると "0" になります。 MOV 命令等による書換えはできません。 リセットによるデバッグステートフラグ (DBG) の初期値は "0" です。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 21 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ [bit30] UM:ユーザモードフラグ ユーザモードを示すフラグです。RETI 命令実行で , ユーザモードに遷移すると "1" になり , リセット , EIT で特権モードに遷移するとクリアされます。RETI 命令実行 時に , メモリから復帰される PS の値で , bit30 が "1" の場合のみユーザモードに遷 移します。MOV 命令等による書換えはできません。 リセットによるユーザモードフラグ (UM) の初期値は "0" です。 [bit29] FPU:FPU 存在フラグ 浮動小数点演算ユニット (FPU) を搭載していることを示すフラグです。FPU を搭 載しているときに "1" に , 搭載していないときに "0" になります。このビットを書 き換えることはできません。 表 3.3-1 システムステータスレジスタの FPU 存在フラグ (FPU) フラグ 値 0 1 FPU 意味 FPU あり ( 搭載 ) FPU なし ( 不在 ) [bit29] MPU:MPU 存在フラグ メモリ保護ユニット (MPU) を搭載していることを示すフラグです。MPU を搭載し ているときに "1" に , 搭載していないときに "0" になります。このビットを書き換 えることはできません。 表 3.3-2 システムステータスレジスタの MPU 存在フラグ (FPU) フラグ 値 0 1 MPU 3.3.5 意味 MPU あり ( 搭載 ) MPU なし ( 不在 ) 割込みレベルマスクレジスタ (ILM) 割込みレベルマスクレジスタ (ILM) は , 割込みレベルマスク値を保持する 5 ビットの レジスタです。プログラムステータス (PS) の bit20 ∼ bit16 に位置します。 割込みレベルマスクレジスタ (ILM) のビット構成を図 3.3-5 に示します。 図 3.3-5 割込みレベルマスクレジスタ (ILM) のビット構成 bit20 bit19 bit18 bit17 bit16 ILM4 ILM3 ILM2 ILM1 ILM0 初期値 01111B 割込みレベルマスクレジスタ (ILM) の保持する値が , 割込みのレベルマスクに使用さ れます。割込み許可フラグ (I) が "1" のときに , 割込みレベルマスクレジスタ (ILM) の 値と要求中の割込みに対応する割込みレベルを比較します。そして , 割込みレベルマ 22 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ スクレジスタ (ILM) の値のほうが大きい(割込みレベルが強い)と , 割込み要求が受 け付けられます。割込みレベルマスクの機能を図 3.3-6 に示します。 図 3.3-6 割込みレベルマスクの機能 FR80ファミリCPU 周辺 割込みコントローラ ILM ICR 29 割込み要求 Iフラグ 1 A N D 比較 25 29>25 割込み起動 起動OK 割込みレベルは 0(00000B) から 31(11111B) の値です。割込みレベルは , 値が小さいほ ど強く , 値が大きいほど弱くなります。0(00000B) が最強の割込みレベル , 31(11111B) が最弱の割込みレベルです。 プログラムから設定できる割込みレベルマスクレジスタ (ILM) の値には以下の制約が あります。 • 割込みレベルマスクレジスタ (ILM) の値が 0(00000B) ∼ 15(01111B) のときには , 0(00000B) ∼ 31(11111B) の値が設定できます。 • 割込みレベルマスクレジスタ (ILM) の値が 16(10000B) ∼ 31(11111B) のときには , 16(10000B) ∼ 31(11111B) の値が設定できます。 • 0(00000B) ∼ 15(01111B) を設定しようとすると , 自動的に 16 が加算されて 16(10000B) ∼ 31(11111B) の値が設定されます。 リセットにより , 割込みレベルマスクレジスタ (ILM) は 15(01111B) に初期化されます。 割込み要求が受け付けられると , その割込みに対応する割込みレベルが割込みレベル マスクレジスタ (ILM) に設定されます。 プログラムから割込みレベルマスクレジスタ (ILM) に設定するには , STILM 命令を使 用します。 3.3.6 コンデションコードレジスタ (CCR) コンデションコードレジスタ (CCR) は , 命令実行の状態を示す 8 ビットのレジスタで す。プログラムステータス (PS) の bit7 ∼ bit0 に位置します。 コンデションコードレジスタ (CCR) のビット構成を図 3.3-7 に示します。 図 3.3-7 コンデションコードレジスタ (CCR) のビット構成 CM71-00105-1 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 予約 予約 S I N Z V C FUJITSU MICROELECTRONICS LIMITED 初期値 --00XXXXB 23 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 各ビットの内容を以下に説明します。 [bit7, bit6] 予約 予約ビットです。読出し値は ”0” です。書込み値は "0" を書き込んでください。 [bit5] S :スタックフラグ 汎用レジスタ R15 として使用するスタックポインタを選択します。スタックフラ グ (S) が "0" のときはシステムスタックポインタ (SSP) が , "1" のときはユーザス タックポインタ (USP) が使用されます。 表 3.3-3 コンデションコードレジスタのスタックフラグ (S) フラグ S 値 0 1 意味 システムスタックポインタ (SSP) ユーザスタックポインタ (USP) EIT 処理が受け付けられると , スタックフラグ (S) は自動的に "0" になります。た だし , システムスタックに退避されるコンデションコードレジスタ (CCR) 中の値 は , "0" にクリアされる前の値です。 リセットによるスタックフラグ (S) の初期値は "0" です。 [bit4] I :割込み許可フラグ マスク可能割込みの許可 / 禁止を制御します。割込み許可フラグ (I) が "0" のとき は割込み禁止 , "1" のときは割込み許可となります。割込み許可のときは , 割込 みレベルマスクレジスタ (ILM) により , 割込み要求のマスク処理が行われます。 表 3.3-4 コンデションコードレジスタの割込み許可フラグ (I) フラグ I 値 0 1 意味 割込み禁止 割込み許可 INT 命令実行により ”0” にクリアされます。ただし , スタックに退避されるコンデ ションコードレジスタ (CCR) 中の値は , "0" にクリアされる前の値です。 リセットによる割込み許可フラグ (I) の初期値は "0" です。 [bit3] N :ネガティブフラグ 演算結果を 2 の補数で表現された整数としてみたときの符号(正負)を示します。 ネガティブフラグ (N) が "0" のときは正の値 , "1" のときは負の値を示します。 24 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 表 3.3-5 コンデションコードレジスタのネガティブフラグ (N) フラグ 値 0 1 N 意味 演算結果が正の値 演算結果が負の値 リセットによるネガティブフラグ (N) の初期値は不定です。 [bit2] Z :ゼロフラグ 演算結果が "0" であったかどうかを示します。ゼロフラグ (Z) が "0" のときは演算 結果がゼロ(0)でないこと, "1"のときは演算結果がゼロ(0)であることを示します。 表 3.3-6 コンデションコードレジスタのゼロフラグ (Z) フラグ 値 0 1 Z 意味 演算結果が 0 でない 演算結果が 0 である リセットによるゼロフラグ (Z) の初期値は不定です。 [bit1] V :オーバフローフラグ 演算結果を 2 の補数で表現された整数としてみたときのオーバフローのあり / な しを示します。オーバフローフラグ (V) が "0" のときはオーバフローなし , "1" の ときはオーバフローありを示します。 表 3.3-7 コンデションコードレジスタのオーバフローフラグ (V) フラグ V 値 0 1 意味 オーバフローなし オーバフローあり リセットによるオーバフローフラグ (V) の初期値は不定です。 [bit0] C :キャリフラグ 演算結果に最上位ビットからのキャリーまたはボローがあったかどうかを示しま す。キャリフラグ (C) が "0" のときはキャリーまたはボローなし ,"1" のときはキャ リーまたはボローありを示します。 表 3.3-8 コンデションコードレジスタのキャリフラグ (C) フラグ C 値 0 1 意味 キャリーまたはボローなし キャリーまたはボローあり リセットによるキャリフラグ (C) の初期値は不定です。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 25 第 3 章 プログラミングモデル 3.3 専用レジスタ 3.3.7 FR81 ファミリ システムコンデションコードレジスタ (SCR) システムコンデションコードレジスタ (SCR) は , ステップ除算の中間データとステッ プトレーストラップを制御する 3 ビットのレジスタです。プログラムステータス (PS) の bit10 ∼ bit8 に位置します。 システムコンデションコードレジスタ (SCR) のビット構成を図 3.3-8 に示します。 図 3.3-8 システムコンデションコードレジスタ (SCR) のビット構成 bit10 bit9 bit8 D1 D0 T 初期値 XX0B 各ビットの内容を以下に説明します。 [bit10, bit9] D1, D0 :ステップ除算中間データ ステップ除算実行時の中間データです。ステップ除算プログラム実行中に割込み が発生した場合の , 再開を保証するためのレジスタです。 ステップ除算処理実行途中に , このステップ除算中間データ (D1,D0) の内容を変 更すると , 除算結果は保証されません。ステップ除算処理実行途中に他の処理を 行う場合には , プログラムステータス (PS) をスタックに退避 / 復元することによ り , ステップ除算処理が再開できます。 ステップ除算中間データ (D1,D0) は , DIV0S 命令の実行により , 被除数と除数を 参照してセットされます。DIV0U 命令の実行により , クリアされます。 CPU のリセットによるステップ除算中間データ (D1,D0) の初期値は不定です。 [bit8] T :ステップトレーストラップフラグ ステップトレーストラップを有効にするかどうかを指定します。ステップトレー ストラップフラグ (T) を "1" にすると , ステップトレーストラップが有効になり , CPU が 1 命令実行するごとにトラップによる EIT 処理が発生します。 表 3.3-9 システムコンデションコードレジスタのステップトレーストラップフラグ (T) フラグ T 値 0 1 意味 ステップトレーストラップ無効 ステップトレーストラップ有効 ステップトレーストラップフラグ (T) が "1" のときは , NMI とユーザ割込みがす べて割込み禁止になります。 26 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ ステップトレーストラップ機能はエミュレータが使用します。エミュレータ使用 時のユーザプログラムでは , ステップトレーストラップ機能を使用できません(ス テップトレーストラップルーチンのデバッグにエミュレータを使用することはで きません)。 リセットによるステップトレーストラップフラグ (T) の初期値は "0" です。 リターンポインタ (RP) 3.3.8 リターンポインタ (RP) は , サブルーチンからの復帰アドレスを保持する 32 ビットのレ ジスタです。CALL 命令実行時のプログラムカウンタ (PC) の値を保持します。 リターンポインタ (RP) のビット構成を図 3.3-9 に示します。 図 3.3-9 リターンポインタ (RP) のビット構成 bit31 bit0 初期値 XXXXXXXXH 遅延スロットあり CALL 命令の場合は , その CALL 命令のアドレス+ 4 がリターンポ インタ (RP) に格納されます。 遅延スロットなし CALL 命令の場合には , その CALL 命令のアドレス+ 2 がリターン ポインタ (RP) に格納されます。 RET 命令でサブルーチンから復帰する場合は , リターンポインタ (RP) のアドレスを プログラムカウンタ (PC) に戻します。 リターンポインタ (RP) はスタック構造ではありません。CALL 命令で , 呼び出された サブルーチンから別のサブルーチンを呼び出す場合には , リターンポインタ (RP) の内 容を退避しておき , RET 命令の前に復帰させる処理が必要です。 遅延スロットなし CALL 命令実行時のリターンポインタ (RP) の動作例を図 3.3-10 に , RET 命令実行時のリターンポインタ (RP) の動作例を図 3.3-11 に示します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 27 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 図 3.3-10 遅延スロットなし CALL 命令実行時のリターンポインタ (RP) の動作例 メモリ空間 実行前 ~ PC 12345678 H RP ???????? H メモリ空間 実行後 ~ ~ CALL SUB1 ~ ~ PC SUB1 RP 1234567A H CALL SUB1 ~ RET SUB1 ~ ~ RET SUB1 ~ ~ ~ ~ 図 3.3-11 RET 命令実行時のリターンポインタ (RP) の動作例 メモリ空間 ~ 実行前 メモリ空間 ~ ~ 実行後 CALL SUB1 PC SUB1 RP 1234567A H ~ PC 1234567A H RP 1234567A H RET SUB1 ~ 3.3.9 CALL SUB1 ADD #1,R0 ~ ~ ADD #1,R0 ~ RET SUB1 ~ ~ ~ ~ システムスタックポインタ (SSP) システムスタックポインタ (SSP) は , EIT 処理などで使用するシステムスタックへ退 避・復元するアドレスを示す 32 ビットのレジスタです。システムスタックポインタ (SSP) は , CPU が特権モード (UM=0) のときのみ使用可能です。 システムスタックポインタ (SSP) のビット構成を図 3.3-12 に示します。 図 3.3-12 システムスタックポインタ (SSP) のビット構成 bit31 bit0 初期値 00000000H コンデションコードレジスタ (CCR) のスタックフラグ (S) が "0" のときは , 汎用レジス タの R15 がシステムスタックポインタ (SSP) として使用されます。多くの命令では , 汎 用レジスタ R15 としてシステムスタックポインタを使用します。 EIT 処理が発生したときには , スタックフラグ (S) の値にかかわらず , システムスタッ クポインタ (SSP) の示すシステムスタックにプログラムカウンタ (PC) とプログラムス テータス (PS) が退避されます。スタックフラグ (S) の値はプログラムステータス (PS) としてシステムスタックに退避され , EIT 処理から RETI 命令で復帰するときにシス テムスタックより復元されます。 28 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ システムスタックはプリデクリメント , ポストインクリメントでデータの退避・復元 をします。データを退避する場合には , システムスタックポインタ (SSP) の値をデー タサイズ分減算(デクリメント)してからシステムスタックポインタ (SSP) の示すア ドレスに値を書き込みます。データを復元する場合には , システムスタックポインタ (SSP) の示すアドレスからデータを読み出してから , システムスタックポインタ (SSP) の値をデータサイズ分加算(インクリメント)します。 スタックフラグ (S) が ”0” のときに "ST R13,@-R15" 命令を実行したときの , システムス タックポインタ (SSP) の動作例を図 3.3-13 に示します。 図 3.3-13 システムスタックポインタ (SSP) の動作例 ST R13,@-R15実行前 SSP 12345678 H USP 76543210 H R13 17263540 H S CCR 3.3.10 0 メモリ空間 00000000H ~ ~ ???????? ???????? ~ ~ メモリ空間 00000000H ~ ~ ST R13,@-R15実行後 SSP 12345674 H USP 76543210 H R13 17263540 H FFFFFFFFH 17263540 H ???????? ~ CCR ~ FFFFFFFFH S 0 ユーザスタックポインタ (USP) ユーザスタックポインタ (USP) は , ユーザスタックへ退避・復元するアドレスを示す 32ビットのレジスタです。ユーザスタックポインタ(USP)は, CPUの特権モード(UM=0), ユーザモード (UM=1) に関係なく使用可能です。特権モードの場合には , スタックフラ グ (S) を書き換えて使用するスタックポインタを選択します。ユーザモードでは , ユー ザスタックポインタ (USP) のみ使用できます。 ユーザスタックポインタ (USP) のビット構成を図 3.3-14 に示します。 図 3.3-14 ユーザスタックポインタ (USP) のビット構成 bit31 bit0 初期値 XXXXXXXXH コンデションコードレジスタ (CCR) のスタックフラグ (S) が "1" のときは , 汎用レジ スタの R15 がユーザスタックポインタ (USP) として使用されます。一般的な命令では , 汎用レジスタ R15 としてユーザスタックポインタを使用します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 29 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ ユーザスタックはプリデクリメント , ポストインクリメントでデータの退避・復元を します。データを退避する場合には , ユーザスタックポインタ (USP) の値をデータサ イズ分減算(デクリメント)してからユーザスタックポインタ (USP) の示すアドレス に値を書込みます。データを復元する場合には , ユーザスタックポインタ (USP) の示 すアドレスからデータを読み出してから , ユーザスタックポインタ (USP) の値をデー タサイズ分加算(インクリメント)します。 スタックフラグ (S) が ”1” のときに ”ST R13,@-R15” 命令を実行したときの , ユーザス タックポインタ (USP) の動作例を図 3.3-15 に示します。 図 3.3-15 ユーザスタックポインタ (USP) の動作例 ST R13,@-R15実行前 SSP 12345678 H USP 76543210 H R13 17263540 H S CCR 3.3.11 1 メモリ空間 00000000H ~ ~ ???????? ???????? ~ ~ ST R13,@-R15実行後 SSP 12345678 H USP 7654320C H R13 17263540 H FFFFFFFFH メモリ空間 00000000H ~ ~ 17263540 H ???????? ~ CCR ~ FFFFFFFFH S 1 テーブルベースレジスタ (TBR) テーブルベースレジスタ (TBR) は , EIT 処理のエントリアドレスを格納するベクタテー ブルを指し示す 32 ビットのレジスタです。 テーブルベースレジスタ (TBR) のビット構成を図 3.3-16 に示します。 図 3.3-16 テーブルベースレジスタ (TBR) のビット構成 bit31 bit0 初期値 000F FC00H テーブルベースレジスタ (TBR) の内容と , 発生した EIT 処理に対応したベクタオフ セットの加算値が , 参照するベクタのアドレスになります。ベクタテーブルはワード 単位で配置できます。算出されたベクタのアドレスはワード単位であり , 生成アドレ スの下位 2 ビットは "0" とみなされます。 テーブルベースレジスタ (TBR) の動作例を図 3.3-17 に示します。 30 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 図 3.3-17 テーブルベースレジスタ (TBR) の動作例 ベクタ対応表 ベクタ ベクタ番号 オフセット ~ タイマ 割込み ~ 11H ~ bit31 bit0 Eaddr0 Eaddr1 Eaddr2 Eaddr3 PC ~ TBR 87654123 H 3B8 H ~ ~ 加算器 ベクタテーブル +0 ⇒ 87654123 H +000003B8 H 876544DB H ~ 876544D8 H ~ +1 ~ +2 ~ +3 ~ ~ Eaddr0 Eaddr1 Eaddr2 Eaddr3 ~ ~ ~ ~ テーブルベースレジスタ (TBR) のリセット値は 000F FC00H です。テーブルベースレジ スタ (TBR) には FFFF FC00H 以上の値を設定しないでください。 注意事項: テーブルベースレジスタ (TBR) に FFFF FC00H 以上の値を設定するとベクタオフ セットを加算した結果がオーバフローします。加算結果がオーバフローすると 0000 0000H ∼ 0000 03FFH のアドレスに対してベクタをアクセスしてしまい , プロ グラムの暴走の原因となります。 乗除算結果レジスタ (MDH,MDL) 3.3.12 乗除算結果レジスタ (MDH,MDL) は , 上位側 32 ビットの MDH と , 下位側 32 ビット の MDL からなる 64 ビットのレジスタです。乗算時には乗算結果が格納されます。除 算時には被除数の設定と , 除算結果が格納されます。 乗除算結果レジスタ (MDH,MDL) のビット構成を図 3.3-18 に示します。 図 3.3-18 乗除算結果レジスタ (MDH,MDL) のビット構成 MDH 初期値 XXXXXXXXH MDL XXXXXXXXH bit31 bit0 乗除算結果レジスタ (MDH,MDL) の機能は乗算実行時と除算実行時で異なります。 ● 乗算実行時の機能 32 ビット× 32 ビット乗算(MUL, MULU 命令)の場合 , 64 ビット長の乗算結果は次 のように乗算結果レジスタ (MDH,MDL) に格納されます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 31 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ MDH : 上位 32 ビット MDL : 下位 32 ビット 16 ビット× 16 ビット乗算(MULH, MULUH 命令)の場合 , 32 ビット長の乗算結果は 次のように乗算結果レジスタ (MDH,MDL) に格納されます。 MDH : 不定 MDL : 結果 32 ビット 乗除算結果レジスタ (MDH,MDL) の乗算動作例を図 3.3-19 に示します。 図 3.3-19 乗除算結果レジスタ (MDH,MDL) の乗算動作例 MUL RO,R1 実行後 MUL RO,R1 実行前 R0 12345678 H R0 12345678 H R1 76543210 H R1 76543210 H MDH,MDL MDH,MDL ???????? ???????? H 086A1C97 0B88D780 H ● 除算実行時の機能 計算開始前に , 被除数を乗除算結果レジスタ (MDH,MDL) に格納します。 MDH : don’t care MDL : 被除数 除算用の DIV0S/DIV0U, DIVI1, DIV2, DIV3, DIV4S の各命令実行により除算を行うと , 除算結果は以下のように乗除算結果レジスタ (MDH,MDL) に格納されます。 MDH : 剰余 MDL : 商 乗除算結果レジスタ (MDH,MDL) の除算動作例を図 3.3-20 に示します。 図 3.3-20 乗除算結果レジスタ (MDH,MDL) の除算動作例 ステップ除算実行後 ステップ除算実行前 R0 R0 12345678 H 12345678 H R0を使用 MDH,MDL 32 ???????? 76543210 H MDH,MDL 091A2640 00000006 H FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ ベースポインタ (BP) 3.3.13 ベースポインタ (BP) は , ベースポインタ間接アドレッシングモードのベースポインタ として使用するレジスタです。 ベースポインタ (BP) のビット構成を図 3.3-21 に示します。 図 3.3-21 ベースポインタ (BP) のビット構成 bit31 3.3.14 bit0 初期値 XXXX XXXXH FPU 制御レジスタ (FCR) FPU 制御レジスタ (FCR) は , FPU を制御するための 32 ビットのレジスタです。FPU の 動作モードの設定およびステータスを示すフラグがあります。 FPU 制御レジスタ (FCR) は , 以下の 5 つの部分から構成されます。 • 浮動小数点条件コード (FCC) • 丸めモード (RM) • 浮動小数点例外許可フラグ (EEF) • 浮動小数点例外累積フラグ (ECF) • 浮動小数点例外フラグ (CEF) FPU 制御レジスタ (FCR) のビット構成を図 3.3-22 に示します。 図 3.3-22 FPU 制御レジスタ (FCR) のビット構成 bit31 bit27 FCC bit19 bit17 予約 RM EEF bit11 bit5 ECF bit0 CEF FPU 制御レジスタ (FCR) の予約ビットは , すべて将来の拡張用として予約済みです。予 約ビットの読出し値は "0" です。書込み値は "0" を書き込んでください。 ■ 浮動小数点条件コード (FCC) 浮動小数点条件コード (FCC) は , 浮動小数点演算結果結果の条件コードを保持する 4 ビットのレジスタです。FPU 制御レジスタ (FCR) の bit31 ∼ bit28 に位置します。 浮動小数点条件コード (FCC) のビット構成を図 3.3-23 に示します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 33 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 図 3.3-23 浮動小数点条件コード (FCC) のビット構成 bit31 bit30 bit29 bit28 初期値 E L G U XXXXB 各ビットの内容を以下に説明します。 [bit31]E:E フラグ 浮動小数点比較命令 (FCMP) の結果 , FRj と FRi が等しいこと (Equal) を示します。 [bit30]L:L フラグ 浮動小数点比較命令 (FCMP) の結果 , FRj より FRi が小さいこと (Less Than) を示し ます。 [bit29]G:G フラグ 浮動小数点比較命令 (FCMP) の結果 , FRj より FRi が大きいこと (Greater Than) を 示します。 [bit28]U:U フラグ 浮動小数点比較命令 (FCMP) の結果 , 比較できないこと (Unordered) を示します。 ■ 丸めモード (RM) 丸めモード (RM) は , 浮動小数点演算結果の丸めモードを指定する 2 ビットのレジスタ です。FPU 制御レジスタ (FCR) の bit19, bit18 に位置します。FR81 ファミリ CPU では , 最近値への丸め (RM=00B) のみ設定可能です。 丸めモード (RM) のビット構成を図 3.3-24 に示します。丸めモードを表 3.3-10 に示し ます。 図 3.3-24 丸めモード (RM) のビット構成 bit19 bit18 初期値 RM1 RM0 XXB 表 3.3-10 丸めモード RM 00B 01B 10B 11B 34 丸めモード 最近値 0 +∞ -∞ FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ ■ 浮動小数点例外許可フラグ (EEF) 浮動小数点例外許可フラグ (EEF) は , 浮動小数点演算の例外発生を許可する 6 ビットの レジスタです。FPU 制御レジスタ (FCR) の bit17 ∼ bit12 に位置します。 浮動小数点例外許可フラグ (EEF) のビット構成を図 3.3-25 に示します。 図 3.3-25 浮動小数点例外許可フラグ (EEF) のビット構成 bit17 bit16 D X bit15 U bit14 bit13 O Z bit12 初期値 V XXXXXXB 各ビットの内容を以下に説明します。 [bit17]D:D フラグ 非正規化数入力例外許可フラグです。このビットを "1" に設定しているときに , 非 正規化数が入力されると FPU 例外が発生します。このビットを "0" に設定してい るときには , 非正規化数を 0 とみなして演算します。 [bit16]X:X フラグ 不正確 (inexact) 例外許可フラグです。このビットを "1" に設定しているときに , 演 算結果が不正確になった場合に FPU 例外が発生します。このビットを "0" に設定 しているときには , 丸め後の値をレジスタに書き込みます。 [bit15]U:U フラグ アンダフロー例外許可フラグです。このビットを "1" に設定しているときに , 演算 結果がアンダフローした場合に FPU 例外が発生します。このビットを "0" に設定 しているときには , 値 0 をレジスタに書き込みます。 [bit14]O:O フラグ オーバフロー例外許可フラグです。このビットを "1" に設定しているときに , 演算 結果がオーバフローした場合に FPU 例外が発生します。このビットを "0" に設定 しているときには , 丸めモード (RM) に従い±∞または± MAX をレジスタに書き 込みます。 [bit13]Z:Z フラグ 零除算例外許可フラグです。このビットを "1" に設定しているときに , 零除算を 行った場合に FPU 例外が発生します。このビットを "0" に設定しているときには , 正しく演算を行った場合の符号で無限大をレジスタに書き込みます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 35 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ [bit12]V:V フラグ 無効演算例外許可フラグです。このビットを "1" に設定しているときに , 無効演算 を行った場合に FPU 例外が発生します。このビットを "0" に設定しているときに は , 演算系命令では QNaN をレジスタに書き込み , 変換命令では± MAX をレジス タ に 書 き 込 み , 比 較 命 令 で は 浮 動 小 数 点 条 件 コ ー ド (FCC) の U フ ラ グ に "1"(unordered) を設定します。 ■ 浮動小数点例外累積フラグ (ECF) 浮動小数点例外累積フラグ (ECF) は , 浮動小数点演算の例外発生を累積して示す 6 ビッ トのレジスタです。FPU 制御レジスタ (FCR) の bit11 ∼ bit6 に位置します。これらの累 積フラグは "0" 書込みのみ有効です。累積フラグに "1" を書き込んでもフラグの値は変 更されません。書込みはビット単位で判定されます。 浮動小数点例外累積フラグ (ECF) のビット構成を図 3.3-26 に示します。 図 3.3-26 浮動小数点例外累積フラグ (ECF) のビット構成 bit11 bit10 bit9 bit8 bit7 bit6 初期値 D X U O Z V XXXXXXB 各ビットの内容を以下に説明します。 [bit11]D:D フラグ 非正規化数入力例外が禁止されているとき(EEF:D=0) に, 非正規化数が入力された ことを示します。このフラグは累積フラグです。 [bit10]X:X フラグ 不正確 (inexact) 例外が禁止されているとき (EEF:X=0) に , 演算結果が不正確になっ たことを示します。このフラグは累積フラグです。 [bit9]U:U フラグ アンダフロー例外が禁止されているとき (EEF:U=0)に, 演算結果がアンダフローし たことを示します。このフラグは累積フラグです。 [bit8]O:O フラグ オーバフロー例外が禁止されているとき (EEF:O=0)に, 演算結果がオーバフローし たことを示します。このフラグは累積フラグです。 [bit7]Z:Z フラグ 零除算例外が禁止されているとき (EEF:Z=0) に , 零除算を行ったことを示します。 このフラグは累積フラグです。 36 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ [bit6]V:V フラグ 無効演算例外が禁止されているとき(EEF:V=0) に, 無効演算を行ったことを示しま す。このフラグは累積フラグです。 ■ 浮動小数点例外フラグ (CFE) 浮動小数点例外フラグ (CFE) は , 浮動小数点演算の例外発生を示す 6 ビットのレジスタ です。FPU 制御レジスタ (FCR) の bit5 ∼ bit0 に位置します。各フラグは , 演算結果で セットされます。各フラグのクリアはソフトウェアで行います。各フラグは "0" 書込 みのみ有効で , "1" 書込みは無効です。書込みはビット単位で判定されます。例外処理 中にフラグがクリアされなかった場合 , 各フラグは累積されます。 浮動小数点例外フラグ (CFE) のビット構成を図 3.3-27 に示します。 図 3.3-27 浮動小数点例外フラグ (CFE) のビット構成 bit5 bit4 bit3 bit2 bit1 bit0 初期値 D X U O Z V XXXXXXB 各ビットの内容を以下に説明します。 [bit5]D:D フラグ 非正規化数入力例外が許可されているとき(EEF:D=1) に, 非正規化数が入力された 場合にセットされます。 [bit4]X:X フラグ 不正確 (inexact) 例外が許可されているとき (EEF:X=1) に , 演算結果が不正確になっ た場合にセットされます。 [bit3]U:U フラグ アンダフロー例外が許可されているとき (EEF:U=1)に, 演算結果がアンダフローし た場合にセットされます。 [bit2]O:O フラグ オーバフロー例外が許可されているとき (EEF:O=1)に, 演算結果がオーバフローし た場合にセットされます。 [bit1]Z:Z フラグ 零除算例外が許可されているとき (EEF:Z=1) に , 零除算を行った場合にセットされ ます。 [bit0]V:V フラグ 無効演算例外が許可されているとき(EEF:V=1) に, 無効演算を行った場合にセット されます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 37 第 3 章 プログラミングモデル 3.3 専用レジスタ 3.3.15 FR81 ファミリ 例外ステータスレジスタ (ESR) 不正命令例外の要因とマルチプルロード / ストア命令実行中に例外が発生したときの 残りを示す 32 ビットのレジスタです。 例外ステータスレジスタ (ESR) は , 以下の 2 つの部分から構成されます。 • レジスタリスト (RL) • 不正命令例外要因 (INV) 例外ステータスレジスタ (ESR) のビット構成を図 3.3-28 に示します。 図 3.3-28 例外ステータスレジスタ (ESR) のビット構成 bit31 bit16 bit15 RL bit7 bit6 予約 bit0 INV 例外ステータスレジスタ(ESR)の予約ビットは, すべて将来の拡張用として予約済みで す。予約ビットの読出し値は "0" です。書込み値は "0" を書き込んでください。 ■ レジスタリスト (RL) レジスタリスト (RL) は , LDM0, LDM1, STM0, STM1, FLDM, FSTM 命令実行中に例外 が発生した場合に , 転送が終了していないレジスタを示す 16 ビットのレジスタです。 例外ステータスレジスタ (ESR) の bit31 ∼ bit16 に位置します。レジスタリスト (RL) の 値が更新されるのは , LDM0, LDM1, STM0, STM1, FLDM, FSTM 命令実行中に例外が発 生したときのみです。 レジスタリスト (RL) のビット構成を図 3.3-29 に , レジスタリスト (RL) のビットとレジ スタの対応を表 3.3-11 に示します。 図 3.3-29 レジスタリスト (RL) のビット構成 38 bit31 bit16 初期値 RL15 RL0 0000H FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ 表 3.3-11 レジスタリスト (RL) のビットとレジスタの対応 ESR レジスタのビット 31 RL bit RL15 R15 LDM1, LDM0 命令 R0 STM1, STM0 命令 FR15 FLDM 命令 FR0 FSTM 命令 30 RL14 R14 R1 FR14 FR1 29 RL13 R13 R2 FR13 FR2 28 RL12 R12 R3 FR12 FR3 27 RL11 R11 R4 FR11 FR4 26 RL10 R10 R5 FR10 FR5 25 RL9 R9 R6 FR9 FR6 24 RL8 R8 R7 FR8 FR7 23 RL7 R7 R8 FR7 FR8 22 RL6 R6 R9 FR6 FR9 21 RL5 R5 R10 FR5 FR10 20 RL4 R4 R11 FR4 FR11 19 RL3 R3 R12 FR3 FR12 18 RL2 R2 R13 FR2 FR13 17 RL1 R1 R14 FR1 FR14 16 RL0 R0 R15 FR0 FR15 ESR レジスタのビット RL bit LDM1, LDM0 命令 STM1, STM0 命令 FLDM 命令 FSTM 命令 ■ 不正命令例外要因 (INV) 不正命令例外要因 (INV) は , 不正命令例外を発生した要因を示す 7 ビットのレジスタで す。例外ステータスレジスタ (ESR) の bit6 ∼ bit0 に位置します。各フラグは , 要因が 発生したときにのみセットされます。各フラグのクリアはソフトウェアで行います。各 フラグは "0" 書込みのみ有効で , "1" 書込みは無効です。書込みはビット単位で判定さ れます。 不正命令例外要因 (INV) のビット構成を図 3.3-30 に示します。 図 3.3-30 不正命令例外要因 (INV) のビット構成 bit6 DT IF FPU PI SPR DS bit0 初期値 RI 0000000B 各ビットの内容を以下に説明します。 [bit6]DT:データアクセスエラー バッファ不可領域にアクセス中にバスエラーが発生した場合 , またはユーザモー ドでシステムレジスタアクセスした場合にセットします。 [bit5]IF:命令フェッチエラー 命令フェッチ中にバスエラーが発生し , その命令を実行した場合にセットします。 [bit4]FPU:FPU 不在エラー FPU を搭載していない品種で , 浮動小数点系命令を実行した場合にセットします。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 39 第 3 章 プログラミングモデル 3.3 専用レジスタ FR81 ファミリ [bit3]PI:特権命令実行 ユーザモードで , RETI, STILM 命令を実行した場合にセットします。 [bit2]SPR:システム専用レジスタアクセス ユーザモードで, テーブルベースレジスタ(TBR), システムスタックポインタ(SSP), 例外ステータスレジスタ(ESR)へのMOV, LD命令を実行した場合にセットします。 [bit1]DS:遅延スロットへの不正命令配置 遅延スロットに配置できない命令を , 遅延スロットで実行した場合にセットしま す。 [bit0]RI:未定義命令 未定義命令コードを実行しようとした場合にセットします。 3.3.16 デバッグレジスタ (DBR) デバッグレジスタ (DBR) は , デバッグステート中のみアクセス可能な専用レジスタで す。デバッグステート以外での書込みは無効です。 デバッグレジスタ (DBR) のビット構成を図 3.3-31 に示します。 図 3.3-31 デバッグレジスタ (DBR) のビット構成 bit31 40 bit0 FUJITSU MICROELECTRONICS LIMITED 初期値 XXXX XXXXH CM71-00105-1 第 3 章 プログラミングモデル 3.4 浮動小数点レジスタ FR81 ファミリ 3.4 浮動小数点レジスタ 浮動小数点レジスタは , 浮動小数点演算の結果を保持するために使用します。 浮動小数点レジスタは 32 ビット長のレジスタで , 16 本あります。浮動小数点レジスタ は FR0 ∼ FR15 の名称が付けられています。 浮動小数点レジスタの構成と初期値を図 3.4-1 に示します。 図 3.4-1 浮動小数点レジスタの構成と初期値 32 FR0 FR1 FR2 FR3 FR4 FR5 FR6 FR7 FR8 FR9 FR10 FR11 FR12 FR13 FR14 FR15 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 41 第 3 章 プログラミングモデル 3.4 浮動小数点レジスタ 42 FUJITSU MICROELECTRONICS LIMITED FR81 ファミリ CM71-00105-1 第4章 リセットと EIT 処理 この章では , FR81 ファミリ CPU のリセットと EIT 処理について説明します。EIT 処理は , 例外 , 割込み , トラップの総称です。 4.1 リセット 4.2 EIT 処理の基本動作 4.3 プロセッサ動作状態 4.4 例外 4.5 割込み 4.6 トラップ 4.7 多重 EIT 処理と優先順位 4.8 レジスタ設定の反映されるタイミング 4.9 一般割込みの使用手順 4.10 注意事項 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 43 第 4 章 リセットと EIT 処理 4.1 リセット 4.1 FR81 ファミリ リセット リセットは , 現在実行中の処理を強制的に中断し , デバイスを初期化してリセットベ クタエントリアドレスからプログラムを再開します。 リセット処理は特権モードで実行されます。ユーザモードへの遷移は RETI 命令の実 行により行ってください。 リセットが発生すると , CPU はそれまで行っていた命令動作を中断して , リセットが解 除されるまで停止状態となります。リセットが解除されると , CPU は内部レジスタを 初期化して , 新しいプログラムカウンタ (PC) の値からプログラムを取り込んで実行を 再開します。 リセットは , 後述の EIT 処理の各動作より優先順位が高くなっています。EIT 処理の最 中であっても , リセットは受け付けられます。 リセットが発生すると , FR81 ファミリ CPU は各レジスタを初期化します。すべてのレ ジスタが初期化されるわけではありません。各レジスタはリセット後に実行されるプ ログラムで値を設定して使用します。リセットにより初期化されるレジスタを表 4.1-1 に示します。 表 4.1-1 リセットにより初期化されるレジスタ レジスタ 初期値 プログラムカウンタ (PC) 000F FFFCH 番地のワードデータ 割込みレベルマスクレジスタ (ILM) 15(01111B) 備考 リセットベクタ ステップトレーストラップフラグ (T) “0” 割込み許可フラグ (I) “0” 割込み禁止 スタックフラグ (S) SSP を使用 テーブルベースレジスタ (TBR) “0” 000F FC00H システムスタックポインタ (SSP) 0000 0000H デバッグステートフラグ (DBG) “0” デバッグステートでない ユーザモードフラグ (UM) 特権モード 例外ステータスレジスタ (ESR) “0” 0000 0000H 汎用レジスタ R15 SSP スタックフラグ (S) による トレース OFF リセットが発生したときの MCU 内部(周辺機能など)の動作に関しては , 各品種の ハードウェアマニュアルを参照してください。 44 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.2 EIT 処理の基本動作 FR81 ファミリ 4.2 EIT 処理の基本動作 例外・割込み・トラップは , 一部の条件以外は同一の動作で , 命令実行を中断・復帰 させるための情報の退避および処理プログラムへの分岐を行います。 4.2.1 EIT 処理の種類と事前準備 EIT 処理は , 現在実行中の処理を中断して再開できる情報をメモリへ退避した後に , 決められた処理プログラムへ制御を移す方法です。EIT 処理プログラムは , RETI 命令 により元のプログラムへ復帰できます。 EIT 処理動作は , 例外 , 割込み , トラップともほぼ同じです。以下に示す若干の違い により , それぞれを区別しています。 • 例外は , 命令シーケンスに関連して発生します。例外が発生した命令から再実行でき るようになっています。 • 割込みは , 命令シーケンスに無関係に発生します。割込み受付け直後の命令から再実 行できるようになっています。 • トラップは , 命令シーケンスに関連して発生します。トラップが発生した命令の次の 命令から再実行できるようになっています。 EIT 処理を行う場合は , プログラムにて以下の設定を事前に行ってください。 • ベクタテーブルの値を設定(データとして定義) • システムスタックポインタ (SSP) の値を設定 • テーブルベースレジスタ (TBR) の値をベクタテーブルの先頭アドレスに設定 • 割込みレベルマスクレジスタ (ILM) の値を 16(10000B) 以上に設定 • 割込み許可フラグ (I) に ”1” を設定 割込みレベルマスクレジスタ (ILM) と割込み許可フラグ (I) の設定は , 割込みを使用す るときに必要になります。 エミュレータデバッガによるデバッグ機能サポートのため , デバッグ走行状態のユー ザステートでは通常の EIT 処理と異なるブレークという処理を行います。ブレークの 要因には以下のものがあり , ユーザステートで要因を検出した場合にブレーク処理を 行います。 • 命令ブレーク例外 ・ ブレーク割込み ・ ステップトレーストラップ • INTE 命令実行 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 45 第 4 章 リセットと EIT 処理 4.2 EIT 処理の基本動作 4.2.2 FR81 ファミリ EIT 処理シーケンス FR81 ファミリ CPU は , EIT が発生すると以下の EIT シーケンスを実行します。 1. テーブルベースレジスタ (TBR) が示すベクタテーブルと発生した EIT に対応するベ クタ番号のオフセット値から , 発生した EIT の処理プログラムのエントリアドレス を求めます。 2. 復帰のために , 旧プログラムカウンタ (PC) と旧プログラムステータス (PS) の内容 をシステムスタックポインタ (SSP) が示すスタック領域へ格納します。 3. スタックフラグ (S) に ”0” を格納します。また , EIT により割込みレベルマスクレジ スタ (ILM) や割込み許可フラグ (I) を更新します。 4. プログラムカウンタ (PC) にエントリアドレスを格納します。 5. 処理フローの最後 , エントリアドレスの命令を実効する直前に , 新たな EIT 要因 発生の有無を検出します。 EIT 処理シーケンスの動作手順を図 4.2-1 に示します。 図 4.2-1 EIT 処理シーケンスの動作手順 EITを検出した命令 ⇒ キャンセルされる命令 ⇒ IF ID EX IF ID xxxx xxxx xxxx IF xxxx xxxx xxxx xxxx キャンセルされる命令 ⇒ EITシーケンス ①ベクタアドレス計算と新PC設定 ②SSP更新とPS退避 ⇒ ③SSP更新とPC退避 ⇒ ④新規EIT発生の検出 ⇒ MA WB ID(1) EX(1) MA(1) WB(1) ID(2) EX(2) MA(2) WB(2) ID(3) EX(3) MA(3) WB(3) EITハンドラ先頭命令(分岐先命令) ⇒ ID(4) EX(4) MA(4) WB(4) IF ID EX MA PC ベクタテーブルはメモリ内にあり , テーブルベースレジスタ (TBR) で示されるアドレ スから 1K バイトの領域を占めます。この領域は EIT 処理用エントリアドレスのため のテーブル領域として用います。 ベクタテーブルについては「2.1.2 ベクタテーブル領域」および「3.3.6 コンデション コードレジスタ (CCR)」を参照してください。 プログラムステータス (PS) とプログラムカウンタ (PC) を , スタックフラグ (S) の値に かかわらずシステムスタックポインタ (SSP) が指すスタックへ退避します。EIT 処理に 入ったあとには , システムスタックポインタ (SSP) の示すアドレスにプログラムカウン タ (PC) が , システムスタックポインタ (SSP) に 4 を加えたアドレスにプログラムステー タス (PS) が格納されています。 EIT 処理発生時のプログラムカウンタ (PC) とプログラムステータス (PS) の退避例を図 4.2-2 に示します。 46 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.2 EIT 処理の基本動作 FR81 ファミリ 図 4.2-2 EIT 処理発生時の PC, PS の退避例 [例] [割込み前] SSP [割込み後] SSP 80000000 H メモリ メモリ 7FFFFFF8H 7FFFFFFCH 80000000 H 4.2.3 7FFFFFF8H 7FFFFFF8H 7FFFFFFCH 80000000 H PC PS EIT 処理からの復帰 EIT 処理プログラムからの復帰には RETI 命令を使用します。RETI 命令は , システム スタックからプログラムカウンタ (PC) とプログラムステータス (PS) を取り出して , EIT 処理から復帰します。 1. システムスタックからプログラムカウンタ (PC) を復元 (SSP) → PC SSP+4 → SSP 2. システムスタックからプログラムステータス (PS) を復元 (SSP) → PS SSP+4 → SSP EIT 処理プログラムから復帰後のプログラム実行を保証するためには , 復帰する時点 で CPU のすべてのレジスタが , EIT 処理プログラムに入る前のレジスタ値を保存して いることが必要です。EIT 処理プログラムの中で使用するレジスタはシステムスタッ クなどに退避しておき , RETI 命令の直前に復元するようにしてください。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 47 第 4 章 リセットと EIT 処理 4.3 プロセッサ動作状態 4.3 FR81 ファミリ プロセッサ動作状態 プロセッサの動作状態には , リセット状態 / 通常走行状態 / 低消費電力状態 / デバッ グ走行状態の 4 状態があります。 ● リセット状態 CPU がリセットされている状態です。リセットには , イニシャライズレベルとリセッ トレベルの 2 レベルがあります。イニシャライズレベルのリセットが発行されると , MCU チップ内のすべてが初期化されます。リセットレベルの場合は , デバッグ制御機 能 , クロックおよびリセット制御機能の一部を除き初期化されます。 ● 通常走行状態 順次命令実行および EIT 処理が実行されている状態です。通常走行状態には , 特権モー ド (UM=0) とユーザモード (UM=1) があります。ユーザモードでは命令やアクセス先に 制限があり , 特権モードでのみ実行可能な命令やアクセス先があります。 リセット解除後にそのまま通常走行状態になった場合は特権モードになり , RETI 命令 の実行によりユーザモードへ遷移します。通常走行状態では , ユーザモードから特権 モードへはリセット , EIT の実行で遷移し , 特権モードからユーザモードへは RETI 命 令の実行で遷移します。 ● 低消費電力状態 CPU が動作を停止し , 消費電力を抑えている状態です。低消費電力状態への移行は , ク ロック制御部のスタンバイ制御で行います。低消費電力状態には , スリープ / ストップ / 時計モードの 3 つのモードがあります。低消費電力状態からの復帰は割込みで行いま す。 ● デバッグ走行状態 インサーキットエミュレータ (ICE) を接続し , デバッグ関連機能が有効な状態です。デ バッグ走行状態には , ユーザステートとデバッグステートがあります。デバッグ走行状 態から他の状態への遷移は , 基本的にリセット状態を介して行います。ただし , 通常走 行状態から強制的にデバッグ走行状態に遷移することも可能です。 ユーザステートには, 通常走行状態と同様に特権モード(UM=0)とユーザモード(UM=1) があります。ただし , デバッグ用のブレークを行った場合にはデバッグステートへ遷移 します。デバッグステートでは特権モードで実行され , メモリ保護機能などすべて無効 な状態で , すべてのレジスタ / メモリにアクセス可能です。デバッグステートからユー ザステートへの遷移は , RETI 命令の実行により行います。 48 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.3 プロセッサ動作状態 FR81 ファミリ プロセッサ動作状態の遷移を図 4.3-1 に示します。 図 4.3-1 プロセッサ動作状態の遷移 命令 命令 命令 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 49 第 4 章 リセットと EIT 処理 4.4 例外 4.4 FR81 ファミリ 例外 例外は命令シーケンスに問題があるときに発生します。例外発生時に実行しようと した命令からシーケンス処理を再開するために必要な情報を退避します。その後 , 発生した例外に対応した処理ルーチンを起動します。 処理ルーチンへの分岐は , 例外の原因となった命令が実行される前に起こります。例 外発生時にシステムスタックへ退避するプログラムカウンタ(PC) は, 例外を発生した 命令のアドレスとなります。 例外を発生する要因には以下のものがあります。 • 不正命令例外 • 命令アクセス保護違反例外 • データアクセス保護違反例外 • FPU 例外 • 命令ブレーク • ガーデッドアクセスブレーク 4.4.1 不正命令例外 不正命令例外は , 不正な命令を実行しようとしたときに発生する例外です。不正命令例 外には , 以下の要因があります。 • 未定義命令コードの実行 • 遅延スロットへ配置できない命令の遅延スロットでの実行 • ユーザモードでのシステム専用レジスタ(TBR, SSP, ESR)への書込み(MOV, LD命令) • ユーザモードでの特権命令実行 (RETI, STILM) • FPU 不在時の浮動小数点命令実行 • 命令フェッチ時のバスエラー発生 • バッファ不可領域のデータアクセス時のバスエラー発生およびシステムレジスタア クセス違反 不正命令例外を受け付けると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア "0" → UM "0" → S 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 例外要因命令のプログラムカウンタ (PC) の内容をシステムスタックに退避 SSP – 4 → SSP 50 PC → (SSP) FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.4 例外 FR81 ファミリ 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3C4H) → PC 5. 新規 EIT 発生の検出 プログラムカウンタ (PC) の値としてシステムスタックに退避されるアドレスは , 未定 義命令例外を起こした命令自身を指しています。RETI 命令を実行したときに , 未定義 命令例外を起こした命令の次のアドレスから実行を再開するときには , システムス タックに退避した内容を例外処理ルーチンで書き換えてください。 4.4.2 命令アクセス保護違反例外 命令アクセス保護例外は , メモリ保護機能により保護された領域の命令を実行した場 合に発生する例外です。 デバッグ走行状態では , デバッガからの指示により本例外をブレーク要因とすること が可能です。この場合 , 命令アクセス保護違反例外は発生しません。 命令アクセス保護違反例外を受け付けると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア "0" → UM "0" → S 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 例外要因命令のプログラムカウンタ (PC) の内容をシステムスタックに退避 SSP – 4 → SSP PC → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3E4H) → PC 5. 新規 EIT 発生の検出 4.4.3 データアクセス保護違反例外 データアクセス保護違反例外は , メモリ保護機能により保護された領域に不正なデー タアクセスを実行した場合に発生する例外です。 デバッグ走行状態では , デバッガからの指示により本例外をブレーク要因とすること が可能です。この場合 , データアクセス保護違反例外は発生しません。 EIT シーケンス中 , RETI 命令によるデータアクセス中に本例外が発生した場合 , CPU は停止状態となりリセットおよびブレーク割込みを受付け可能な状態となります。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 51 第 4 章 リセットと EIT 処理 4.4 例外 FR81 ファミリ LDM0, LDM1, STM0, STM1, FLDM, FSTM 命令実行中に本例外が発生した場合 , 例外が 発生するまでに実行した内容はレジスタおよびメモリへ反映されます。どこまで実行 されたのかはレジスタリスト (ESR:RL) で判断してください。 データアクセス保護違反例外を受け付けると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア "0" → UM "0" → S 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 例外要因命令のプログラムカウンタ (PC) の内容をシステムスタックに退避 SSP – 4 → SSP PC → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3E0H) → PC 5. 新規 EIT 発生の検出 4.4.4 FPU 例外 FPU 例外は , 浮動小数点命令を実行したときに発生する例外です。浮動小数点例外の 発生は , 浮動小数点制御レジスタ (FCR) にて抑止することができます。 FPU 例外検出前に後続命令が完了することを防ぐため , FPU 例外を有効にした場合は 後続命令が浮動小数点命令の完了を追い越さないようパイプラインハザードを発生さ せ , パイプラインのストールを行います。 以下に FPU 例外の発生要因を示します。発生の詳細な条件は各命令の説明を参照して ください。 • 非正規化数入力による例外が許可されていた状態で , 非正規化数が入力された場合 • 不正確例外が許可されていた状態で , 演算結果が不正確になった場合 • アンダフロー例外が許可されていた状態で , 演算結果がアンダフローした場合 • オーバフロー例外が許可されていた状態で , 演算結果がオーバフローした場合 • 零除算例外が許可されていた状態で , 零除算を行った場合 • 無効演算例外が許可されていた状態で , 無効演算を行った場合 FPU 例外を受け付けると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア "0" → UM 52 "0" → S FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.4 例外 FR81 ファミリ 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 例外要因命令のプログラムカウンタ (PC) の内容をシステムスタックに退避 SSP – 4 → SSP PC → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3E8H) → PC 5. 新規 EIT 発生の検出 4.4.5 命令ブレーク 命令ブレークは , デバッグサポートユニット (DSU) からの指示したアドレスの命令で 例外 , ブレークを発生させる処理です。デバック走行状態のユーザステートで命令ブ レークを検出した場合はブレーク処理を行います。通常走行状態で命令ブレークを検 出した場合は例外処理を行います。 ユーザステートで命令ブレークを受け付けたときのブレーク処理は , 以下の動作を行 います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定して , デバッグステートに遷移 "0" → UM "0" → S "4" → ILM 2. プログラムステータス (PS) の内容を PS 退避レジスタ (PSSR) に退避 PS → PSSR 3. 例外要因命令のプログラムカウンタ (PC) の内容を PC 退避レジスタ (PCSR) に退避 PC → PCSR 4. エミュレータデバッグ命令レジスタ (EIDR1) から命令フェッチし , ハンドラ実行 通常走行状態での命令ブレークを受け付けたときの例外処理は, 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定 "0" → UM "0" → S "4" → ILM 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 例外要因命令のプログラムカウンタ (PC) の内容をシステムスタックに退避 SSP – 4 → SSP PC → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3D4H) → PC 5. 新規 EIT 発生の検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 53 第 4 章 リセットと EIT 処理 4.4 例外 4.4.6 FR81 ファミリ ガーデッドアクセスブレーク ガーデッドアクセスブレークは , デバッグ走行状態で命令アクセス保護違反 , データア クセス保護違反が発生した場合に例外を発生させるのではなく , ブレーク処理とする 機能です。 各アクセス保護違反を , ブレーク処理とするか例外処理とするかの制御はデバッガに より行われます。通常走行状態ではガーデッドアクセスブレークは発生しません。 ユーザステートで命令ブレークを受け付けたときにブレーク処理とした場合は , 以下 の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定して , デバッグステートに遷移 "0" → UM "0" → S "4" → ILM 2. プログラムステータス (PS) の内容を PS 退避レジスタ (PSSR) に退避 PS → PSSR 3. 例外要因命令のプログラムカウンタ (PC) の内容を PC 退避レジスタ (PCSR) に退避 PC → PCSR 4. エミュレータデバッグ命令レジスタ (EIDR1) から命令フェッチし , ハンドラ実行 54 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.5 割込み FR81 ファミリ 4.5 割込み 割込みは命令シーケンスに関係なく発生します。割込みが発生すると , それまで実 行していた一連の命令シーケンス処理を再開するために必要な情報を退避します。 その後 , 発生した割込みに対応した処理ルーチンを起動します。 割込みが発生する前に CPU に取り込まれて実行中の命令は , そのまま継続して実行さ れます。割込み受付け後にパイプライン動作で取り込んだ命令はキャンセルされます。 このため , 割込み処理完了後は割込みを受け付けた直後の命令から処理を再開します。 割込みを発生する要因には以下の 4 つがあります。 • 一般割込み • ノンマスカブルインタラプト (NMI) • ブレーク割込み • データアクセスエラー割込み ステップ除算命令を実行中に割込みが発生した場合 , ステップ除算を再開できるよう にするために , プログラムステータス (PS) に中間データを格納してからスタックへ退 避します。このため , スタック内のプログラムステータス (PS) の内容を割込み処理プ ログラムで書き換えると, 処理再開後の命令動作は通常と同じように実行されますが, 除算結果が誤った値になります。 一般割込み 4.5.1 一般割込みは , 内蔵の周辺機能から要求が発生する割込みです。ここでは , デバイス に内蔵されている割込みコントローラ , 外部割込み制御部も周辺機能の 1 つとして説 明しています。 内蔵の各周辺機能からの割込み要求は , 割込みコントローラを経由して受け付けられ ます。外部割込み制御部を使用して , 外部端子を割込み入力端子として使用する割込み 要求もあります。一般割込みの要求手順を図 4.5-1 に示します。 図 4.5-1 一般割込みの要求手順 FR81ファミリCPU PS I SSP USP ILM S 割込み コントローラ ICR#n 割込み 要求 CM71-00105-1 AND 比較 FUJITSU MICROELECTRONICS LIMITED 周辺 割込み フラグ ビット 55 第 4 章 リセットと EIT 処理 4.5 割込み FR81 ファミリ 割込みコントローラにて割込み要求ごとに割込みレベルが設定されており , レベルに 応じて要求をマスクできます。また , コンデションコードレジスタ (CCR) の割込み許 可フラグ (I) の操作により , 一括して割込みを禁止することも可能です。 周辺機能の動作により割込み要求が発生すると , 以下の条件で割込み要求が受け付け られます。 • ベクタ番号に対応した割込み制御レジスタ (ICR) に設定してある割込みレベルより , 割込みレベルマスクレジスタ (ILM) の示すレベルのほうが高い(数値が小さい) • コンデションコードレジスタ (CCR) の割込み許可フラグ (I) が ”1” に設定されている 割込み制御レジスタ (ICR) は , 割込みコントローラのレジスタです。割込みコントロー ラについては , 各品種のハードウェアマニュアルを参照してください。 一般割込みが受け付けられると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に受け付けた割込み要求レベルを設定 "0" → UM "0" → S 割込みレベル → ILM 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 一般割り込みを受け付けた命令の次の命令のアドレスをシステムスタックに退避 SSP – 4 → SSP 次の命令アドレス → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + Offset) → PC 5. 新規 EIT 発生の検出 一般割込みを使用するときには , 割込みコントローラのベクタ番号に対応した割込み 制御レジスタ (ICR) に , 割込みレベルを設定しておく必要があります。また各周辺機能 の設定および割込み許可を行ってください。割込みコントローラおよび各周辺機能に ついては , 品種ごとのハードウェアマニュアルを参照してください。 56 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.5 割込み FR81 ファミリ 4.5.2 ノンマスカブルインタラプト (NMI) ノンマスカブルインタラプト (NMI) は , 割込みの受付けを禁止(マスク)することの できない割込みです。 製品シリーズによって NMI がサポートされない(外部端子の NMI 端子がない)品種 もあります。NMI がサポートされているかどうかは , 各品種のハードウェアマニュア ルを参照してください。 コンデションコードレジスタ (CCR) の割込み許可フラグ (I) が "0" で割込みの受付が禁 止されていても , NMI による割込みは禁止されません。割込みレベルマスクレジスタ (ILM) による割込みレベルのマスクは有効です。割込みレベルマスクレジスタ (ILM) に はプログラムにて 16(10000B) 以上の値を設定するため , 通常は割込みレベルによって NMI がマスクされることはありません。 リセットにより割込みレベルマスクレジスタ (ILM) の値は 15(01111B) に初期化されま す。そのため , リセット後にプログラムにて 16(10000B) 以上の値を設定するまでは , NMI はマスクされます。 NMI が受け付けられると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に 15 を設定 "0" → UM "0" → S "15" → ILM 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. NMI を受け付けた命令の次の命令のアドレスをシステムスタックに退避 SSP – 4 → SSP 次の命令アドレス → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3C0H) → PC 5. 新規 EIT 発生の検出 4.5.3 ブレーク割込み ブレーク割込みは , デバッガからのブレーク要求に使用する割込みです。ブレーク割込 みは, レベルで通知され割込みレベルマスクレジスタ(ILM)のレベルよりも高い場合に 受付けられます。要求レベルは 0 ∼ 31 まで設定できます。割込み許可フラグ (I) では マスクされません。 以下にブレーク割込み受付け条件を示します。条件が成立したときに , CPU はブレー ク割込みを受付けます。 • ブレーク割込み要求レベルが , 割込みレベルマスクレジスタ (ILM) よりも高い場合 • CPU 動作状態が , デバッグ走行状態でユーザステートのとき CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 57 第 4 章 リセットと EIT 処理 4.5 割込み FR81 ファミリ ブレーク割込みを受け付けたときのブレーク処理は , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , インタラプトレベルマスクレジ スタ (ILM) に 4 を設定して , デバッグステートに遷移 "0" → UM "0" → S "4" → ILM 2. ブレーク割込みを受け付けた命令の , 次の命令のコードイベントの判定 3. プログラムステータス (PS) の内容を PS 退避レジスタ (PSSR) に退避 PS → PSSR 4. ブレーク割込みを受け付けた命令の , 次の命令のプログラムカウンタ (PC) の内容を PC 退避レジスタ (PCSR) に退避 PC → PCSR 5. エミュレータデバッグ命令レジスタ (EIDR1) から命令フェッチし , ハンドラ実行 4.5.4 データアクセスエラー割込み データアクセスエラー割込みは , バッファ許可指定領域にデータアクセスを行ったと きに , バスエラーが発生した場合に発生する割込みです。データアクセスエラー割込み はデータアクセスエラー割込み許可ビット (MPUCR:DEE) で禁止・許可ができます。 データアクセスエラー割込みが発生したあとはデータアクセスエラービット (DESR:DAE) をクリアするまで新たなデータアクセスエラー割込みは発生しません。 以下にデータアクセスエラー割込み受け付け条件を示します。 • データアクセスエラー割込み許可ビット (MPUCR:DEE) が有効 • バッファ許可指定領域へのデータアクセスでバスエラーが発生 データアクセスエラー割込みを受け付けたときは , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア "0" → UM "0" → S 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 割込みを受け付けた命令のプログラムカウンタ(PC)の内容をシステムスタックに退 避 SSP – 4 → SSP PC → (SSP) 4. プログラムカウンタ (PC) の値を更新 (TBR + 3DCH) → PC 5. 新規 EIT 発生の検出 58 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.6 トラップ FR81 ファミリ 4.6 トラップ トラップは命令シーケンスによって発生します。トラップが発生すると , まずト ラップが発生した命令の次の命令から処理を再開できるように , 必要な情報を退避 します。その後 , トラップに対応した処理ルーチンが起動します。 処理ルーチンへの分岐は , トラップの原因となった命令が実行された後に起こりま す。トラップ発生時にスタックへ退避するプログラムカウンタ (PC) はトラップを発生 した命令のアドレスとなります。 トラップを発生する要因には以下のものがあります。 • INT 命令 • INTE 命令 • ステップトレーストラップ 4.6.1 INT 命令 INT #u8 命令は , ソフトウェアでトラップを発生させる命令です。オペランドで指定 された割込み番号のトラップを発生します。 INT 命令を実行すると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア "0" → UM "0" → S 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 次の命令のアドレスをシステムスタックに退避 SSP – 4 → SSP 次の命令アドレス → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3FCH - 4 × u8) → PC 5. 新規 EIT 発生の検出 プログラムカウンタ (PC) の値としてシステムスタックに退避されるアドレスは , INT 命令の次の命令のアドレスです。 4.6.2 INTE 命令 INTE 命令は , デバッグ用にソフトウェアでトラップを発生させる命令です。デバッ グ走行状態のデバッグステート , およびプログラムステータス (PS) のステップトレー ストラップフラグ (SCR:T) がセットされている場合は , トラップを発生しません。デ バッグ走行状態のユーザステートと通常走行状態で , INTE 命令の動作が異なります。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 59 第 4 章 リセットと EIT 処理 4.6 トラップ FR81 ファミリ 通常走行状態で INTE 命令を実行すると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定 "0" → UM "0" → S "4" → ILM 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 次の命令のアドレスをシステムスタックに退避 SSP – 4 → SSP 次の命令アドレス → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3D8H) → PC 5. 新規 EIT 発生の検出 デバッグ走行状態のユーザステートで INTE 命令を実行すると , 以下の動作を行いま す。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定して , デバッグステートに遷移 "0" → UM "0" → S "4" → ILM 2. プログラムステータス (PS) の内容を PS 退避レジスタ (PSSR) に退避 PS → PSSR 3. 次の命令のアドレスを PC 退避レジスタ (PCSR) に退避 PC → PCSR 4. エミュレータデバッグ命令レジスタ (EIDR1) から命令フェッチし , ハンドラ実行 プログラムカウンタ(PC)の値としてシステムスタックに退避されるアドレスは, INTE 命令の次の命令のアドレスです。 ステップトレーストラップのトラップ処理ルーチンの中では , INTE 命令を使用しな いでください。 4.6.3 ステップトレーストラップ ステップトレーストラップはプログラムデバッグ用のトラップです。システムコンデ ションコードレジスタ (SCR) 内のステップトレーストラップフラグ (T) をセットする ことにより , 1 命令実行するごとにトラップを発生します。デバッグ走行状態のユー ザステートと通常走行状態で , ステップトレーストラップの動作が異なります。 ステップトレーストラップフラグ(T)を"0" → "1"と変更した命令から, ステップトレー ストラップを受け付けます。"1" → "0" とした命令から , ステップトレーストラップを 発生しなくなります。ただし , RETI 命令では , "0" → "1" と変更した場合は , その RETI 命令ではステップトレーストラップを発生しません。 60 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.6 トラップ FR81 ファミリ ステップトレーストラップは , 次の条件で発生します。 • システムコンデションコードレジスタ (SCR) 内のステップトレーストラップフラグ (T) が ”1” である • 実行している命令が遅延分岐命令以外である • CPU 動作状態が , 通常走行状態またはデバッグ走行状態のユーザステート ステップトレーストラップは遅延分岐命令の分岐命令実行直後には発生しません。遅 延スロット内の命令を実行した後に発生します。 ステップトレーストラップフラグ (T) を有効にすると , ノンマスカブルインタラプト (NMI) および一般割込みは禁止状態になります。 通常走行状態でステップトレーストラップを受け付けると , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , ステップトレーストラップフラ グ (T) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定 "0" → UM "0" → S "0" → T "4" → ILM 2. プログラムステータス (PS) の内容をシステムスタックに退避 SSP – 4 → SSP PS → (SSP) 3. 次の命令のプログラムカウンタ (PC) の内容をシステムスタックに退避 SSP – 4 → SSP 次の命令アドレス → (SSP) 4. ベクタテーブルを参照して , プログラムカウンタ (PC) の値を更新 (TBR + 3CCH) → PC プログラムカウンタ (PC) の値としてシステムスタックに退避されるアドレスは , ス テップトレーストラップの発生した命令の次の命令のアドレスです。 デバッグ走行状態のユーザステートでステップトレーストラップを受付けたときのブ レーク処理は , 以下の動作を行います。 1. 特権モードに遷移し , スタックフラグ (S) をクリア , ステップトレーストラップフラ グ (T) をクリア , 割込みレベルマスクレジスタ (ILM) に 4 を設定して , デバッグス テートに遷移 "0" → UM "0" → S "0" → T "4" → ILM 2. プログラムステータス (PS) の内容を PS 退避レジスタ (PSSR) に退避 PS → PSSR 3. 次の命令のプログラムカウンタ (PC) の内容を PC 退避レジスタ (PCSR) に退避 PC → PCSR 4. エミュレータデバッグ命令レジスタ (EIDR1) から命令フェッチし , ハンドラ実行 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 61 第 4 章 リセットと EIT 処理 4.6 トラップ FR81 ファミリ ● 制限事項 ステップトレーストラップハンドラでは , INTE 命令を使用しないでください。 OCD-DSU を搭載したデバイスでは , OCD のステップトレース機能を使用します。本 項に説明されているステップトレーストラップは使用しないで , ステップトレースト ラップフラグ (T) には常に "0" を書き込んでください。 62 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.7 多重 EIT 処理と優先順位 FR81 ファミリ 4.7 多重 EIT 処理と優先順位 複数の EIT 要因が同時に発生した場合 , 多重 EIT 処理が行われます。EIT 要因は優先 順位により順番に受理されて , EIT 処理されます。 多重 EIT 処理 4.7.1 複数の EIT 要因が同時に発生した場合 , CPU は 1 つの EIT 要因を選択して受理し , EIT シーケンスを実行したあとエントリアドレスの命令を実行する前に , 再び EIT 要 因の検出を行う , という動作を繰り返します。 EIT 要因検出の際に , 受理可能な EIT 要因がなくなったとき , 最後に受理した EIT 要 因の処理ルーチンを実行します。 最後に受理した EIT 要因の処理ルーチンより RETI 命令で復帰すると , 1 つ前に受理 した EIT 要因の処理ルーチンを実行します。最初に受理した EIT 要因の処理ルーチン より RETI 命令で復帰すると , 一連の EIT 処理を終えてユーザプログラムへ戻ります。 多重 EIT 処理の例を図 4.7-1 に示します。 図 4.7-1 多重 EIT 処理の例 ユーザプログラム NMIの処理ルーチン 優先度 INT命令 の処理ルーチン ① 最初に実行 (高) NMI発生 (低) INT命令実行 ② 次に実行 たとえば A, B, C の 3 つの EIT 要因が同時に発生して , B, C, A の順番で受理された場 合 , 処理ルーチンの実行は A, C, B となります。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 63 第 4 章 リセットと EIT 処理 4.7 多重 EIT 処理と優先順位 4.7.2 FR81 ファミリ EIT 要因の優先順位 複数の EIT 要因が同時に発生したときの各要因を受理して処理ルーチンを実行する順 番は , EIT 要因受理の優先順位と , その EIT 要因を受理した場合のほかの EIT 要因をど のようにマスクするかの , 2 つの要素によって決まります。 EIT 要因が発生したとき , および EIT シーケンスの最後に , その時点で発生している EIT の検出を行い , 優先順位に従ってどの EIT 要因を受理するかが決まります。EIT シーケ ンスの最後のときは , 直前に受付けた EIT 要因のほかの EIT 要因に対するマスク動作 が反映された状態で EIT の検出を行います。EIT 要因の優先順位とほかの要因に対す るマスク動作を表 4.7-1 に示します。 表 4.7-1 EIT 要因の優先順位とほかの要因に対するマスク動作 EIT 要因 優先順位 1 リセット 2 3 4 5 6 7 8 9 10 ほかの要因に対するマスク動作 更新後の ILM 15 ほかの要因は破棄 命令ブレーク これより優先度の低い要因すべて ガーデッドアクセスブレーク 不正命令例外 命令アクセス保護例外 これより優先度の低い要因すべて データアクセス保護例外 FPU 例外 I フラグ =0 INT 命令 INTE 命令 一般割込み NMI これより優先度の低い要因すべて ILM= 受付けた要因のレベル ILM=15 データアクセスエラー割込み − ブレーク割込み これより優先度の低い要因すべて ステップトレーストラップ これより優先度の低い要因すべて 4 − 4 ICR 15 − 要求レベル 4 先に受理された EIT 用により , 割込みレベルマスクレジスタ (ILM) の値が更新されて , 同時に発生した EIT 要因であるユーザ割込みがマスクされて , 受付けられなくなるこ とがあります。この場合は , 同時に発生して受理した EIT 要因の処理ルーチンを実行 し終えてユーザプログラムに復帰するまで , ユーザ割込みは保留されて , ユーザプロ グラムに復帰した時点で再度検出されます。 64 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.7 多重 EIT 処理と優先順位 FR81 ファミリ 分岐命令実行時の EIT 受付け 4.7.3 遅延分岐命令の分岐命令実行時には割込みは受け付けません。また , 遅延スロットで例 外が発生した場合は分岐をキャンセルして , 分岐命令のプログラムカウンタ (PC) を退 避します。遅延スロット命令での割込み , トラップは受け付けます。分岐命令の EIT 受 付と退避 PC 値を , 表 4.7-2 に示します。 表 4.7-2 分岐命令の EIT 受付と退避 PC 値 EIT 受付命令 分岐命令 EIT タイプ 分岐 する しない 遅延 スロット なし あり なし あり CM71-00105-1 遅延スロット命令 割込み 例外 ・トラップ 割込み ・トラップ 例外 受付 退避 PC 受付 退避 PC 受付 退避 PC 受付 退避 PC ○ ○ ○ ○ PC PC PC PC ○ × ○ × 分岐先 − 次の命令 − − ○ − ○ − 分岐命令 − PC − ○ − ○ − 分岐先 − 次の命令 FUJITSU MICROELECTRONICS LIMITED 65 第 4 章 リセットと EIT 処理 4.8 レジスタ設定の反映されるタイミング 4.8 FR81 ファミリ レジスタ設定の反映されるタイミング プログラムステータス (PS) の割込み許可フラグ (I) と割込みレベルマスクレジスタ (ILM) の値を変更したときに , 新しい値が反映されるタイミングについて説明しま す。 4.8.1 割込み許可フラグ (I) の反映タイミング 割込み許可フラグ (I) の値を変更した命令から , 割込み要求の受付け(許可・禁止)が 反映されます。 割込み許可 (I=1) にするときの割込み許可フラグ (I) の反映タイミングを図 4.8-1 に , 割 込み禁止 (I=0) にするときの割込み許可フラグ (I) の反映タイミングを図 4.8-2 に示しま す。 図 4.8-1 割込み許可 (I=1) にするときの割込み許可フラグ (I) の反映タイミング I フラグ 割込み 命令 0 禁止 ORCCR #10H 1 許可 命令 1 許可 命令実行 ここから割込み許可 図 4.8-2 割込み禁止 (I=0) にするときの割込み許可フラグ (I) の反映タイミング I フラグ 割込み 命令 1 許可 ANDCCR #EFH 0 禁止 命令 0 禁止 命令実行 ここから割込み禁止 4.8.2 割込みレベルマスクレジスタ (ILM) の反映タイミング 割込みレベルマスクレジスタ(ILM)の値を変更した命令から, 割込み要求の受付けが反 映されます。 割込みレベルマスクレジスタ (ILM)を変更したときの反映タイミングを図 4.8-3 に示し ます。 66 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.8 レジスタ設定の反映されるタイミング FR81 ファミリ 図 4.8-3 割込みレベルマスクレジスタ (ILM) を変更したときの反映タイミング ILM 割込み受付 命令 A A STILM #set_ILM_B B B 命令 B B 命令 B B 命令実行 ここから ILM 反映 set_ILM_B は , 新しく設定する割込みレベルマスクレジスタ (ILM) の値です。たとえ ば , STILM #30 のように , 0 ∼ 31 の数値で示してください。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 67 第 4 章 リセットと EIT 処理 4.9 一般割込みの使用手順 4.9 FR81 ファミリ 一般割込みの使用手順 一般割込みは , 内蔵の周辺機能および外部端子からの割込み要求を受付けて , EIT 処 理を行います。一般割込みを使用するときの , プログラミングの一般的な注意事項 を示します。具体的な手順は周辺機能により異なりますので , 各品種のハードウェ アマニュアルを参照してください。 4.9.1 一般割込みを使用するときの準備 一般割込みを使用する前に , EIT 処理の設定が行われている必要があります。プログ ラムにて次の設定を事前に行ってください。 • ベクタテーブルの値を設定(データとして定義) • システムスタックポインタ (SSP) の値を設定 • テーブルベースレジスタ (TBR) の値をベクタテーブルの先頭アドレスに設定 • 割込みレベルマスクレジスタ (ILM) の値を 16(10000B) 以上に設定 • 割込み許可フラグ (I) に "1" を設定 上記の設定の後に周辺機能の設定をします。 一般割込みを使用する周辺機能の場合 , そ の周辺機能のレジスタに, 割込み要因となる事象が起きたことを示すフラグビットと, そのフラグビットによる割込み要求を許可または禁止する割込み許可ビットの2つがあ ります。 周辺機能が動作停止状態 , 割込み要求を禁止 , フラグビットがクリアされていることを 確認します。リセット後には , この状態になっています。 周辺機能が動作中の場合には周辺機能の動作を停止させてから , 割込み要求を禁止 , フ ラグビットをクリアしておきます。 割込みコントローラの割込み制御レジスタ (ICR) に割込みレベルを設定します。割込 み制御レジスタ (ICR) はベクタ番号に対応して , 複数のレジスタが用意されているの で , 使用する割込みのベクタ番号に対応した割込み制御レジスタ (ICR) を設定してく ださい。 フラグビットをクリア , 割込み要求を許可してから , 周辺機能の動作を開始します。 4.9.2 割込み処理ルーチンでの処理 一般割込みの割込み要求が発行されて , CPU に EIT として受理されると , EIT シーケ ンス実行後に割込み処理ルーチンに入ります。 68 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 4 章 リセットと EIT 処理 4.9 一般割込みの使用手順 FR81 ファミリ 一般割込みの割込み要因には , それぞれベクタ番号が付けられており , そのベクタ番号 に対応した , 割込み処理ルーチンへ入ります。割込み要因とベクタ番号の対応付けは必 ず1:1になるわけでなく , 複数の割込み要因に同じベクタ番号が対応していることが あります。この場合 , 複数の割込み要因で同じ割込み処理ルーチンが使用されます。 割込み処理ルーチンの先頭にて , 割込み要因となっているフラグビットを確認します。 フラグビットがセットされていれば , その割込み要因の割込み要求と判断して , そのフ ラグビットをクリアしてから必要な処理(プログラム)を実行します。複数の割込み 要因に同じベクタオフセットが対応している場合には , 割込み要因となっているフラ グビットが複数あるので , それぞれフラグビットを調べて , 同じように対処します。 フラグビットのクリアは , その割込み要因の割込みが禁止されている状態で行う必要 があります。EIT シーケンスが実行されて割込み処理ルーチンへ入ったときには , そ の一般割込みの割込みレベルが割込みレベルマスクレジスタ (ILM) に格納されて , そ の割込みレベルの一般割込みが禁止されています。そのまま , 割込みレベルマスクレ ジスタ (ILM) を変更しないで , 割込み処理の最後でフラグビットをクリアするように してください。 割込み処理ルーチンからは , RETI 命令で復帰します。 4.9.3 一般割込みを使用するときの注意事項 割込み要求を許可するときは , 対応するフラグビットがクリアされている状態で行う か , フラグビットのクリアと同時に行います。フラグビットがセットされているときに , 割込み要求を許可すると , すぐに割込み要求が発生してしまいます。 割込み要求を許可しているときは , 割込み処理ルーチン以外でフラグビットをクリア しないでください。フラグビットは , 割込み要求を禁止しているときにクリアするよう にします。 周辺機能が動作しているときにフラグビットをクリアした場合 , レジスタ書込みによ るフラグビットのクリアと , 割込み要因となる事象の発生が , 同時または非常に近い時 間に起きると , フラグビットがクリアされないことがあります。フラグビットのクリア と割込み要因となる事象の発生が同時に起きたときに , フラグビットがクリアされる かどうかは , 周辺機能により異なります。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 69 第 4 章 リセットと EIT 処理 4.10 注意事項 4.10 FR81 ファミリ 注意事項 リセットと EIT 処理に関する注意事項を示します。 4.10.1 EIT シーケンス , RETI シーケンスでの例外発生 EIT シーケンス , RETI シーケンス中にデータアクセス保護違反例外 ( ガーデッドアク セスブレーク含む ) および不正命令例外 ( データアクセスエラー ) が発生した場合 , シ ステムスタック領域へアクセスできない状態となっていますので , CPU は停止状態と なります。この状態から復帰させるためには , リセットを行うかデバッガからブレーク 割込みを行ってください。 この時データアクセス保護違反例外および不正命令例外 ( データアクセスエラー) 自体 は受付けられず , 直ちに停止します。 停止した状態でリセットもしくはブレーク割込み要求を検出した時点で , リセット処 理 / ブレーク処理を開始します。 なお , この停止状態に遷移した場合 , EIT, RETI シーケンスが終了せず途中の状態で停 止していますので , そのままユーザプログラムを実行することは不可能です。 4.10.2 マルチプルロード , マルチプルストア命令での例外発 生 LDM0, LDM1, STM0, STM1, FLDM, FSTM 命令実行中にデータアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー) およびガーデッドアクセスブレーク ( データア クセス ) が発生した場合 , 途中まで行われた結果はメモリおよび R15(SSP/USP) に反映 されます。実行が行われなかったレジスタのリストは例外ステータスレジスタ (ESR) のレジスタリストに保持されます。 4.10.3 ダイレクトアドレス転送命令での例外発生 ダイレクトアドレス転送命令 (DMOV) でダイレクト領域からメモリへ転送を行う時に メモリへの転送でデータアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー) およびガーデッドアクセスブレーク ( データアクセス ) が発生した場合 , 先のダイレク ト領域の I/O レジスタがリードにより値が変わるときは例外発生時には I/O レジスタの 値が更新されています。 70 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第5章 パイプライン動作 この章では , FR81 ファミリ CPU の特長であるパ イプライン動作 , 遅延分岐処理などについて説明し ます。 5.1 パイプラインによる命令実行 5.2 パイプライン動作と割込み処理 5.3 パイプラインハザード 5.4 ノンブロッキングロード 5.5 遅延分岐処理 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 71 第 5 章 パイプライン動作 5.1 パイプラインによる命令実行 5.1 FR81 ファミリ パイプラインによる命令実行 FR81 ファミリ CPU は , 命令処理をパイプライン動作で行っています。このため , ほとんどの命令の実行を 1 サイクルで処理できます。FR81 ファミリ CPU は , 整数 パイプライン , 浮動小数点パイプラインの 2 つのパイプラインを持ちます。 パイプライン動作とは , CPU の命令の解釈と実行を行う各種ステップを数種のステー ジに分割し , 各命令の異なったステージを同時に実行することです。ほかの処理方法 では複数サイクルかかる命令実行を見かけ上 1 サイクルで行います。 整数パイプラインと浮動小数点パイプラインは , デコードステージまで共通に処理を 行い , 実行ステージからは各パイプラインで独立して処理を行います。各パイプライン 間での実行完了は , 命令発行の順番とは異なりますが , プログラムシーケンスの順書に 従った処理結果は保証します。 5.1.1 整数パイプライン 整数パイプラインは , FR ファミリ互換の 5 段パイプラインです。ノンブロッキングロー ドを行うために , ロード用の 4 段バッファがあります。 整数パイプラインは , 以下の 5 ステージの構成です。 • F ステージ:命令取込み 命令アドレスを出力して , 命令をフェッチします。 • D ステージ:命令解釈 フェッチした命令をデコードします。レジスタの読出しも行います。 • EX ステージ:命令実行 演算を実行します。 • MA ステージ:メモリアクセス メモリに対するロードまたはストアのアクセスを行います。 • WB ステージ:レジスタ書込み 演算結果(またはロードされたメモリのデータ)をレジスタに書込みます。 整数パイプラインの動作例 (1) を図 5.1-1 に , 動作例 (2) を図 5.1-2 に示します。 72 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 5 章 パイプライン動作 5.1 パイプラインによる命令実行 FR81 ファミリ 図 5.1-1 整数パイプラインの動作例 (1) ( 1) LD @R10, R1 LDI:8 #0x02, R2 CMP R1, R2 IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA BNE:D Label_G ADD #0x1, R1 WB 命令の実行は原則として 1 サイクルあたり 1 命令で行われます。ただし , メモリウェ イトを伴ったロードストア命令 , 遅延なし分岐命令および複数サイクル命令では , 命 令の実行に複数のサイクルが必要になります。また , CPU 内部のバスの競合や , 外部 バスインタフェースを通しての命令実行など , 命令の供給が遅い場合も命令の実行速 度が低下します。 整数パイプラインでは命令は順番に実行されます。たとえば , 命令 A が命令 B の前に パイプラインに入ると , 命令 A は必ず命令 B の前に WB ステージに達します。ただ し , ロード命令 (LD 命令 ) で使用するレジスタを後続の命令で使用しない場合には , ノ ンブロッキングロード用のバッファにより後続の命令がロード命令の実行完了を待た ずに先行して実行されます。 図 5.1-2 整数パイプラインの動作例 (2) ( 2) LD @R10, R1 LDI:8 #0x02, R2 CMP R1, R2 BNE:D Label_G ADD #0x1, R1 IF ID IF EX MA MA MA WB ID EX MA WB IF ID ID ID EX MA WB IF ID EX MA WB IF ID EX MA WB ロード命令 (LD 命令 ) では , ロードしたデータの読み込みが終了するまで MA ステー ジが延長されます。ただし , ロード命令で使用するレジスタを後続の命令で使用して いない場合は , そのまま後続の命令を実行します。 図 5.1-1 の例では , 先行する LD 命令で R1 にロードして(R1 にロード値を書き込み), 後続の CMP 命令にて R1 の内容を参照しています。ロードしたデータが 1 サイクルで 帰ってきているため , 順番どおりに命令が実行されています。 図 5.1-2 の例では , 同様に CMP 命令にて LD 命令でロード値を書き込む R1 を使用して います。ロードしたデータが 1 サイクルで帰ってきていないため , LDI:8 命令まで実 行され , CMP 命令はレジスタハザードにより ID ステージで待たされます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 73 第 5 章 パイプライン動作 5.1 パイプラインによる命令実行 5.1.2 FR81 ファミリ 浮動小数点パイプライン 浮動小数点パイプラインは , 浮動小数点演算を実行するための 6 段パイプラインです。 IF ステージ , ID ステージは整数パイプラインと共用しています。 浮動小数点パイプラインは , 以下の 5 ステージ構成です。 • IF ステージ:命令取込み 命令アドレスを出力して , 命令をフェッチします。 • ID ステージ:命令解釈 フェッチした命令をデコードします。レジスタの読出しも行います。 • E1 ステージ:命令実行 1 演算を実行します。命令によっては複数サイクル存在します。 • E1 ステージ:命令実行 2 丸め , 正規化を行います。 • WB ステージ:レジスタ書込み 演算結果をレジスタに書込みます。 74 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 5 章 パイプライン動作 5.2 パイプライン動作と割込み処理 FR81 ファミリ 5.2 パイプライン動作と割込み処理 パイプライン動作を行っているため , 割込みを許可した状態で割込み要因となるフ ラグをクリアすると , 割込みを受け付けたあとに , 割込み要求が消失してしまうよう に見える事象が発生することがあります。 割込みの受付けと取消しの前後不一致 5.2.1 CPU はパイプライン処理を行っているため , 割込み発生を受付けたときには , すでに 複数命令のパイプライン処理を実行しています。このため , パイプラインで実行中の 命令の中で該当する割込みを取り消す処理(たとえば , 割込み要因となるフラグビッ トをクリアする)を行った場合に , 該当する割込み処理プログラムへの分岐は正常に 行われますが , 割込み処理プログラムに制御が移行したときに割込み要求がなくなっ ている(割込み要因となるフラグビットがクリアされている)場合があります。 割込みの受付けと取消しの前後不一致の例を図 5.2-1 に示します。 図 5.2-1 割込みの受付けと取消しの前後不一致の例 割込み要求 なし LD @R10, R1 IF ST R2, @R11 なし なし なし 発生 取消し なし なし ID EX MA WB IF ID EX MA WB IF ID -- -- -- IF -- -- -- -- IF ID EX MA ADD R1, R3(cancelled) BNE TestOK(cancelled) EITシーケンス実行#1 なし WB -- :キャンセルしたステージ 例外およびトラップは , プログラムにて要求を取り消す操作ができないため , このよ うな現象はありません。 5.2.2 前後不一致の防止方法 周辺機能で割込み要求を許可している状態で , 割込み要因となるフラグビットをクリ アする場合は , 割込みの受付けと取消しの前後不一致が起こることがあります。 このような現象を防ぐには , 割込み許可フラグ (I) を "0" にして CPU の割込みの受付け を禁止してから , 割込み要因となるフラグビットをクリアするようにしてください。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 75 第 5 章 パイプライン動作 5.3 パイプラインハザード FR81 ファミリ パイプラインハザード 5.3 FR81 ファミリ CPU はプログラム列の順序通りの処理を行うために , データハザー ド , 構造ハザードの発生を検出し , 必要があればパイプライン処理を停止する機能を 内蔵しています。 5.3.1 データハザードの発生 データハザードは , 先行命令と後続命令の間で , レジスタ参照・更新の依存関係があ る場合に起きます。連続する命令列の前の命令で書き込んだレジスタの値を次の命令 で参照しようとすると , 参照時にまだ書込みが完了していない状況が発生する場合が あります。 データハザードの例を図 5.3-1 に示します。この例ではアドレスとして使用する R1 の 読出しは直前の命令の R1 への書込みより時間的に前となり , このままでは変更前の 値を読み出してしまいます(実際にはデータハザードは回避されて , 変更後の値が読 み出されます)。 図 5.3-1 データハザードの例 IF ADD R0, R1 SUB R1, R2 5.3.2 ID EX MA WB IF ID EX MA : R1への書込みサイクル WB : R1からの読出しサイクル レジスタバイパス データハザードが発生した場合でも , 命令が参照しようとしているレジスタを前の命 令の処理途中から取り出すことができれば , 命令の動作を遅らせることなく処理を実 現できる場合があります。このようなデータ転送処理をレジスタバイパスとよびます。 レジスタバイパスの例を図 5.3-2 に示します。この例では SUB 命令の ID ステージで R1 レジスタから読み出す代わりに , ADD 命令の EX ステージで生成される計算結果 (レジスタへの格納前)を使用することで , 遅延なく命令を実行できます。 図 5.3-2 レジスタバイパスの例 ADD R0, R1 SUB R1, R2 76 IF ID EX MA WB IF ID EX MA : R1へのデータを計算するサイクル WB : R1からの読出しサイクル FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 5 章 パイプライン動作 5.3 パイプラインハザード FR81 ファミリ 5.3.3 インターロック データが CPU 内部に取り込まれるタイミングが遅い命令では , レジスタバイパスでは 対応できないデータハザードが生じる場合があります。 レジスタバイパスで対応できないデータハザードの例を図 5.3-3 に示します。この例で は SUB 命令の ID ステージで必要とするデータを , LD 命令の MA ステージで CPU 内 部に取り込むため , レジスタバイパスでは対処できません。 図 5.3-3 レジスタバイパスで対応できないデータハザードの例 LD IF @R0, R1 SUB R1, R2 ID EX MA WB IF ID EX MA : R0へのデータの読出しサイクル WB : R1からの読出しサイクル このような場合 , 後続の命令の動作を待たせることで , 命令を正しく動作させます。 この機能をインターロックといいます。インターロックの例を図 5.3-4 に示します。こ の例では , SUB 命令の ID ステージを遅らせることで , LD 命令の MA ステージから データを取り込みます。 図 5.3-4 インターロックの例 LD @R0, R1 SUB R1, R2 5.3.4 IF ID EX MA WB IF ID ID EX : R0へのデータの読出しサイクル MA WB : R1からの読出しサイクル スタックフラグ (S) の書換え後の R15 レジスタ参照 によるインターロック 汎用レジスタの R15 の実体はシステムスタックポインタ (SSP) またはユーザスタック ポインタ (USP) になっています。このため , プログラムステータス (PS) 内のスタック フラグ (S) を更新する命令の直後に R15 を参照する命令を配置すると , CPU はプログ ラムに記述された順序で SSP または USP を参照できるようにインターロックを自動的 に生成します。 ハードウェアの都合上 , スタックフラグ (S) を更新する命令の直後に命令フォーマッ トが TYPE-A の命令を配置した場合も , 同様にインターロックを生成します。命令 フォーマットについては「6.2.3 CM71-00105-1 命令フォーマット」を参照してください。 FUJITSU MICROELECTRONICS LIMITED 77 第 5 章 パイプライン動作 5.3 パイプラインハザード 5.3.5 FR81 ファミリ 構造ハザード 構造ハザードは , 同一のハードウェアリソースを使用する命令間でリソースの競合が 発生したときに起きます。構造ハザードを検出した場合は , ハザードが解消されるまで パイプラインのインターロックを行い後続命令の処理を待たせます。 5.3.6 制御ハザード 制御ハザードは , 分岐命令を実行する場合に , 分岐命令の実行完了まで次の命令を フェッチできないために起きます。FR81 ファミリでは , この制御ハザードによるペナ ルティを減らすために , ID ステージからの分岐先アドレスバイパスによるプリフェッ チ機能と , 遅延分岐命令を追加しています。そのため , 見掛け上ペナルティは発生しま せん。 ● プリフェッチ機能 FR81 ファミリの CPU は , 32 ビット× 4 段のプリフェッチバッファを持ち , バッファに 空きがある場合は連続するアドレスの後続命令のフェッチを行います。ただし , 分岐命 令をデコードした場合には , 条件によらず分岐先の命令フェッチを行います。分岐した 場合には , プリフェッチバッファの命令を破棄して分岐先に続く命令のプリフェッチ を行います。分岐しなかった場合には , 分岐先命令の破棄を行いプリフェッチバッファ の命令を使用します。 ● 遅延分岐処理 遅延分岐処理は, パイプライン動作のため取り込んだ分岐命令直後の1命令を分岐の成 立 / 不成立にかかわらず実行させる機能です。分岐命令直後の位置を遅延スロットと よびます。遅延スロットに配置できる命令は , 16 ビット長の 1 ステートで実行可能な 命令です。遅延スロットで使用できない命令が , 遅延スロットに配置された場合は不正 命令例外を発生させます。遅延スロットに配置可能な命令の一覧は , 付録 A.3 を参照し てください。 78 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 5 章 パイプライン動作 5.4 ノンブロッキングロード FR81 ファミリ 5.4 ノンブロッキングロード FR81 ファミリ CPU ではノンブロッキングロードが行われます。最大で 4 つのロー ド命令を先行して発行可能です。 ノンブロッキングロードでは , ロード命令で値を格納する汎用レジスタを , 後続の命令 で参照しない場合に , ロード命令の実行終了を待たずに後続の命令が実行されます。 次のように , LD 命令で値を格納するレジスタ R1 を , 後続の ADD 命令で参照してい る場合には , LD 命令によりレジスタ R1 に値が格納されてから , ADD 命令が実行さ れます。 LD @10,R1 ADD R1,R2 ; 先行する LD 命令の実行終了を待つ 次のように , LD 命令で値を格納するレジスタ R1 を後続の ADD 命令で参照していな い場合には , LD 命令の実行終了を待つことなく ADD 命令が実行されます。その後 , レジスタ R1 を参照する SUB 命令が実行されるときに , 先行する LD 命令が実行終了 していなければ , その LD 命令が実行終了するのを待って SUB 命令が実行されます。 LD @10,R1 ADD R2,R3 ; 先行する LD 命令の実行終了を待たない SUB R1,R3 ; 先行する LD 命令の実行終了を待つ 最大で 4 つのロード命令を先行して発行できます。次のように , 複数の LD 命令を先 行して発行しておくような使い方ができます。 CM71-00105-1 ; LD 命令 (1) LD @100,R1 LD @104,R2 LD @108,R3 LD @112,R4 ; LD 命令を最大 4 命令まで先行発行可能 ADD R5,R6 ; 先行する LD 命令の実行終了を待たないで実行 SUB R6,R0 ADD R1,R5 ; 先行する LD 命令 (1) の実行終了を待って実行 FUJITSU MICROELECTRONICS LIMITED 79 第 5 章 パイプライン動作 5.5 遅延分岐処理 5.5 FR81 ファミリ 遅延分岐処理 FR81 ファミリ CPU はパイプライン動作のため , 分岐命令を実行したときはすでに その命令の取込みを完了しています。遅延分岐処理はこの取り込んだ命令を実行さ せる機能です。遅延分岐処理を使用して処理速度を向上させることができます。 5.5.1 遅延なし分岐命令の処理例 遅延なし分岐命令はプログラムの記述の順序に命令を実行しますが , 分岐する場合に は遅延分岐命令に比べて実行速度が 1 サイクル遅くなります。 パイプライン動作を行うと , CPU の命令解釈後に分岐命令であることが判明した段階 で , すでに次の命令を取り込んでいます。プログラムの記述通りに実行させるのであ れば , この分岐命令のあとに取り込んだ命令を実行途中でキャンセルする必要があり ます。このような処理を行う分岐命令が遅延なし分岐命令です。 分岐条件が成立した場合の遅延なし分岐命令の処理例を図 5.5-1 に示します。この例で は , 分 岐 先 の 命 令 を フ ェ ッ チ す る 前 に パ イ プ ラ イ ン が 動 作 し 始 め て い た "ST R2,@R12" 命令(分岐命令の直後に置かれた命令)の実行を途中でキャンセルします。 このため , プログラム処理はプログラムで記述した通りの順序になります。その代わ り分岐命令は見掛け上 2 サイクルかかることになります。 図 5.5-1 遅延なし分岐命令の処理例(分岐条件が成立した場合) LD @R10, R1 IF LD @R11, R2 ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF -- -- -- -- IF ID EX MA ADD R1, R3 BNE TestOK(分岐条件成立時) ST R2, @R12(直後の命令) ST R2, @R13(分岐先の命令) WB -- : キャンセルしたステージ : PC更新 分岐条件が成立しない場合の遅延なし分岐命令の処理例を図 5.5-2 に示します。この例 で は , 分 岐 先 の 命 令 を フ ェ ッ チ す る 前 に パ イ プ ラ イ ン が 動 作 し 始 め て い た "ST R2,@R12" 命令(分岐命令の直後に置かれた命令)をキャンセルせずに実行します。分 岐はせずに順番に命令を実行していくので , プログラム処理はプログラマが記述した 通りの順序になります。分岐命令の実行速度は見掛け上 1 サイクルです。 80 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 5 章 パイプライン動作 5.5 遅延分岐処理 FR81 ファミリ 図 5.5-2 遅延なし分岐命令の処理例 ( 分岐条件が成立しない場合 ) LD @R10, R1 IF LD @R11, R2 ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB キャンセルしない IF ID EX MA WB ADD R1, R3 BNE TestOK(分岐条件不成立時) ST R2, @R12(直後の命令) ADD #4, R12(その次の命令) 遅延分岐命令の処理例 5.5.2 遅延分岐命令は分岐条件の成立・不成立にかかわらず見掛け上の実行速度は 1 サイクル となり , 遅延なし分岐命令で分岐する場合より処理が速くなります。ただし , 分岐す る場合に見掛け上命令実行の順序が反転したように見えます。 分岐命令の直後に置かれた命令は , 分岐命令実行時にはすでに取り込まれています。こ のような分岐命令の直後の位置を遅延スロットとよびます。分岐条件の成立・不成立 にかかわらず , 遅延スロットに置かれた命令を実行する分岐命令が遅延分岐命令です。 分岐条件が成立した場合の遅延分岐命令の処理例を図 5.5-3 に示します。この例では , 遅延スロットの "ST R2,@R12" 命令を実行した後に , 分岐先の "ST R2,@R13" 命令を実 行します。このため分岐命令の見掛け上の実行速度は 1 サイクルとなります。ただし , 分岐先の "ST R2,@R13" 命令の実行前に遅延スロットの "ST R2,@R12" 命令が実行さ れるため , 見掛け上は処理の順序が反転したように見えます。 図 5.5-3 遅延分岐命令の処理例(分岐条件が成立した場合) IF LD @R10, R1 LD @R11, R2 ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB キャンセルしない IF ID EX MA WB ADD R1, R3 BNE:D TestOK(分岐条件成立時) ST R2, @R12(遅延スロットの命令) ST R2, @R13(分岐先の命令) : PC更新 分岐条件が成立しない場合の遅延分岐命令の処理例を図 5.5-4 に示します。この例では , 遅延スロットの ”ST R2,@R12” 命令をキャンセルせずに実行します。このため , プロ グラム処理はプログラムで記述した通りの順序になります。分岐命令の実行速度は見 掛け上 1 サイクルです。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 81 第 5 章 パイプライン動作 5.5 遅延分岐処理 FR81 ファミリ 図 5.5-4 遅延分岐命令の処理例(分岐条件が成立しない場合) LD @R10, R1 LD @R11, R2 IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB キャンセルしない IF ID EX MA WB ADD R1, R3 BNE:D TestOK(分岐条件不成立時) ST R2, @R12(遅延スロットの命令) ADD #4, R12 82 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第6章 命令概要 この章では , FR81 ファミリ CPU の命令概要につ いて説明します。 6.1 命令体系 6.2 命令形式 6.3 データフォーマット 6.4 リードモディファイライト系命令 6.5 分岐命令と遅延スロット 6.6 ステップ除算命令 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 83 第 6 章 命令概要 6.1 命令体系 FR81 ファミリ 命令体系 6.1 FR81 ファミリ CPU は , FR80 ファミリと上位互換性のある整数系命令と , FPU によ る浮動小数点系命令を持っています。 6.1.1 整数系命令 整数系命令は , 一般的な RISC CPU の命令体系に加え , 組込み用途に最適化された論 理演算 , ビット操作およびダイレクトアドレッシング命令に対応しています。 整数系命令は , 次の 15 グループに分けられます。 ● 加減算命令 汎用レジスタ間または汎用レジスタと即値データの間で加減算を行う命令です。多 ワード長演算で使用するキャリ付き演算や , アドレス計算に便利なコンデションコー ドレジスタ (CCR) のフラグ値を変化させない演算も可能です。 ● 比較演算命令 汎用レジスタ間または汎用レジスタと即値データの間で減算を行い , 結果をコンデ ションコードレジスタ (CCR) のフラグに反映する命令です。 ● 論理演算命令 汎用レジスタ間または汎用レジスタとメモリ(I/O を含む)間で , ビットごとの論理 演算を行う命令です。 論理演算は , 論理積 (AND), 論理和 (OR), 排他的論理和 (EXOR) があります。メモリアドレス指定はレジスタ間接です。 ● ビット操作演算命令 メモリ(I/O を含む)と即値データの間で論理演算を行い , ビットごとに直接操作す る命令です。論理演算は , 論理積 (AND), 論理和 (OR), 排他的論理和 (EXOR) があり ます。メモリアドレス指定はレジスタ間接です。 ● 乗除算命令 汎用レジスタと乗除算結果レジスタ (MDH,MDL) の間で乗算および除算を行う命令で す。32 ビット× 32 ビット , 16 ビット× 16 ビットの乗算命令と , 32 ビット÷ 32 ビッ トの除算を行うためのステップ除算命令があります。 84 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.1 命令体系 FR81 ファミリ ● シフト演算命令 汎用レジスタのシフト(論理シフト , 算術シフト)動作を行う命令です。汎用レジスタ または即値データの指定により複数ビットのシフト(バレルシフト)を一度に指定で きます。 ● 即値データ転送命令 汎用レジスタに即値データを転送する命令です。8 ビット , 20 ビット , 32 ビットの即 値データを転送できます。 ● メモリロード命令 メモリ(I/O を含む)から , 汎用レジスタまたは専用レジスタにロードする命令です。 バイト , ハーフワード , ワードの 3 種類のデータ長を転送することができます。メモ リアドレス指定はレジスタ間接です。 一部の命令のメモリアドレス指定においては , ディスプレースメント付きレジスタ間 接や , レジスタインクリメント・デクリメント付きレジスタ間接が可能です。 ● メモリストア命令 汎用レジスタまたは専用レジスタからメモリ(I/O を含む)にストアする命令です。バ イト , ハーフワード , ワードの 3 種類のデータ長を転送することができます。メモリ アドレス指定はレジスタ間接です。 一部の命令のメモリアドレス指定においては , ディスプレースメント付きレジスタ間 接や , インクリメント・デクリメント付きレジスタ間接が可能です。 ● レジスタ間転送命令 / 専用レジスタ転送命令 汎用レジスタ間 , または汎用レジスタと専用レジスタの間でデータを転送する命令で す。 ● 遅延なし分岐命令 遅延スロットを持たない , 分岐 , サブルーチンコール , 割込みおよび復帰を行う命令で す。 ● 遅延分岐命令 遅延スロットを持つ , 分岐 , サブルーチンコール , 割込みおよび復帰を行う命令です。 分岐をするときに遅延スロットの命令を実行します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 85 第 6 章 命令概要 6.1 命令体系 FR81 ファミリ ● ダイレクトアドレス指定命令 汎用レジスタとメモリ(I/O を含む)間 , またはメモリとメモリ間のデータ転送を行 う命令です。アドレスをレジスタ間接ではなく , 命令のオペランドで直接指定するこ とができ , 効率の良いアクセスが行えます。 一部の命令では , 特定の汎用レジスタと組み合わせて , インクリメント・デクリメント 付きのレジスタ間接メモリアドレッシングと組み合わせてアクセスします。 ● ビットサーチ命令 FR81/FR80 ファミリ CPU で追加された命令です。汎用レジスタの 32 ビットデータを MSB から検索を行い , 最初に見つかった "1" のビット , "0" のビット , 変化点のビッ ト位置(MSB からのビットの距離)を求めます。 FR81/FR80 ファミリ以前のファミリ(FR30 ファミリ , FR60 ファミリなど)で周辺機 能として実装されていた , ビットサーチモジュールの機能に相当します。 ● その他の命令 プログラムステータス (PS) のフラグ設定 , スタック操作 , 符号 / ゼロ拡張などを行 う命令です。高級言語対応の関数入口 / 関数出口 , レジスタマルチロード / ストア命 令も備えています。 それぞれのグループにどのような命令があるかは「付録 A.2 命令一覧表」を参照してください。 6.1.2 浮動小数点系命令 浮動小数点系命令は , FR81 ファミリ CPU で追加された命令です。浮動小数点系命令は , 次の 6 グループに分けられます。 ● FPU メモリロード命令 メモリから , 浮動小数点レジスタにロードする命令です。メモリアドレス指定はレジス タ間接です。ディスプレースメント付きレジスタ間接や , レジスタインクリメント・ デクリメント付きレジスタ間接が可能です。 ● FPU メモリストア命令 浮動小数点レジスタから , メモリにストアする命令です。メモリアドレス指定はレジス タ間接です。ディスプレースメント付きレジスタ間接や , レジスタインクリメント・デ クリメント付きレジスタ間接が可能です。 ● FPU 単精度浮動小数点演算命令 単精度浮動小数点演算を行う命令です。 ● FPU レジスタ間転送命令 浮動小数点レジスタ間 , 浮動小数点レジスタと汎用レジスタの間でデータを転送する 命令です。 86 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.1 命令体系 FR81 ファミリ ● FPU 遅延なし分岐命令 遅延スロットを持たない , 条件分岐を行う命令です。 ● FPU 遅延分岐命令 遅延スロットを持つ , 条件分岐を行う命令です。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 87 第 6 章 命令概要 6.2 命令形式 FR81 ファミリ 命令形式 6.2 FR81 ファミリ CPU の命令形式について説明します。 6.2.1 命令記述形式 ● 整数系命令 整数系命令は 2 オペランド形式です。オペランドの数により 3 種類の命令記述形式が あります。命令記述形式は次のような形式になっています。 <ニーモニック> <オペランド1> <オペランド2> オペランド2とオペランド1の間でニーモニックの演算を行い , 結果をオペラ ンド2へ格納します。 例: ADD R1,R2 ; R2 + R1 -> R2 <ニーモニック> <オペランド1> オペランド1にニーモニックの操作を行います。 例: JMP @R1 ; R1 -> PC <ニーモニック> ニーモニックの操作を行います。 例: NOP ; No Operation オペランドには汎用レジスタ , 専用レジスタ , 即値データ , 汎用レジスタの一部と即値 データの組み合わせなどがあります。命令ごとにオペランドの形式が異なっています。 ● 浮動小数点系命令 浮動小数点系命令は 3 オペランド形式です。次の記述形式が追加されます。 <ニーモニック> <オペランド1> <オペランド2> <オペランド3> オペランド 1 とオペランド 2 の間でニーモニックの演算を行い , オペランド 3 へ 格納します。一部の命令では , オペランド 1 とオペランド 2 の間の演算結果と , オペランド 3 の間で演算を行い , 結果をオペランド 3 に格納します。 例: 88 FADDs FR1, FR2, FR3 ; FR1 + FR2 → FR3 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.2 命令形式 FR81 ファミリ 6.2.2 アドレス指定形式 メモリ空間のメモリまたは I/O レジスタにアクセスするときのアドレス指定の方法が いくつか用意されています。命令により使用できるアドレス指定形式が異なります。 @ 汎用レジスタ レジスタ間接アドレス指定です。汎用レジスタの内容が示すアドレスにアクセ スします。 @(R13, 汎用レジスタ ) 仮想アキュムレータ(R13)と汎用レジスタの内容を加算したアドレスにアクセス します。 @(R14, 即値データ ) フレームポインタ(R14)の内容と即値データを加算したアドレスにアクセスしま す。即値データはデータサイズ(ワード , ハーフワード , バイト)の倍数で指定 します。 @(R15, 即値データ ) スタックポインタ (R15) の内容と即値データを加算したアドレスにアクセスし ます。即値データはデータサイズ(ワード , ハーフワード , バイト)の倍数で指 定します。 @R15+ スタックポインタ (R15) の内容が示すアドレスにライトアクセスします。スタッ クポインタ (R15) に 4 が加算されます。 @-R15 スタックポインタ (R15) の内容から 4 を減算したアドレスにリードアクセスしま す。スタックポインタ (R15) から 4 が減算されます。 @ 即値データ ダイレクトアドレス指定です。即値データの示すアドレスにアクセスします。 @R13+ 仮想アキュムレータ (R13) の内容が示すアドレスにアクセスします。仮想アキュ ムレータ (R13) にデータサイズ(バイト数)が加算されます。 @(BP, 即値データ ) ベースポインタ (BP) と即値データを加算したアドレスにアクセスします。即値 データはデータサイズ(ワード , ハーフワード , バイト)の倍数で指定します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 89 第 6 章 命令概要 6.2 命令形式 6.2.3 FR81 ファミリ 命令フォーマット FR81 ファミリ CPU の命令は 16 ビット長です。命令のオペランドの構成により命令の ビット構成が異なります。命令のビット構成をグループで分類したものを命令フォー マットとよびます。 命令フォーマットは , TYPE-A から TYPE-N までの 14 種類があります。 TYPE-A 8 ビットのオペコード (OP) と 2 つのレジスタ指定フィールド (Rj/Rs,Ri) を持つ形 式です。 MSB LSB OP Rj/Rs Ri TYPE-B 4 ビットのオペコード (OP) と 8 ビットの即値データフィールド (i8/o8), レジス タ指定フィールド (Ri) を持つ形式です。 MSB LSB OP i8/o8 Ri TYPE-C 8 ビットのオペコード (OP) と 4 ビットの即値データフィールド (u4/m4/i4), レジ スタ指定フィールド (Ri) を持つ形式です。 MSB LSB OP u4/m4/i4 Ri TYPE-D 8 ビットのオペコード (OP) と 8 ビットの即値データフィールド (u8) またはアド レス指定フィールド (rel8/dir8) を持つ形式です。一部の命令では 8 ビットのレジ スタリスト指定フィールド (rlist) となります。 MSB LSB OP 90 u8/rel8/dir8/reglist FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.2 命令形式 FR81 ファミリ TYPE-E 12 ビットのオペコード (OP) とレジスタ指定フィールド (Ri/Rs) を持つ形式です。 MSB LSB OP Ri/Rs TYPE-E’ TYPE-E の変形です。12 ビットのオペコード (OP) を持つ形式です。TYPE-E の レジスタ指定フィールドは 0000B に固定されています。NOP 命令や RET 命令な ど , 16 ビットの命令コードが定義されている命令に適用されます。 MSB LSB OP 0 0 0 0 TYPE-F 5 ビットのオペコード (OP) と 11 ビットのアドレス指定フィールド (rel11) を持つ 形式です。 MSB LSB OP rel11 TYPE-G 8 ビットのオペコード (OP) と 20 ビットの即値データフィールド (i20), レジスタ 指定フィールド (Ri) を持つ形式です。32 ビット長の命令です。LDI:20 命令のみ 適用されます。 MSB (n+0) LSB OP (n+2) i20( 上位 ) Ri i20( 下位 ) TYPE-H 12 ビットのオペコード (OP) と 32 ビットの即値データフィールド (i32), レジス タ指定フィールド (Ri) を持つ形式です。48 ビット長の命令です。LDI:32 命令の み適用されます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 91 第 6 章 命令概要 6.2 命令形式 FR81 ファミリ MSB LSB (n+0) OP Ri (n+2) i32( 上位 ) (n+4) i32( 下位 ) TYPE-I 12 ビットのオペコード (OP) と , 20 ビットのアドレス指定フィールド (rel20) を 持つ形式です。FR81 ファミリ CPU で追加された命令フォーマットです。 MSB LSB (n+0) OP (n+2) rel20 rel20 TYPE-J 12 ビットのオペコード (OP) とレジスタ指定フィールド (Rj/FRi/cc), 16 ビットの アドレス指定フィールド (ul6/rel16) を持つ形式です。FR81 ファミリ CPU で追加 された命令フォーマットです。 MSB LSB (n+0) OP (n+2) Rj/FRi/cc u16/rel16 TYPE-K 12 ビットのオペコード (OP) と , レジスタ指定フィールド (Rj), 浮動小数点レジ スタ指定フィールド (FRi) を持つ形式です。FR81 ファミリ CPU で追加された命 令フォーマットです。 92 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.2 命令形式 FR81 ファミリ MSB LSB (n+0) OP Rj (n+2) − FRi TYPE-L 14 ビットのオペコード (OP) と , 14 ビットの即値データフィールド (o14/u14), 浮動小数点レジスタ指定フィールド (FRi) を持つ形式です。一部の命令では即値 データフィールドは使用されません。FR81 ファミリ CPU で追加された命令 フォーマットです。 MSB LSB (n+0) OP (n+2) o14/u14/- o14/u14/- FRi TYPE-M 16 ビットのオペコード (OP) と , 3 つの浮動小数点レジスタ指定フィールド (FRk, FRj, FRi) を持つ形式です。FR81 ファミリ CPU で追加された命令フォーマット です。 MSB LSB (n+0) OP (n+2) − FRk/- FRj/- FRi/- TYPE-N 14 ビットのオペコード (OP) と , 浮動小数点レジスタリスト (frlist) を持つ形式 です。FR81 ファミリ CPU で追加された命令フォーマットです。 MSB (n+0) (n+2) CM71-00105-1 LSB OP − frlist FUJITSU MICROELECTRONICS LIMITED 93 第 6 章 命令概要 6.2 命令形式 6.2.4 FR81 ファミリ レジスタ指定フィールド ● 汎用レジスタ指定フィールド (Ri/Rj) 命令フォーマット中で , 汎用レジスタを指定するフィールドは , 4 ビット長の Ri およ び Rj です。汎用レジスタとレジスタ指定フィールドのビットパターンの関係を表 6.21 に示します。 表 6.2-1 汎用レジスタとレジスタ指定フィールドのビットパターン Ri / Rj 0000B 0001B 0010B 0011B 0100B 0101B 0110B 0111B レジスタ R0 R1 R2 R3 R4 R5 R6 R7 Ri / Rj 1000B 1001B 1010B 1011B 1100B 1101B 1110B 1111B レジスタ R8 R9 R10 R11 R12 R13 R14 R15 ● 専用レジスタ指定フィールド (Rs) 命令フォーマット中で , 専用レジスタを指定するフィールドは , 4 ビット長の Rs で す。専用レジスタとレジスタ指定フィールドのビットパターンの関係を表 6.2-2 に示し ます。 表 6.2-2 専用レジスタとレジスタ指定フィールドのビットパターン Rs 0000B 0001B 0010B 0011B 0100B 0101B 0110B 0111B レジスタ テーブルベースレジスタ (TBR) リターンポインタ (RP) システムスタックポインタ (SSP) ユーザスタックポインタ (USP) 乗除算レジスタ (MDH) 乗除算レジスタ (MDL) ベースポインタ (BP) FPU 制御レジスタ (FCR) Rs 1000B レジスタ 例外ステータスレジスタ (ESR) 1001B 1010B 1011B Reserved 1100B 1101B 1110B 1111B デバッグレジスタ (DBR) 専用レジスタを指定するフィールドで Reserved となっているビットパターンは予約パ ターンです。予約パターンを指定した場合の動作は保証範囲外となります。 ● 浮動小数点レジスタ指定フィールド 命令フォーマット中で , 浮動小数点レジスタを指定するフィールドは , 4 ビット長の FRi, FRj および FRk です。浮動小数点レジスタとレジスタ指定フィールドのビットパ ターンの関係を表 6.2-3 に示します。 94 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.2 命令形式 FR81 ファミリ 表 6.2-3 浮動小数点レジスタとレジスタ指定フィールドのビットパターン FRk/FRj/FRi 0000B 0001B 0010B 0011B 0100B 0101B 0110B 0111B CM71-00105-1 レジスタ FR0 FR1 FR2 FR3 FR4 FR5 FR6 FR7 FRk/FRj/FRi 1000B 1001B 1010B 1011B 1100B 1101B 1110B 1111B レジスタ FR8 FR9 FR10 FR11 FR12 FR13 FR14 FR15 FUJITSU MICROELECTRONICS LIMITED 95 第 6 章 命令概要 6.3 データフォーマット FR81 ファミリ データフォーマット 6.3 FR81 ファミリ CPU で扱うことのできるデータ種類とフォーマットに関して説明し ます。FR80 ファミリまでの整数型に加えて , 単精度浮動小数点型が存在します。 6.3.1 整数系命令で使用するデータフォーマット ( 全 FR ファミリ共通 ) ● 符号付整数バイト 符号付整数バイトは連続する 8 ビットで表現します。 bit 7 が符号ビット (S) であり , "0" のときに正または零を表し , "1" のときに負を表します。 MSB 7 6 LSB 0 S ● 符号なし整数バイト 符号なし整数バイトは連続する 8 ビットで表現します。 MSB 7 LSB 0 ● 符号付整数ハーフワード 符号付整数ハーフワードは連続する 16 ビットで表現します。 bit 15 が符号ビット (S) で あり , "0" のときに正または零を表し , "1" のときに負を表します。 MSB 15 14 S LSB 0 ● 符号なし整数ハーフワード 符号なし整数ハーフワードは連続する 16 ビットで表現します。 MSB 15 96 FUJITSU MICROELECTRONICS LIMITED LSB 0 CM71-00105-1 第 6 章 命令概要 6.3 データフォーマット FR81 ファミリ ● 符号付整数ワード 符号付整数ワードは連続する 32 ビットで表現します。bit 31 が符号ビット (S) であり , "0" のときに正または零を表し , "1" のときに負を表します。 MSB 31 30 S LSB 0 ● 符号なし整数ワード 符号なし整数ワードは連続する 32 ビットで表現します。 MSB 31 S 6.3.2 LSB 0 浮動小数点系命令で使用するフォーマット ● 浮動小数点フォーマット 浮動小数点フォーマットには , IEEE754 規格を採用しています。浮動小数点は以下の 3 個のフィールドで表現されます。 フィールド 記号 内容 符号ビット (Sign) s 0 で正 , 1 で負 指数部 (Exponent) e 単精度で 127, 倍精度で 1023 のゲタ履き表現 仮数部 (Fraction) f 1 未満の数を表しますが , 実際には 1 を加えたものを 使用 上記記号を用いて , 浮動小数点 ( 正規化数 ) は以下の式で表現されます。bias は , 単 精度の場合 127 で倍精度の場合 1023 となります。 (-1) s × 1. f × 2 (e - bias) また , 上記以外に非数 (Not a Number: NaN), 無限大 ( ∞ ), 零 , 非正規化数という特 別な数もあります。 CM71-00105-1 Signaling 非数 (SNaN) e - bias が Emax +1 で f の MSB が 0 Quiet 非数 (QNaN) e - bias が Emax +1 で f の MSB が 1 無限大 (+ ∞ , - ∞ ) e - bias が Emax +1 で f が 0 正規化数 e - bias が Emin から Emax 非正規化数 e - bias が Emin -1 で f が 0 でない 零 (+0, -0) e, fが0 FUJITSU MICROELECTRONICS LIMITED 97 第 6 章 命令概要 6.3 データフォーマット FR81 ファミリ ● 単精度浮動小数点 (32 ビット ) IEEE754 単精度フォーマットに準拠しており , 連続する 32 ビットで表現します。単精 度浮動小数点フォーマットでは , bit 31 が符号ビット (S), bit30 ∼ bit23 が指数部 , bit22 ∼ bit0 が仮数部です。 MSB 31 30 S 98 LSB 0 23 22 Exponent Fraction FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.4 リードモディファイライト系命令 FR81 ファミリ 6.4 リードモディファイライト系命令 リードモディファイライト系の命令は , メモリ空間から読み出したデータに演算処 理を行い , その結果をメモリ空間の同じアドレスに書き込む一連の動作を行う命令 です。 周辺機能のレジスタ (I/O レジスタ ) では , LD 命令のようなリードアクセスを単独で行 う命令と , リードモディファイライト系の命令とで , 読み出される値が異なるビットが あります。そのようなビットは周辺機能のレジスタ (I/O レジスタ ) の説明に明記され ています。 リードモディファイライト系の命令は , 1 つの命令のリードアクセスとライトアクセス の間に EIT 処理などで別の命令が実行されることがありません。このことを利用して プログラム間でフラグやセマフォを使った排他制御などに使用されます。 リードモディファイライト系の命令かどうかは命令ごとに定義されます。「第 7 章 命 令細則」を参照してください。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 99 第 6 章 命令概要 6.5 分岐命令と遅延スロット 6.5 FR81 ファミリ 分岐命令と遅延スロット FR81 ファミリ CPU の分岐命令には , 遅延分岐命令と遅延なし分岐命令の 2 種類が あります。 6.5.1 遅延分岐命令 遅延分岐命令では , 分岐先の命令を実行する前に , 分岐命令の直後の命令を実行しま す。遅延分岐命令の直後の命令を遅延スロットとよびます。 ニーモニックに ":D" の付いた分岐命令が遅延分岐命令です。以下の命令が遅延分岐命 令になります。 JMP:D @Ri CALL:D label12 CALL:D @Ri RET:D BRA:D label9 BNO:D label9 BEQ:D label9 BNE:D label9 BC:D label9 BNC:D label9 BN:D label9 BP:D BV:D label9 BNV:D label9 BLT:D label9 BGE:D label9 BLE:D label9 BGT:D label9 BLS:D label9 BHI:D label9 label9 分岐動作の前に遅延スロットの命令を実行するため , 分岐命令の見掛け上の実行サイ クルが 1 サイクルとなります。遅延スロットに有効な命令を置くことができない場合 には , NOP 命令を置く必要があります。遅延分岐命令の例を次に示します。 ; 命令の並び ADD R1,R2 BRA:D LABEL ; 分岐命令 MOV R2,R3 ; 遅延スロット(分岐の前に実行される) R3,@R4 ; 分岐先 ・・・ LABEL: ST 条件分岐命令では , 分岐条件が成立するときでも , 成立しないときでも遅延スロットに 置かれた命令は実行されます。 遅延スロットに置くことができる命令は次の条件を満たす命令のみです。遅延スロッ トに置くことができない命令を実行しようとしたときには , 不正命令例外が発生して , EIT 処理が行われます。 • 1 サイクル命令 • 分岐命令ではない • 順番が変化した場合でも動作に影響を与えない命令 100 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.5 分岐命令と遅延スロット FR81 ファミリ 1 サイクル命令とは , 「A.2 命令一覧表」でサイクル数の欄 (CYC) に 1, a, b, c, d のいず れかが単独で書かれた命令です (2a や 1+b などと書かれている命令は 1 サイクル命令 ではありません )。 遅延スロットに配置可能な命令一覧を「付録 A.3」に示します。 遅延分岐命令と遅延スロット命令の間では , ステップトレーストラップ , 一般割込み , NMI などの EIT 処理は受け付けられません。 遅延分岐命令の具体例 6.5.2 遅延分岐命令の具体例を以下に示します。 "JMP:D @Ri" 命令 , "CALL:D @Ri" 命令 JMP:D 命令 , CALL:D 命令で参照する汎用レジスタ Ri は , 遅延スロットの命令が Ri を更新しても , 分岐先アドレスには影響を受けません。 【例】 LDI:32 #Label,R0 JMP:D @R0 ; Label に分岐 LDI:8 #0,R0 ; 分岐先アドレスに影響を与えない … RET:D 命令 RET:D 命令が参照するリターンポインタ (RP) は , 遅延スロットの命令がリターンポ インタ (RP) を更新しても影響を受けません。 【例】 ; これより前に設定された RP の示すアドレスへ分岐 RET:D MOV R8,RP ; リターン動作に影響を与えない … Bcc:D 命令 Bcc:D命令が参照するコンディションコードレジスタ(CCR)のフラグは, 遅延スロッ トの命令の影響を受けません。 【例】 CM71-00105-1 ADD #1,R0 ; フラグ変化 BC:D overflow ; 上の ADD 命令の実行結果により分岐 ANDCCR #0 ; このフラグ更新は分岐する / しないに影響を与えない FUJITSU MICROELECTRONICS LIMITED 101 第 6 章 命令概要 6.5 分岐命令と遅延スロット FR81 ファミリ CALL:D 命令 CALL:D命令の遅延スロットの命令でリターンポインタ(RP)を参照すると, CALL:D 命令により更新された内容が読み出されます。 【例】 6.5.3 CALL:D Label ; RP を更新して分岐 MOV RP,R0 ; 上の CALL:D 命令の実行結果の RP を R0 へ転送 遅延なし分岐命令 遅延なし分岐命令では , 命令の並びの順に実行します。分岐命令の直後の命令が分岐前 に実行されることはありません。 ニーモニックに ":D" の付かない分岐命令が遅延なし分岐命令です。次の命令が遅延な し分岐命令になります。 JMP @Ri CALL label12 CALL @Ri RET BRA label9 BNO label9 BEQ label9 BNE label9 BC label9 BNC label9 BN label9 BP label9 BV label9 BNV label9 BLT label9 BGE label9 BLE label9 BGT label9 BLS label9 BHI label9 遅延なし分岐命令の実行サイクル数は , 分岐する場合に 2 サイクル , 分岐しない場合 に 1 サイクルになります。遅延なし分岐命令の例を次に示します。 ; 命令の並び ADD R1,R2 BRA LABEL ; 分岐命令 MOV R2,R3 ; 実行されない R3,@R4 ; 分岐先 ・・・ LABEL: ST 遅延スロットにNOP命令を置いた遅延分岐命令に比べて, 命令コードの効率を高める ことができます。遅延スロットに有効な命令を置けるときは遅延分岐命令を使用し , そうでないときは遅延なし分岐命令を使用することで , 実行速度とコード効率を両立 させることができます。 102 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.6 ステップ除算命令 FR81 ファミリ 6.6 ステップ除算命令 FR81 ファミリ CPU では , ステップ除算命令の組み合わせにより 32 ビットの符号付 き / 符号なしの除算を行います。 ステップ除算命令には次の命令があります。 • DIV0S (Initial Setting Up for Signed Division) • DIV0U (Initial Setting Up for Unsigned Division) • DIV1 (Main Process of Division) • DIV2 (Correction When Remain is 0) • DIV3 (Correction When Remain is 0) • DIV4S (Correction Answer for Signed Division) 符号付き除算を実現するためには , 次のように命令を組み合わせてください。 DIV0S, DIV1 × 32, DIV2, DIV3, DIV4S 符号なし除算を実現するためには , 次のように命令を組み合わせてください。 DIV0U, DIV1 × 32 各命令については「第 7 章 命令細則」を参照してください。 6.6.1 符号付き除算 符号付き 32 ビットの被除数を符号付き 32 ビットの除数で除算を行い , 符号付き 32 ビットの商と , 符号付き 32 ビットの剰余を求めます。 除算を行う前に次のレジスタに被除数と除数を設定します。 • 乗除算レジスタ (MDL):符号付き 32 ビットの被除数(割られる数) • 汎用レジスタの一つ:符号付き 32 ビットの除数(割る数) 次の 36 個の命令を実行して , 符号付き除算を行います。DIV0S 命令の次に DIV1 命令 を 32 命令並べます。DIV0S 命令 , DIV1 命令 , DIV2 命令のオペランドには除数を格 納した汎用レジスタを指定します。 DIV0S R2 ; R2 に除数 DIV1 R2 ; #1 DIV1 R2 ; #2 R2 ; #30 ・・・ DIV1 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 103 第 6 章 命令概要 6.6 ステップ除算命令 FR81 ファミリ DIV1 R2 ; #31 DIV1 R2 ; #32 DIV2 R2 DIV3 DIV4S 除算結果は次のレジスタに格納されます。 • 乗除算レジスタ (MDL):符号付き 32 ビットの商 • 乗除算レジスタ (MDH):符号付き 32 ビットの剰余 図 6.6-1 に符号付き除算の実行例を示します。 図 6.6-1 符号付き除算の実行例 R2 0 1 2 3 MDH ×××× ×××× MDL F E D C 4 5 6 7 B A 9 8 R2 0 1 2 3 4 5 6 7 MDH F F F F F F F F MDL F F F F F F F F D1 D0 T D1 D0 T SCR SCR ××0 実行前 1 1 0 実行後 SOFTUNE アセンブラでは , アセンブラ擬似機械命令として符号付き除算を行う DIV 命令が用意されています。この DIV 命令を上記の 36 個の命令の代わりに使用して , 符 号付き除算を 1 命令で記述できます。DIV 命令については「FR ファミリ SOFTUNE ア センブラマニュアル」を参照してください。 6.6.2 符号なし除算 符号なし 32 ビットの被除数を符号なし 32 ビットの除数で除算を行い , 符号なし 32 ビットの商と , 符号なし 32 ビットの剰余を求めます。 除算を行う前に次のレジスタに被除数と除数を設定します。 • 乗除算レジスタ (MDL):符号なし 32 ビットの被除数(割られる数) • 汎用レジスタの一つ:符号なし 32 ビットの除数(割る数) 次の 33 個の命令を実行して , 符号なし除算を行います。DIV0U 命令の次に DIV1 命 令を 32 命令並べます。DIV0U 命令 , DIV1 命令のオペランドには除数を格納した汎用 レジスタを指定します。 104 DIV0S R2 ; R2 に除数 DIV1 R2 ; #1 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 6 章 命令概要 6.6 ステップ除算命令 FR81 ファミリ DIV1 R2 ; #2 DIV1 R2 ; #30 DIV1 R2 ; #31 DIV1 R2 ; #32 ・・・ 除算結果は次のレジスタに格納されます。 • 乗除算レジスタ (MDL):符号なし 32 ビットの商 • 乗除算レジスタ (MDH):符号なし 32 ビットの剰余 符号なし除算の実行例を図 6.6-2 に示します。 図 6.6-2 符号なし除算の実行例 R2 0 1 2 3 MDH ×××× ×××× MDL F E D C 4 5 6 7 B A 9 8 R2 0 1 2 3 4 5 6 7 MDH 0 0 0 0 0 0 7 8 MDL 0 0 0 0 0 0 E 0 D1 D0 T D1 D0 T SCR ××0 SCR 実行前 0 0 0 実行後 SOFTUNEアセンブラでは, アセンブラ擬似機械命令として符号なし除算を行うDIVU 命令が用意されています。この DIVU 命令を上記の 33 個の命令の代わりに使用して , 符号なし除算を 1 命令で記述できます。DIVU 命令については「FR ファミリ SOFTUNE アセンブラマニュアル」を参照してください。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 105 第 6 章 命令概要 6.6 ステップ除算命令 106 FR81 ファミリ FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第7章 命令細則 この章では , FR81 ファミリ CPU の実行命令をア ルファベット順にリファレンス形式で説明します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 107 第 7 章 命令細則 FR81 ファミリ 命令細則の中の記号については「付録 A.1 記号の意味」を参照してください。それ ぞれの命令を次の項目に分けて説明します。 ● アセンブラ形式 アセンブラ言語による命令の記述形式を示します。 ● オペレーション 命令の動作を矢印 ( → ) による代入の形で示します。 ● フラグ変化 コンディションコードレジスタ (CCR) のフラグが命令の実行により変化するかどうか を示します。 ● 分類 命令の機能による分類と , 以下の命令区分を示します。 • 遅延スロット可:遅延スロットに配置可能な命令 • リードモディファイライト系命令 • FR80 ファミリ:FR80 ファミリ CPU 以降で追加された命令 • FR81 ファミリ:FR81 ファミリ CPU で追加された命令 • FR81 更新:FR81 ファミリ CPU で , 定義が変更された命令 ● 実行サイクル 命令の実行に必要なクロックサイクル数を示します。 ● 命令フォーマット 命令のフォーマットとビットパターンを示します。 ● 実行例 命令を実行したときの , 動作例を示します。 108 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.1 ADD (Add 4bit Immediate Data to Destination Register) FR81 ファミリ 7.1 ADD (Add 4bit Immediate Data to Destination Register) Ri のワードデータに , 4 ビット即値データの上位 28 ビットをゼロ拡張した数値 (0 ∼ 15) を加算し , 結果を Ri に格納します。 ● アセンブラ形式 ADD #i4, Ri ● オペレーション Ri + extu(i4) → Ri ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 0 1 0 0 i4 FUJITSU MICROELECTRONICS LIMITED Ri 109 第 7 章 命令細則 7.1 ADD (Add 4bit Immediate Data to Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 0100 0010 0011 ADD #2, R3 R3 9 9 9 9 9 9 9 7 R3 9 9 9 9 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 110 9 9 9 9 FUJITSU MICROELECTRONICS LIMITED 1 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.2 ADD (Add Word Data of Source Register to Destination Register) FR81 ファミリ 7.2 ADD (Add Word Data of Source Register to Destination Register) Ri のワードデータに Rj のワードデータを加算し , 結果を Ri に格納します。 ● アセンブラ形式 ADD Rj, Ri ● オペレーション Ri + Rj → Ri ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 0 1 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 111 第 7 章 命令細則 7.2 ADD (Add Word Data of Source Register to Destination Register) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1010 0110 0010 0011 ADD R2, R3 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 8 7 6 5 4 3 2 1 R3 9 9 9 9 9 9 9 9 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 112 FUJITSU MICROELECTRONICS LIMITED 1 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.3 ADD2 (Add 4bit Immediate Data to Destination Register) FR81 ファミリ 7.3 ADD2 (Add 4bit Immediate Data to Destination Register) Ri のワードデータに , 4 ビット即値データの上位 28 ビットをマイナス拡張した数値 (-16 ∼ -1) を加算し , 結果を Ri に格納します。この命令の C フラグの変化は SUB 命令と異なり , ADD 命令と同じになります。 ● アセンブラ形式 ADD2 #i4, Ri ● オペレーション Ri + extn(i4) → Ri ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 0 1 0 1 i4 FUJITSU MICROELECTRONICS LIMITED Ri 113 第 7 章 命令細則 7.3 ADD2 (Add 4bit Immediate Data to Destination Register) FR81 ファミリ ● 実行例 ADD2 #-2, R3 R3 9 9 9 9 ; 命令のビットパターン:1010 0101 1110 0011 9 9 9 9 R3 9 9 9 9 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 114 9 9 9 7 FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 CM71-00105-1 第 7 章 命令細則 7.4 ADDC (Add Word Data of Source Register and Carry Bit to Destination Register) FR81 ファミリ 7.4 ADDC (Add Word Data of Source Register and Carry Bit to Destination Register) Ri のワードデータに Rj のワードデータとキャリフラグ (C) を加算し , 結果を Ri に 格納します。 ● アセンブラ形式 ADDC Rj, Ri ● オペレーション Ri + Rj + C → Ri ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 0 1 1 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri 115 第 7 章 命令細則 7.4 ADDC (Add Word Data of Source Register and Carry Bit to Destination Register) ● 実行例 ADDC R2, R3 FR81 ファミリ ; 命令のビットパターン:1010 0111 0010 0011 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 8 7 6 5 4 3 2 0 R3 9 9 9 9 9 9 9 9 N Z V C CCR 0 0 0 1 N Z V C CCR 実行前 116 FUJITSU MICROELECTRONICS LIMITED 1 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.5 ADDN (Add Immediate Data to Destination Register) FR81 ファミリ 7.5 ADDN (Add Immediate Data to Destination Register) Ri のワードデータに , 4 ビット即値データの上位 28 ビットをゼロ拡張した数値 (0 ∼ 15) を加算し , 結果を Ri に格納します。フラグは変化しません。 ● アセンブラ形式 ADDN #i4, Ri ● オペレーション Ri + extu(i4) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 1 0 0 0 0 0 i4 Ri ● 実行例 ; 命令のビットパターン:1010 0000 0010 0011 ADDN #2, R3 R3 9 9 9 9 9 9 9 7 R3 9 9 9 9 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 9 9 9 9 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 117 第 7 章 命令細則 7.6 ADDN (Add Word Data of Source Register to Destination Register) 7.6 FR81 ファミリ ADDN (Add Word Data of Source Register to Destination Register) Ri のワードデータに Rj のワードデータを加算し , 結果を Ri に格納します。フラグ は変化しません。 ● アセンブラ形式 ADDN Rj, Ri ● オペレーション Ri + Rj → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 118 LSB 0 1 0 0 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.6 ADDN (Add Word Data of Source Register to Destination Register) FR81 ファミリ ● 実行例 ADDN R2, R3 ; 命令のビットパターン:1010 0010 0010 0011 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 8 7 6 5 4 3 2 1 R3 9 9 9 9 9 9 9 9 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 0 0 0 実行後 FUJITSU MICROELECTRONICS LIMITED 119 第 7 章 命令細則 7.7 ADDN2 (Add Immediate Data to Destination Register) 7.7 FR81 ファミリ ADDN2 (Add Immediate Data to Destination Register) Ri のワードデータに , 4 ビット即値データの上位 28 ビットをマイナス拡張した数値 (-16 ∼ -1) を加算し , 結果を Ri に格納します。フラグは変化しません。 ● アセンブラ形式 ADDN2 #i4, Ri ● オペレーション Ri + extn(i4) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 1 0 0 0 0 1 i4 Ri ● 実行例 ADDN2 #-2, R3 R3 9 9 9 9 ; 命令のビットパターン:1010 0001 1110 0011 9 9 9 9 R3 9 9 9 9 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 120 9 9 9 7 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.8 ADDSP (Add Stack Pointer and Immediate Data) FR81 ファミリ 7.8 ADDSP (Add Stack Pointer and Immediate Data) R15 のワードデータに , 8 ビット即値データを 4 倍して符号拡張した数値を加算し , 結果を R15 に格納します。s8 × 4 の値を s10 として指定します。 ● アセンブラ形式 ADDSP #s10 ● オペレーション R15 + exts(s8 × 4) → R15 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 1 0 0 0 1 1 s8 ● 実行例 ; 命令のビットパターン:1010 0011 1111 1111 ADDSP #-4 R15 8 0 0 0 0 0 0 0 R15 7 F F F 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED F F F C 実行後 121 第 7 章 命令細則 7.9 AND (And Word Data of Source Register to Data in Memory) 7.9 FR81 ファミリ AND (And Word Data of Source Register to Data in Memory) メモリの Ri 番地のワードデータと Rj のワードデータの論理積演算 (AND) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 AND Rj,@Ri ● オペレーション (Ri) & Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 122 LSB 0 0 0 0 1 0 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.9 AND (And Word Data of Source Register to Data in Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1000 0100 0010 0011 AND R2,@R3 R2 1 1 1 1 0 0 0 0 R2 1 1 1 1 0 0 0 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 1 0 1 0 1 0 1 0 メモリ 12345678 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 0 0 0 1234567C 1234567C CCR 1 0 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 123 第 7 章 命令細則 7.10 AND (And Word Data of Source Register to Destination Register) 7.10 FR81 ファミリ AND (And Word Data of Source Register to Destination Register) Ri のワードデータと Rj のワードデータの論理積演算 (AND) を行い , 結果を Ri に格 納します。 ● アセンブラ形式 AND Rj, Ri ● オペレーション Ri & Rj → Ri ● フラグ変化 N C Z C V C − − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 124 LSB 0 0 0 0 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.10 AND (And Word Data of Source Register to Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1000 0010 0010 0011 AND R2, R3 R2 1 1 1 1 0 0 0 0 R2 1 1 1 1 0 0 0 0 R3 1 0 1 0 1 0 1 0 R3 1 0 1 0 0 0 0 0 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 125 第 7 章 命令細則 7.11 ANDB (And Byte Data of Source Register to Data in Memory) 7.11 FR81 ファミリ ANDB (And Byte Data of Source Register to Data in Memory) メモリの Ri 番地のバイトデータと Rj のバイトデータの論理積演算 (AND) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 ANDB Rj,@Ri ● オペレーション (Ri) & Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 126 LSB 0 0 0 0 1 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.11 ANDB (And Byte Data of Source Register to Data in Memory) FR81 ファミリ ● 実行例 ANDB R2,@R3 ; 命令のビットパターン:1000 0110 0010 0011 R2 0 0 0 0 0 0 1 0 R2 0 0 0 0 0 0 1 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 メモリ 12345678 1 1 12345679 12345679 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 127 第 7 章 命令細則 7.12 ANDCCR (And Condition Code Register and Immediate Data) 7.12 FR81 ファミリ ANDCCR (And Condition Code Register and Immediate Data) コンディションコードレジスタ (CCR) のバイトデータと 8 ビット即値データとの論 理積演算 (AND) を行い , 結果を CCR に戻します。 ● アセンブラ形式 ANDCCR #u8 ● オペレーション ユーザモード: CCR & (u8 | 30H) → CCR 特権モード: CCR & u8 → CCR ユーザモードでは , スタックフラグ (S), 割込み許可フラグ (I) の書換えは無視します。 特権モードでのみ S フラグ , I フラグの変更が可能です。 ● フラグ変化 S C I C N C Z C V C C C S, I, N, Z, V, C: 演算結果に従い変化します。 ● 分類 その他の命令 , 遅延スロット可 , FR81 更新 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 0 0 0 1 1 u8 ● EIT 発生と検出 割込みを検出 (I フラグの値は命令実行後の値を使用 ) します。 128 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.12 ANDCCR (And Condition Code Register and Immediate Data) FR81 ファミリ ● 実行例 ANDCCR #0FEH ; 命令のビットパターン:1000 0011 1111 1110 S I N Z V C CCR 0 1 0 1 0 1 S I N Z V C CCR 実行前 CM71-00105-1 0 1 0 1 0 0 実行後 FUJITSU MICROELECTRONICS LIMITED 129 第 7 章 命令細則 7.13 ANDH (And Halfword Data of Source Register to Data in Memory) 7.13 FR81 ファミリ ANDH (And Halfword Data of Source Register to Data in Memory) メモリの Ri 番地のハーフワードデータと Rj のハーフワードデータの論理積演算 (AND) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 ANDH Rj,@Ri ● オペレーション (Ri) & Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB(bit15) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 130 LSB 0 0 0 0 1 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.13 ANDH (And Halfword Data of Source Register to Data in Memory) FR81 ファミリ ● 実行例 ANDH R2,@R3 ; 命令のビットパターン:1000 0101 0010 0011 R2 0 0 0 0 1 1 0 0 R2 0 0 0 0 1 1 0 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 メモリ 12345678 1 0 1 0 1234567A 1234567A N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 1 0 0 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 131 第 7 章 命令細則 7.14 ASR (Arithmetic shift to the Right Direction) 7.14 FR81 ファミリ ASR (Arithmetic shift to the Right Direction) Ri のワードデータを右方向に Rj ビット算術シフトし , 結果を Ri に格納します。シ フト量を示す Rj は下位 5 ビットのみ有効で , 0 ∼ 31 が指定可能です。 ● アセンブラ形式 ASR Rj, Ri ● オペレーション Ri >> Rj → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。シフト量がゼロのときはクリア されます。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 132 LSB 0 1 1 1 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.14 ASR (Arithmetic shift to the Right Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 1010 0010 0011 ASR R2, R3 R2 0 0 0 0 0 0 0 8 R2 0 0 0 0 0 0 0 8 R3 F F 0 F F F F F R3 F F F F 0 F F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 133 第 7 章 命令細則 7.15 ASR (Arithmetic shift to the Right Direction) 7.15 FR81 ファミリ ASR (Arithmetic shift to the Right Direction) Ri のワードデータを右方向に u4 ビット算術シフトし , 結果を Ri に格納します。 ● アセンブラ形式 ASR #u4, Ri ● オペレーション Ri >> u4 → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。シフト量がゼロのときはクリア されます。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 134 LSB 0 1 1 1 0 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.15 ASR (Arithmetic shift to the Right Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 1000 1000 0011 ASR #8, R3 R3 F F 0 F F F F F R3 F F F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 F F F FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 135 第 7 章 命令細則 7.16 ASR2 (Arithmetic shift to the Right Direction) 7.16 FR81 ファミリ ASR2 (Arithmetic shift to the Right Direction) Ri のワードデータを左方向に u4+16 ビット算術シフトし , 結果を Ri に格納します。 ● アセンブラ形式 ASR2 #u4, Ri ● オペレーション Ri >> {u4+16} → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 136 LSB 0 1 1 1 0 0 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.16 ASR2 (Arithmetic shift to the Right Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 1001 1000 0011 ASR2 #8, R3 R3 F 0 F F F F F F R3 F F F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 F F F 0 FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 137 第 7 章 命令細則 7.17 BANDH (And 4bit Immediate Data to Higher 4bit of Byte Data in Memory) 7.17 FR81 ファミリ BANDH (And 4bit Immediate Data to Higher 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの上位 4 ビットと , 4 ビットの即値データの論理積 演算を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 BANDH #u4,@Ri ● オペレーション (Ri) & {u4 << 4 + 0F H} → (Ri) [ 上位 4 ビットのみ操作 ] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ビット操作演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 138 LSB 0 0 0 0 0 0 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.17 BANDH (And 4bit Immediate Data to Higher 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 BANDH #0,@R3 R3 1 2 3 4 5 6 7 8 ; 命令のビットパターン:1000 0001 0000 0011 R3 1 2 3 4 メモリ 12345678 メモリ 12345678 1 1 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 1 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 139 第 7 章 命令細則 7.18 BANDL (And 4bit Immediate Data to Lower 4bit of Byte Data in Memory) 7.18 FR81 ファミリ BANDL (And 4bit Immediate Data to Lower 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの下位 4 ビットと , 4 ビットの即値データの論理積 演算を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 BANDL #u4,@Ri ● オペレーション (Ri) & {F0H+u4} → (Ri) [ 下位 4 ビットのみ操作 ] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ビット操作演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 140 LSB 0 0 0 0 0 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.18 BANDL (And 4bit Immediate Data to Lower 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 BANDL #0,@R3 R3 1 2 3 4 5 6 7 8 ; 命令のビットパターン:1000 0000 0000 0011 R3 1 2 3 4 メモリ 12345678 メモリ 12345678 1 1 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 1 0 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 141 第 7 章 命令細則 7.19 Bcc (Branch relative if Condition satisfied) 7.19 FR81 ファミリ Bcc (Branch relative if Condition satisfied) 遅延スロットのない分岐命令です。命令ごとに指定された条件が成立すると label9 で示されたアドレスへプログラムカウンタ (PC) 相対の分岐を行います。アドレス計 算の際に rel8 の値は 2 倍されて符号拡張されます。条件が成立しないときは分岐し ません。 ● アセンブラ形式 BRA label9 BV label9 BNO label9 BNV label9 BEQ label9 BLT label9 BNE label9 BGE label9 BC label9 BLE label9 BNC label9 BGT label9 BN label9 BLS label9 BP label9 BHI label9 ● オペレーション if ( 条件 ) then PC + 2 + exts(rel8 × 2) → PC 各命令の分岐条件を表 7.19-1 に示します。 表 7.19-1 分岐条件 ニーモニック BRA BNO BEQ BNE BC BNC BN BP |:論理和 (or) cc 条件 0000 常に成立 0001 常に非成立 0010 Z == 1 0011 Z == 0 0100 C == 1 0101 C == 0 0110 N == 1 0111 N == 0 ^:排他的論理和 (exor) cc ニーモニック 条件 BV 1000 V == 1 BNV 1001 V == 0 BLT 1010 (V ^ N) == 1 BGE 1011 (V ^ N) == 0 BLE 1100 ((V ^ N) | Z) == 1 BGT 1101 ((V ^ N) | Z) == 0 BLS 1110 (C | Z) == 1 BHI 1111 (C | Z) == 0 ==:比較演算 ( 一致で成立 ) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 142 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.19 Bcc (Branch relative if Condition satisfied) FR81 ファミリ ● 分類 遅延なし分岐命令 ● 実行サイクル数 分岐するとき :2 サイクル 分岐しないとき:1 サイクル ● 命令フォーマット MSB 1 LSB 1 1 0 cc rel8 ● 実行例 ; 命令のビットパターン:1110 1111 0010 1000 BHI label ・・・ ; BHI 命令のアドレス+ 50H label: PC F F 8 0 0 0 0 0 PC F F 8 0 N Z V C CCR 1 0 1 0 0 0 5 2 N Z V C CCR 1 0 1 0 Z or C = 0(条件成立) 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 143 第 7 章 命令細則 7.20 Bcc:D (Branch relative if Condition satisfied) 7.20 FR81 ファミリ Bcc:D (Branch relative if Condition satisfied) 遅延スロット付きの分岐命令です。命令ごとに指定された条件が成立すると , label9 で示されたアドレスへプログラムカウンタ (PC) 相対の分岐を行います。アドレス計 算の際に rel8 の値は 2 倍されて符号拡張されます。条件が成立しないときは分岐し ません。 ● アセンブラ形式 BRA:D label9 BV:D label9 BNO:D label9 BNV:D label9 BEQ:D label9 BLT:D label9 BNE:D label9 BGE:D label9 BC:D label9 BLE:D label9 BNC:D label9 BGT:D label9 BN:D label9 BLS:D label9 BP:D label9 BHI:D label9 ● オペレーション if ( 条件 ) then PC + 2 + exts(rel8 × 2) → PC 各命令の分岐条件を表 7.20-1 に示します。 表 7.20-1 分岐条件 ニーモニック BRA:D BNO:D BEQ:D BNE:D BC:D BNC:D BN:D BP:D |:論理和 (or) cc 条件 0000 常に成立 0001 常に非成立 0010 Z == 1 0011 Z == 0 0100 C == 1 0101 C == 0 0110 N == 1 0111 N == 0 ^:排他的論理和 (exor) cc ニーモニック 条件 BV:D 1000 V == 1 BNV:D 1001 V == 0 BLT:D 1010 (V ^ N) == 1 BGE:D 1011 (V ^ N) == 0 BLE:D 1100 ((V ^ N) | Z) == 1 BGT:D 1101 ((V ^ N) | Z) == 0 BLS:D 1110 (C | Z) == 1 BHI:D 1111 (C | Z) == 0 ==:比較演算 ( 一致で成立 ) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 144 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.20 Bcc:D (Branch relative if Condition satisfied) FR81 ファミリ ● 分類 遅延分岐命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 1 1 1 cc rel8 ● 実行例 BHI:D label ; 命令のビットパターン:1111 1111 0010 1000 LDI:8 ; 遅延スロットに置かれた命令 #255, R1 ・・・ ; BHI:D 命令のアドレス+ 50H label: R1 8 9 4 7 9 7 A F R1 0 0 0 0 0 0 F F PC F F 8 0 0 0 0 0 PC F F 8 0 0 0 5 2 N Z V C CCR 1 0 1 0 N Z V C CCR 1 0 1 0 Z or C = 0, 条件成立 実行前 実行後 分岐先の命令の実行前に , 遅延スロットに置かれた命令が実行されます。上記の R1 は遅延スロットに置かれた LDI:8 命令により変化しています。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 145 第 7 章 命令細則 7.21 BEORH (Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory) 7.21 FR81 ファミリ BEORH (Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの上位 4 ビットと , 4 ビットの即値データの排他的 論理和演算 (EXOR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 BEORH #u4,@Ri ● オペレーション (Ri) ^ {u4 << 4} → (Ri) [ 上位 4 ビットのみ操作 ] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ビット操作演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 146 LSB 0 0 1 1 0 0 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.21 BEORH (Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 BEORH #1,@R3; 命令のビットパターン:1001 1001 0001 0011 命令のビットパターン:1001 1001 0001 0011 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 メモリ 12345678 メモリ 12345678 0 0 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 1 0 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 147 第 7 章 命令細則 7.22 BEORL (Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory) 7.22 FR81 ファミリ BEORL (Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの下位 4 ビットと , 4 ビットの即値データの排他的 論理和演算 (EXOR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 BEORL #u4,@Ri ● オペレーション (Ri) ^ u4 → (Ri) [ 下位 4 ビットのみ操作 ] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ビット操作演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 148 LSB 0 0 1 1 0 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.22 BEORL (Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 BEORL #1,@R3 R3 1 2 3 4 5 6 7 8 ; 命令のビットパターン:1001 1000 0001 0011 R3 1 2 3 4 メモリ 12345678 メモリ 12345678 0 0 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 1 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 149 第 7 章 命令細則 7.23 BORH (Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory) 7.23 FR81 ファミリ BORH (Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの上位 4 ビットと , 4 ビットの即値データの論理和 演算 (OR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 BORH #u4,@Ri ● オペレーション (Ri) | {u4 << 4} → (Ri) [ 上位 4 ビットのみ操作 ] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ビット操作演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 150 LSB 0 0 1 0 0 0 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.23 BORH (Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 R3 BORH #1,@R3 ; 命令のビットパターン:1001 0001 0001 0011 1 2 3 4 R3 5 6 7 8 1 2 3 4 メモリ 12345678 メモリ 12345678 0 0 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 1 0 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 151 第 7 章 命令細則 7.24 BORL (Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory) 7.24 FR81 ファミリ BORL (Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの下位 4 ビットと , 4 ビットの即値データの論理和 演算 (OR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 BORL #u4,@Ri ● オペレーション (Ri) | u4 → (Ri) [ 下位 4 ビットのみ操作 ] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ビット操作演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 152 LSB 0 0 1 0 0 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.24 BORL (Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 BORL #1,@R3; 命令のビットパターン:1001 0000 0001 0011 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 メモリ 12345678 メモリ 12345678 0 0 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 1 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 153 第 7 章 命令細則 7.25 BTSTH (Test Higher 4bit of Byte Data in Memory) 7.25 FR81 ファミリ BTSTH (Test Higher 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの上位 4 ビットと , 4 ビットの即値データの論理積 演算 (AND) を行い , 結果をコンディションコードレジスタ (CCR) のフラグにセット します。 ● アセンブラ形式 BTSTH #u4,@Ri ● オペレーション (Ri) & {u4 << 4} [ 上位 4 ビットのみテスト ] ● フラグ変化 N C Z C V C − − N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 ビット操作演算命令 ● 実行サイクル数 2+a サイクル ● 命令フォーマット MSB 1 154 LSB 0 0 0 1 0 0 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.25 BTSTH (Test Higher 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 BTSTH #1,@R3 R3 1 2 3 4 5 6 7 8 ; 命令のビットパターン:1000 1001 0001 0011 R3 1 2 3 4 メモリ 12345678 メモリ 12345678 0 1 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 1 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 155 第 7 章 命令細則 7.26 BTSTL (Test Lower 4bit of Byte Data in Memory) 7.26 FR81 ファミリ BTSTL (Test Lower 4bit of Byte Data in Memory) メモリの Ri 番地のバイトデータの下位 4 ビットと , 4 ビットの即値データの論理積 演算 (AND) を行い , 結果をコンディションコードレジスタ (CCR) のフラグにセット します。 ● アセンブラ形式 BTSTL #u4,@Ri ● オペレーション (Ri) & u4 [ 下位 4 ビットのみテスト ] ● フラグ変化 N 0 Z C V C − − N: クリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 ビット操作演算命令 ● 実行サイクル数 2+a サイクル ● 命令フォーマット MSB 1 156 LSB 0 0 0 1 0 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.26 BTSTL (Test Lower 4bit of Byte Data in Memory) FR81 ファミリ ● 実行例 R3 BTSTL #1,@R3 ; 命令のビットパターン:1000 1000 0001 0011 1 2 3 4 R3 5 6 7 8 1 2 3 4 メモリ 12345678 メモリ 12345678 1 0 N Z V C 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 1 0 12345679 12345679 CCR 5 6 7 8 FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 157 第 7 章 命令細則 7.27 CALL (Call Subroutine) 7.27 FR81 ファミリ CALL (Call Subroutine) 遅延スロットのない分岐命令です。次の命令のアドレスをリターンポインタ (RP) に 格納した後に , label12 で指定されたアドレスへプログラムカウンタ (PC) 相対の分 岐を行います。アドレス計算の際に rel11 の値は 2 倍されて , 符号拡張されます。 ● アセンブラ形式 CALL label12 ● オペレーション PC + 2 → RP PC + 2 + exts(rel11 × 2) → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延なし分岐命令 ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB 1 158 LSB 1 0 1 0 rel11 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.27 CALL (Call Subroutine) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1101 0000 1001 0000 CALL label ・・・ ; CALL 命令のアドレス+ 122H label: PC F F 8 0 RP ×××× ×××× 0 0 0 0 PC F F 8 0 0 1 2 2 RP F F 8 0 0 0 0 4 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 159 第 7 章 命令細則 7.28 CALL (Call Subroutine) 7.28 FR81 ファミリ CALL (Call Subroutine) 遅延スロットのない分岐命令です。次の命令のアドレスをリターンポインタ (RP) に 格納した後に , Ri で指定されたアドレスへ分岐します。 ● アセンブラ形式 CALL @Ri ● オペレーション PC + 2 → RP Ri → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延なし分岐命令 ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 0 0 0 1 Ri ● 実行例 ; 命令のビットパターン:1001 0111 0001 0001 CALL @R1 R1 F F F F F 8 0 0 R1 F F F F F 8 0 0 PC 8 0 0 0 F F F E PC F F F F F 8 0 0 RP ×××× ×××× RP 8 0 0 1 0 0 0 0 実行前 160 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.29 CALL:D (Call Subroutine) FR81 ファミリ 7.29 CALL:D (Call Subroutine) 遅延スロット付きの分岐命令です。遅延スロットの次の命令のアドレスをリターン ポインタ (RP) に格納した後に , label12 で指定されたアドレスへプログラムカウン タ (PC) 相対の分岐を行います。アドレス計算の際に rel11 の値は 2 倍されて符号拡 張されます。 ● アセンブラ形式 CALL:D label12 ● オペレーション PC + 4 → RP PC + 2 + exts(rel11 × 2) → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延分岐命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 1 0 1 1 rel11 FUJITSU MICROELECTRONICS LIMITED 161 第 7 章 命令細則 7.29 CALL:D (Call Subroutine) FR81 ファミリ ● 実行例 CALL:D label ; 命令のビットパターン:1101 1000 1001 0000 LDI:8 #0, R2 ; 遅延スロットに置かれた命令 ・・・ ; CALL 命令のアドレス+ 122H label: R2 ×××× ×××× R2 0 0 0 0 0 0 0 0 PC F F 8 0 0 0 0 0 PC F F 8 0 0 1 2 2 RP ×××× ×××× RP F F 8 0 0 0 0 4 CALL命令実行前 分岐後 分岐先の命令の実行前に , 遅延スロットに置かれた命令が実行されます。上記の R2 は遅延スロットに置かれた LDI:8 命令により変化します。 162 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.30 CALL:D (Call Subroutine) FR81 ファミリ 7.30 CALL:D (Call Subroutine) 遅延スロット付きの分岐命令です。遅延スロットの次の命令のアドレスをリターン ポインタ (RP) に格納したあとに , Ri で指定されたアドレスへ分岐します。 ● アセンブラ形式 CALL:D @Ri ● オペレーション PC + 4 → RP Ri → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延分岐命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 1 1 1 0 0 0 1 FUJITSU MICROELECTRONICS LIMITED Ri 163 第 7 章 命令細則 7.30 CALL:D (Call Subroutine) FR81 ファミリ ● 実行例 CALL:D @R1 ; 命令のビットパターン:1001 1111 0001 0001 LDI:8 ; 遅延スロットに置かれた命令 #1, R1 R1 F F F F F 8 0 0 R1 0 0 0 0 0 0 0 1 PC 8 0 0 0 F F F E PC F F F F F 8 0 0 RP ×××× ×××× RP 8 0 0 1 0 0 0 2 CALL命令実行前 分岐後 分岐先の命令の実行前に , 遅延スロットに置かれた命令が実行されます。上記の R1 は遅延スロットに置かれた LDI:8 命令により変化します。 164 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.31 CMP (Compare Immediate Data and Destination Register) FR81 ファミリ 7.31 CMP (Compare Immediate Data and Destination Register) Ri のワードデータから , 4 ビットの即値データの上位 28 ビットをゼロ拡張した数値 (0 ∼ 15) を減算し , 結果をコンディションコードレジスタ (CCR) のフラグにセット します。 ● アセンブラ形式 CMP #i4, Ri ● オペレーション Ri - extu(i4) ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。 ● 分類 比較演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 1 0 0 0 i4 FUJITSU MICROELECTRONICS LIMITED Ri 165 第 7 章 命令細則 7.31 CMP (Compare Immediate Data and Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 1000 0011 0011 CMP #3, R3 R3 0 0 0 0 0 0 0 3 R3 0 0 0 0 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 166 0 0 0 3 FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.32 CMP (Compare Word Data in Source Register and Destination Register) FR81 ファミリ 7.32 CMP (Compare Word Data in Source Register and Destination Register) Ri のワードデータから Rj のワードデータを減算し , 結果をコンディションコードレ ジスタ (CCR) のフラグにセットします。 ● アセンブラ形式 CMP Rj, Ri ● オペレーション Ri - Rj ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。 ● 分類 比較演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 1 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 167 第 7 章 命令細則 7.32 CMP (Compare Word Data in Source Register and Destination Register) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1010 1010 0010 0011 CMP R2, R3 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 168 FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.33 CMP2 (Compare Immediate Data and Destination Register) FR81 ファミリ 7.33 CMP2 (Compare Immediate Data and Destination Register) Ri のワードデータから , 4 ビット即値データの上位 28 ビットをマイナス拡張した数 値 (-16 ∼ -1) を減算し , 結果をコンディションコードレジスタ (CCR) のフラグに セットします。 ● アセンブラ形式 CMP2 #i4, Ri ● オペレーション Ri - extn(i4) ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。 ● 分類 比較演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 0 1 0 0 1 i4 FUJITSU MICROELECTRONICS LIMITED Ri 169 第 7 章 命令細則 7.33 CMP2 (Compare Immediate Data and Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 1001 1101 0011 CMP2 #-3, R3 R3 F F F F F F F D R3 F F F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 170 F F F D FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.34 DIV0S (Initial Setting Up for Signed Division) FR81 ファミリ 7.34 DIV0S (Initial Setting Up for Signed Division) ステップ除算命令です。乗除算レジスタ (MDL) を被除数 , Ri を除数として , 商を MDL, 剰余を乗除算レジスタ (MDH) に格納する符号付き除算を実現するための命令 です。 ● アセンブラ形式 DIV0S Ri ● オペレーション MDL[31] → D0 MDL[31] ^ Ri[31] → D1 exts(MDL) → MDH, MDL MDL のワードデータを 64 ビットに符号拡張し , 上位 1 ワードを MDH に , 下位 1 ワー ドを MDL に格納します。MDL, Ri の符号ビットに応じてシステムコンディションコー ドレジスタ (SCR) 中の D0, D1 フラグをセットします。 ● フラグ変化 N Z V C − − − − D1 C D0 C N, Z, V, C: フラグは変化しません。 D1: 除数と被除数の符号が異なるときセット , 等しいときクリアします。 D0: 被除数が負のときセット , 正のときクリアします。 ● 分類 乗除算命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 1 1 1 0 1 0 0 FUJITSU MICROELECTRONICS LIMITED Ri 171 第 7 章 命令細則 7.34 DIV0S (Initial Setting Up for Signed Division) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 0111 0100 0010 DIV0S R2 R2 0 F F F F F F F R2 0 F F F F F F F MDH 0 0 0 0 0 0 0 0 MDH F F F F F F F F MDL F F F F F F F 0 MDL F F F F F F F 0 D1 D0 T SCR ××0 D1 D0 T SCR 実行前 172 FUJITSU MICROELECTRONICS LIMITED 1 1 0 実行後 CM71-00105-1 第 7 章 命令細則 7.35 DIV0U (Initial Setting Up for Unsigned Division) FR81 ファミリ 7.35 DIV0U (Initial Setting Up for Unsigned Division) ステップ除算命令です。乗除算レジスタ (MDL) を被除数 , Ri を除数として , 商を MDL, 剰余を乗除算レジスタ (MDH) に格納する符号なし除算を実現するための命令 です。 ● アセンブラ形式 DIV0U Ri ● オペレーション 0 → D0 0 → D1 0 → MDH MDH とシステムコンディションコードレジスタ (SCR) 中の D0, D1 フラグを 0 にクリ アします。 ● フラグ変化 N Z V C − − − − D1 0 D0 0 N, Z, V, C: フラグは変化しません。 D1,D0: クリアします。 ● 分類 乗除算命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 1 1 1 0 1 0 1 FUJITSU MICROELECTRONICS LIMITED Ri 173 第 7 章 命令細則 7.35 DIV0U (Initial Setting Up for Unsigned Division) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 0111 0101 0010 DIV0U R2 R2 0 0 F F F F F F R2 0 0 F F F F F F MDH 0 0 0 0 0 0 0 0 MDH 0 0 0 0 0 0 0 0 MDL 0 F F F F F F 0 MDL 0 F F F F F F 0 D1 D0 T SCR ××0 D1 D0 T SCR 実行前 174 FUJITSU MICROELECTRONICS LIMITED 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.36 DIV1 (Main Process of Division) FR81 ファミリ 7.36 DIV1 (Main Process of Division) ステップ除算命令です。符号なし除算を実現するための命令です。 ● アセンブラ形式 DIV1 Ri ● オペレーション {MDH,MDL} <<= 1 /* 1 bit left shift */ if (D1==1) { MDH + Ri → temp } else{ MDH - Ri → temp } if ((D0 ^ D1 ^ C) == 0) { temp → MDH 1 → MDL[0] } ● フラグ変化 N − Z C V − C C N, V: 変化しません。 Z: ステップ除算の演算結果がゼロならばセット , それ以外ならクリアされます。除算 結果の剰余に応じて設定されます。商に応じて設定されるのではありません。 C: ステップ除算の演算の結果, キャリが発生したときセット, それ以外はクリアされ ます。 ● 分類 乗除算命令 ● 実行サイクル数 1 サイクル CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 175 第 7 章 命令細則 7.36 DIV1 (Main Process of Division) FR81 ファミリ ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 0 1 1 0 Ri ● 実行例 ; 命令のビットパターン:1001 0111 0110 0010 DIV1 R2 R2 0 0 F F F F F F R2 0 0 F F F F F F MDH 0 0 F F F F F F MDH 0 1 0 0 0 0 0 0 MDL 0 0 0 0 0 0 0 0 MDL 0 0 0 0 0 0 0 1 D1 D0 T SCR 0 0 0 D1 D0 T SCR N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 176 0 0 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.37 DIV2 (Correction When Remain is zero) FR81 ファミリ 7.37 DIV2 (Correction When Remain is zero) ステップ除算命令です。符号付き除算を実現するための命令です。 ● アセンブラ形式 DIV2 Ri ● オペレーション if (D1==1) { MDH + Ri → temp } else { MDH - Ri → temp } if (Z==1) { 0 → MDH } ● フラグ変化 N Z C − V C C − N, V: 変化しません。 Z: ステップ除算の演算結果がゼロならばセット , それ以外ならクリアされます。除算 結果の剰余に応じて設定されます。商に応じて設定されるのではありません。 C: ステップ除算の演算の結果, キャリまたはボローが発生したときセット, それ以外 はクリアされます。 ● 分類 乗除算命令 ● 実行サイクル数 c サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 1 1 1 0 1 1 1 FUJITSU MICROELECTRONICS LIMITED Ri 177 第 7 章 命令細則 7.37 DIV2 (Correction When Remain is zero) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 0111 0111 0010 DIV2 R2 R2 0 0 F F F F F F R2 0 0 F F F F F F MDH 0 0 F F F F F F MDH 0 0 0 0 0 0 0 0 MDL 0 0 0 0 0 0 0 F MDL 0 0 0 0 0 0 0 F D1 D0 T SCR 0 0 0 D1 D0 T SCR N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 178 0 0 0 FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.38 DIV3 (Correction When Remain is zero) FR81 ファミリ 7.38 DIV3 (Correction When Remain is zero) ステップ除算命令です。符号付き除算を実現するための命令です。 ● アセンブラ形式 DIV3 ● オペレーション if (Z==1) { MDL + 1 → MDL } ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 乗除算命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 1 1 1 0 1 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 179 第 7 章 命令細則 7.38 DIV3 (Correction When Remain is zero) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 1111 0110 0000 DIV3 R2 0 0 F F F F F F R2 0 0 F F F F F F MDH 0 0 0 0 0 0 0 0 MDH 0 0 0 0 0 0 0 0 MDL 0 0 0 0 0 0 0 F MDL 0 0 0 0 0 0 1 0 D1 D0 T SCR 0 0 0 D1 D0 T SCR N Z V C CCR 0 1 0 0 N Z V C CCR 実行前 180 0 0 0 FUJITSU MICROELECTRONICS LIMITED 0 1 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.39 DIV4S (Correction Answer for Signed Division) FR81 ファミリ 7.39 DIV4S (Correction Answer for Signed Division) ステップ除算命令です。符号付き除算を実現するための命令です。 ● アセンブラ形式 DIV4S ● オペレーション if (D1==1) { 0 - MDL → MDL } ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 乗除算命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 1 1 1 0 1 1 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 181 第 7 章 命令細則 7.39 DIV4S (Correction Answer for Signed Division) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 1111 0111 0000 DIV4S R2 0 0 F F F F F F R2 0 0 F F F F F F MDH 0 0 0 0 0 0 0 0 MDH 0 0 0 0 0 0 0 0 MDL 0 0 0 0 0 0 0 F MDL F F F F F F F 1 D1 D0 T SCR 1 1 0 D1 D0 T SCR N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 182 1 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.40 DMOV (Move Word Data from Direct Address to Register) FR81 ファミリ 7.40 DMOV (Move Word Data from Direct Address to Register) dir8 の値を 4 倍したダイレクトアドレスに置かれたワードデータを R13 に転送しま す。dir8 × 4 の値を dir10 として指定します。 ● アセンブラ形式 DMOV @dir10, R13 ● オペレーション (dir8 × 4) → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 0 0 0 FUJITSU MICROELECTRONICS LIMITED dir8 183 第 7 章 命令細則 7.40 DMOV (Move Word Data from Direct Address to Register) FR81 ファミリ ● 実行例 DMOV @88H, R13 R13 ×××× ×××× ; 命令のビットパターン :0000 1000 0010 0010 R13 0 1 2 3 メモリ メモリ 84H ×××× ×××× 84H ×××× ×××× 88H 0 1 2 3 4 5 6 7 88H 0 1 2 3 8CH ×××× ×××× 8CH ×××× ×××× 実行前 184 4 5 6 7 FUJITSU MICROELECTRONICS LIMITED 4 5 6 7 実行後 CM71-00105-1 第 7 章 命令細則 7.41 DMOV (Move Word Data from Register to Direct Address) FR81 ファミリ 7.41 DMOV (Move Word Data from Register to Direct Address) R13 のワードデータを , dir8 の値を 4 倍したダイレクトアドレスに転送します。 dir8 × 4 の値を dir10 として指定します。 ● アセンブラ形式 DMOV R13,@dir10 ● オペレーション R13 → (dir8 × 4) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 0 0 0 FUJITSU MICROELECTRONICS LIMITED dir8 185 第 7 章 命令細則 7.41 DMOV (Move Word Data from Register to Direct Address) FR81 ファミリ ● 実行例 DMOV R13,@54H R13 8 9 A B C D E F ; 命令のビットパターン:0001 1000 0001 0101 R13 8 9 A B メモリ メモリ 50H ×××× ×××× 50H ×××× ×××× 54H ×××× ×××× 54H 8 9 A B 58H ×××× ×××× 58H ×××× ×××× 実行前 186 C D E F FUJITSU MICROELECTRONICS LIMITED C D E F 実行後 CM71-00105-1 第 7 章 命令細則 7.42 DMOV (Move Word Data from Direct Address to Post Increment Register Indirect Address) FR81 ファミリ 7.42 DMOV (Move Word Data from Direct Address to Post Increment Register Indirect Address) dir8 の値を 4 倍したダイレクトアドレスに置かれたワードデータを , R13 の示すア ドレスへ転送します。データ転送の後 R13 に 4 を加算します。dir8 × 4 の値を dir10 として指定します。 ● アセンブラ形式 DMOV @dir10,@R13+ ● オペレーション (dir8 × 4) → (R13) R13 + 4 → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 1 0 0 FUJITSU MICROELECTRONICS LIMITED dir8 187 第 7 章 命令細則 7.42 DMOV (Move Word Data from Direct Address to Post Increment Register Indirect Address) ● 実行例 DMOV @88H,@R13+ R13 F F F F 1 2 4 8 FR81 ファミリ ; 命令のビットパターン:0000 1100 0010 0010 R13 メモリ 00000088 1 4 1 4 FFFF1248 FFFF124C 1 2 4 C メモリ 00000088 1 4 1 4 2 1 3 5 ×××× ×××× FFFF1248 1 4 1 4 2 1 3 5 ×××× ×××× FFFF124C ×××× ×××× 2 1 3 5 実行前 188 F F F F FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.43 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) FR81 ファミリ 7.43 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) R13 の示すアドレスに置かれたワードデータを , dir8 の値を 4 倍したダイレクトア ドレスに転送します。データ転送の後 R13 に 4 を加算します。dir8 × 4 の値を dir10 として指定します。 ● アセンブラ形式 DMOV @R13+,@dir10 ● オペレーション (R13) → (dir8 × 4) R13 + 4 → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 1 0 0 FUJITSU MICROELECTRONICS LIMITED dir8 189 第 7 章 命令細則 7.43 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) ● 実行例 DMOV @R13+,@54H R13 F F F F 1 2 4 8 FR81 ファミリ ; 命令のビットパターン:0001 1100 0001 0101 R13 メモリ 1 2 4 C メモリ 00000054 ×××× ×××× 00000054 8 9 4 7 9 1 A F FFFF1248 8 9 4 7 FFFF1248 8 9 4 7 9 1 A F FFFF124C ×××× ×××× FFFF124C ×××× ×××× 9 1 A F 実行前 190 F F F F FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.44 DMOV (Move Word Data from Direct Address to Pre Decrement Register Indirect Address) FR81 ファミリ 7.44 DMOV (Move Word Data from Direct Address to Pre Decrement Register Indirect Address) R15 から 4 を減算した後に , dir8 の値を 4 倍したダイレクトアドレスに置かれた ワードデータを R15 の示すアドレスへ転送します。dir8 × 4 の値を dir10 として指 定します。 ● アセンブラ形式 DMOV @dir10,@-R15 ● オペレーション R15 - 4 → R15 (dir8 × 4) → (R15) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 0 1 1 FUJITSU MICROELECTRONICS LIMITED dir8 191 第 7 章 命令細則 7.44 DMOV (Move Word Data from Direct Address to Pre Decrement Register Indirect Address) ● 実行例 DMOV @2CH,@-R15 R15 7 F F F F F 8 8 FR81 ファミリ ; 命令のビットパターン:0000 1011 0000 1011 R15 メモリ 0000002C 8 2 A 2 7FFFFF84 7FFFFF88 F F 8 4 メモリ 0000002C 8 2 A 2 8 2 A 9 ×××× ×××× 7FFFFF84 8 2 A 2 8 2 A 9 ×××× ×××× 7FFFFF88 ×××× ×××× 8 2 A 9 実行前 192 7 F F F FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.45 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) FR81 ファミリ 7.45 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) R15 の示すアドレスに置かれたワードデータを , dir8 値を 4 倍したダイレクトアド レスに転送します。データ転送の後 R15 に 4 を加算します。dir8 × 4 の値を dir10 として指定します。 ● アセンブラ形式 DMOV @R15+,@dir10 ● オペレーション (R15) → (dir8 × 4) R15 + 4 → R15 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 0 1 1 FUJITSU MICROELECTRONICS LIMITED dir8 193 第 7 章 命令細則 7.45 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) ● 実行例 DMOV @R15+,@38H R15 7 F F E E E 8 0 FR81 ファミリ ; 命令のビットパターン:0001 1011 0000 1110 R15 メモリ E E 8 4 メモリ 00000038 ×××× ×××× 00000038 8 3 4 3 8 3 4 A 7FFEEE80 8 3 4 3 7FFEEE80 8 3 4 3 8 3 4 A 7FFEEE84 ×××× ×××× 7FFEEE84 ×××× ×××× 8 3 4 A 実行前 194 7 F F E FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.46 DMOVB (Move Byte Data from Direct Address to Register) FR81 ファミリ 7.46 DMOVB (Move Byte Data from Direct Address to Register) dir8 で示されるダイレクトアドレスに置かれたバイトデータを R13 に転送します。 データの上位 24 ビットはゼロに拡張されます。 ● アセンブラ形式 DMOVB @dir8, R13 ● オペレーション (dir8) → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 0 1 0 FUJITSU MICROELECTRONICS LIMITED dir8 195 第 7 章 命令細則 7.46 DMOVB (Move Byte Data from Direct Address to Register) FR81 ファミリ ● 実行例 DMOVB @91H, R13 R13 ×××× ×××× ; 命令のビットパターン:0000 1010 1001 0001 R13 0 0 0 0 メモリ メモリ 90 ×× 90 ×× 91 3 2 91 3 2 92 ×× 92 ×× 実行前 196 0 0 3 2 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.47 DMOVB (Move Byte Data from Register to Direct Address) FR81 ファミリ 7.47 DMOVB (Move Byte Data from Register to Direct Address) R13 のバイトデータを dir8 で示されるダイレクトアドレスに転送します。 ● アセンブラ形式 DMOVB R13,@dir8 ● オペレーション R13 → (dir8) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 0 1 0 FUJITSU MICROELECTRONICS LIMITED dir8 197 第 7 章 命令細則 7.47 DMOVB (Move Byte Data from Register to Direct Address) FR81 ファミリ ● 実行例 DMOVB R13,@53H R13 F F F F F F F E ; 命令のビットパターン:0001 1010 0101 0011 R13 F F F F メモリ メモリ 52 ×× 52 ×× 53 ×× 53 F E 54 ×× 54 ×× 実行前 198 F F F E FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.48 DMOVB (Move Byte Data from Direct Address to Post Increment Register Indirect Address) FR81 ファミリ 7.48 DMOVB (Move Byte Data from Direct Address to Post Increment Register Indirect Address) dir8 で示されるダイレクトアドレスに置かれたバイトデータを R13 の示すアドレス へ転送します。データ転送のあと R13 に 1 を加算します。 ● アセンブラ形式 DMOVB @dir8,@R13+ ● オペレーション (dir8) → (R13) R13 + 1 → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 1 1 0 FUJITSU MICROELECTRONICS LIMITED dir8 199 第 7 章 命令細則 7.48 DMOVB (Move Byte Data from Direct Address to Post Increment Register Indirect Address) ● 実行例 DMOVB @71H,@R13+ R13 8 8 0 0 1 2 3 4 FR81 ファミリ ; 命令のビットパターン:0000 1110 0111 0001 R13 8 8 0 0 メモリ メモリ 00000071 9 9 00000071 9 9 88001234 ×× 88001234 9 9 88001235 ×× 88001235 ×× 実行前 200 1 2 3 5 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.49 DMOVB (Move Byte Data from Post Increment Register Indirect Address to Direct Address) FR81 ファミリ 7.49 DMOVB (Move Byte Data from Post Increment Register Indirect Address to Direct Address) R13 の示すアドレスに置かれたバイトデータを dir8 で示されるダイレクトアドレス へ転送します。データ転送のあと R13 に 1 を加算します。 ● アセンブラ形式 DMOVB @R13+,@dir8 ● オペレーション (R13) → (dir8) R13 + 1 → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 1 1 0 FUJITSU MICROELECTRONICS LIMITED dir8 201 第 7 章 命令細則 7.49 DMOVB (Move Byte Data from Post Increment Register Indirect Address to Direct Address) ● 実行例 DMOVB @R13+,@57H R13 F F 8 0 1 2 2 0 FR81 ファミリ ; 命令のビットパターン:0001 1110 0101 0111 R13 F F 8 0 メモリ メモリ 00000057 ×× 00000057 5 5 FF801220 5 5 FF801220 5 5 FF801221 ×× FF801221 ×× 実行前 202 1 2 2 1 実行後 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.50 DMOVH (Move Halfword Data from Direct Address to Register) FR81 ファミリ 7.50 DMOVH (Move Halfword Data from Direct Address to Register) dir8 の値を 2 倍したダイレクトアドレスに置かれたハーフワードデータを R13 に転 送します。データの上位 16 ビットはゼロに拡張されます。dir8 × 2 の値を dir9 と して指定します。 ● アセンブラ形式 DMOVH @dir9, R13 ● オペレーション (dir8 × 2) → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 0 0 1 FUJITSU MICROELECTRONICS LIMITED dir8 203 第 7 章 命令細則 7.50 DMOVH (Move Halfword Data from Direct Address to Register) ● 実行例 DMOVH @88H, R13 R13 ×××× ×××× FR81 ファミリ ; 命令のビットパターン:0000 1001 0100 0100 R13 0 0 0 0 メモリ メモリ 86 ×××× 86 ×××× 88 B 2 B 6 88 B 2 B 6 8A ×××× 8A ×××× 実行前 204 B 2 B 6 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.51 DMOVH (Move Halfword Data from Register to Direct Address) FR81 ファミリ 7.51 DMOVH (Move Halfword Data from Register to Direct Address) R13 のハーフワードデータを , dir8 の値を 2 倍したダイレクトアドレスに転送しま す。dir8 × 2 の値を dir9 として指定します。 ● アセンブラ形式 DMOVH R13,@dir9 ● オペレーション R13 → (dir8 × 2) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 0 0 1 FUJITSU MICROELECTRONICS LIMITED dir8 205 第 7 章 命令細則 7.51 DMOVH (Move Halfword Data from Register to Direct Address) ● 実行例 DMOVH R13,@52H R13 F F F F A E 8 6 FR81 ファミリ ; 命令のビットパターン:0001 1001 0010 1001 R13 F F F F メモリ メモリ 50 ×××× 50 ×××× 52 ×××× 52 A E 8 6 54 ×××× 54 ×××× 実行前 206 A E 8 6 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.52 DMOVH (Move Halfword Data from Direct Address to Post Increment Register Indirect Address) FR81 ファミリ 7.52 DMOVH (Move Halfword Data from Direct Address to Post Increment Register Indirect Address) dir8 の値を 2 倍したダイレクトアドレスに置かれたハーフワードデータを R13 の示 すアドレスへ転送します。データ転送のあと R13 に 2 を加算します。dir8 × 2 の値 を dir9 として指定します。 ● アセンブラ形式 DMOVH @dir9,@R13+ ● オペレーション (dir8 × 2) → (R13) R13 + 2 → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 1 0 1 FUJITSU MICROELECTRONICS LIMITED dir8 207 第 7 章 命令細則 7.52 DMOVH (Move Halfword Data from Direct Address to Post Increment Register Indirect Address) ● 実行例 DMOVH @88H,@R13+ R13 F F 0 0 0 0 5 2 FR81 ファミリ ; 命令のビットパターン:0000 1101 0100 0100 R13 F F 0 0 メモリ メモリ 00000088 1 3 7 4 00000088 1 3 7 4 FF000052 ×××× FF000052 1 3 7 4 FF000054 ×××× FF000054 ×××× 実行前 208 0 0 5 4 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.53 DMOVH (Move Halfword Data from Post Increment Register Indirect Address to Direct Address) FR81 ファミリ 7.53 DMOVH (Move Halfword Data from Post Increment Register Indirect Address to Direct Address) R13 の示すアドレスに置かれたハーフワードデータを , dir8 の値を 2 倍したダイレ クトアドレスに転送します。データ転送のあと R13 に 2 を加算します。dir8 × 2 の 値を dir9 として指定します。 ● アセンブラ形式 DMOVH @R13+,@dir9 ● オペレーション (R13) → (dir8 × 2) R13 + 2 → R13 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 ダイレクトアドレス指定命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 1 1 0 1 FUJITSU MICROELECTRONICS LIMITED dir8 209 第 7 章 命令細則 7.53 DMOVH (Move Halfword Data from Post Increment Register Indirect Address to Direct Address) ● 実行例 DMOVH @R13+,@52H R13 F F 8 0 1 2 2 0 FR81 ファミリ ; 命令のビットパターン:0001 1101 0010 1001 R13 F F 8 0 メモリ メモリ 00000052 ×××× 00000052 8 9 3 3 FF801220 8 9 3 3 FF801220 8 9 3 3 FF801222 ×××× FF801222 ×××× 実行前 210 1 2 2 2 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.54 ENTER (Enter Function) FR81 ファミリ 7.54 ENTER (Enter Function) 高級言語用のスタックフレーム生成処理を行います。u8 は符号なしで計算します。 u8 × 4 の値を u10 として指定します。 ● アセンブラ形式 ENTER #u10 ● オペレーション R14 → (R15-4) R15 - 4 → R14 R15 - extu(u8 × 4) → R15 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 ● 実行サイクル数 1+a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 1 1 1 1 FUJITSU MICROELECTRONICS LIMITED u8 211 第 7 章 命令細則 7.54 ENTER (Enter Function) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0000 1111 0000 0011 ENTER #0CH R14 8 0 0 0 0 0 0 0 R14 7 F F F F F F 4 R15 7 F F F F F F 8 R15 7 F F F F F E C メモリ メモリ 7FFFFFEC ×××× ×××× 7FFFFFEC ×××× ×××× 7FFFFFF0 ×××× ×××× 7FFFFFF0 ×××× ×××× 7FFFFFF4 ×××× ×××× 7FFFFFF4 8 0 0 0 7FFFFFF8 ×××× ×××× 7FFFFFF8 ×××× ×××× 7FFFFFFC ×××× ×××× 7FFFFFFC ×××× ×××× 80000000 ×××× ×××× 80000000 ×××× ×××× 実行前 212 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.55 EOR (Exclusive Or Word Data of Source Register to Data in Memory) FR81 ファミリ 7.55 EOR (Exclusive Or Word Data of Source Register to Data in Memory) メモリの Ri 番地のワードデータと Rj のワードデータの排他的論理和演算 (EXOR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 EOR Rj,@Ri ● オペレーション (Ri) ^ Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 CM71-00105-1 0 LSB 0 1 1 1 0 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 213 第 7 章 命令細則 7.55 EOR (Exclusive Or Word Data of Source Register to Data in Memory) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1001 1100 0010 0011 EOR R2,@R3 R2 1 1 1 1 0 0 0 0 R2 1 1 1 1 0 0 0 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 1 0 1 0 1 0 1 0 メモリ 12345678 N Z V C 0 0 0 0 N Z V C CCR 実行前 214 1 0 1 0 1234567C 1234567C CCR 0 1 0 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.56 EOR (Exclusive Or Word Data of Source Register to Destination Register) FR81 ファミリ 7.56 EOR (Exclusive Or Word Data of Source Register to Destination Register) Ri のワードデータと Rj のワードデータの排他的論理和演算 (EXOR) を行い , 結果を Ri に格納します。 ● アセンブラ形式 EOR Rj, Ri ● オペレーション Ri ^ Rj → Ri ● フラグ変化 N C Z C V C − − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 215 第 7 章 命令細則 7.56 EOR (Exclusive Or Word Data of Source Register to Destination Register) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1001 1010 0010 0011 EOR R2, R3 R2 1 1 1 1 0 0 0 0 R2 1 1 1 1 0 0 0 0 R3 1 0 1 0 1 0 1 0 R3 0 1 0 1 1 0 1 0 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 216 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.57 EORB (Exclusive Or Byte Data of Source Register to Data in Memory) FR81 ファミリ 7.57 EORB (Exclusive Or Byte Data of Source Register to Data in Memory) メモリの Ri 番地のバイトデータと Rj のバイトデータの排他的論理和演算 (EXOR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 EORB Rj,@Ri ● オペレーション (Ri) ^ Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 1 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 217 第 7 章 命令細則 7.57 EORB (Exclusive Or Byte Data of Source Register to Data in Memory) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1001 1110 0010 0011 EORB R2,@R3 R2 0 0 0 0 0 0 1 1 R2 0 0 0 0 0 0 1 1 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 メモリ 12345678 1 0 12345679 12345679 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 218 0 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.58 EORH (Exclusive Or Halfword Data of Source Register to Data in Memory) FR81 ファミリ 7.58 EORH (Exclusive Or Halfword Data of Source Register to Data in Memory) メモリの Ri 番地のハーフワードデータと Rj のハーフワードデータの排他的論理和 演算 (EXOR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 EORH Rj,@Ri ● オペレーション (Ri) ^ Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB(bit15) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 1 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri 219 第 7 章 命令細則 7.58 EORH (Exclusive Or Halfword Data of Source Register to Data in Memory) ● 実行例 EORH R2,@R3 FR81 ファミリ ; 命令のビットパターン:1001 1101 0010 0011 R2 0 0 0 0 1 1 0 0 R2 0 0 0 0 1 1 0 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 メモリ 12345678 1 0 1 0 1234567A 1234567A N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 220 0 1 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.59 EXTSB (Sign Extend from Byte Data to Word Data) FR81 ファミリ 7.59 EXTSB (Sign Extend from Byte Data to Word Data) Ri のバイトデータを符号付 2 進数としてワードデータに拡張します。 ● アセンブラ形式 EXTSB Ri ● オペレーション exts(Ri[7:0]) → Ri [バイト → ワード] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 1 0 0 0 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1000 0001 EXTSB R1 R1 0 0 0 0 0 0 A B R1 F F F F 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED F F A B 実行後 221 第 7 章 命令細則 7.60 EXTSH (Sign Extend from Byte Data to Word Data) 7.60 FR81 ファミリ EXTSH (Sign Extend from Byte Data to Word Data) Ri のハーフワードデータを符号付 2 進数としてワードデータに拡張します。 ● アセンブラ形式 EXTSH Ri ● オペレーション exts(Ri[15:0]) → Ri [ハーフワード → ワード] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 1 0 1 0 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1010 0001 EXTSH R1 R1 0 0 0 0 A B C D R1 F F F F 実行前 222 FUJITSU MICROELECTRONICS LIMITED A B C D 実行後 CM71-00105-1 第 7 章 命令細則 7.61 EXTUB (Unsign Extend from Byte Data to Word Data) FR81 ファミリ 7.61 EXTUB (Unsign Extend from Byte Data to Word Data) Ri のバイトデータを符号なし 2 進数としてワードデータに拡張します。 ● アセンブラ形式 EXTUB Ri ● オペレーション extu(Ri[7:0]) → Ri [バイト → ワード] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 1 0 0 1 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1001 0001 EXTUB R1 R1 F F F F F F F F R1 0 0 0 0 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 0 0 F F 実行後 223 第 7 章 命令細則 7.62 EXTUH (Unsign Extend from Byte Data to Word Data) 7.62 FR81 ファミリ EXTUH (Unsign Extend from Byte Data to Word Data) Ri のハーフワードデータを符号なし 2 進数としてワードデータに拡張します。 ● アセンブラ形式 EXTUH Ri ● オペレーション extu(Ri[15:0]) → Ri [ハーフワード → ワード] ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 1 0 1 1 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1011 0001 EXTUH R1 R1 F F F F F F F F R1 0 0 0 0 実行前 224 FUJITSU MICROELECTRONICS LIMITED F F F F 実行後 CM71-00105-1 第 7 章 命令細則 7.63 FABSs (Single Precision Floating Point Absolute Value) FR81 ファミリ 7.63 FABSs (Single Precision Floating Point Absolute Value) FRj の絶対値をとり FRi に格納します。 ● アセンブラ形式 FABSs FRj, FRi ● オペレーション | FRj | → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 1 - 1 0 1 FRj 0 1 1 0 0 - ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 225 第 7 章 命令細則 7.64 FADDs (Single Precision Floating Point Add) 7.64 FR81 ファミリ FADDs (Single Precision Floating Point Add) FRk と FRj の加算を行い FRi に格納します。 ● アセンブラ形式 FADDs FRk, FRj, FRi ● オペレーション FRk + FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 0 0 0 0 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 226 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.64 FADDs (Single Precision Floating Point Add) FR81 ファミリ ● 演算結果と例外フラグ FRj +0 +0 -0 +0/(-) -0 +Norm -Norm +INF +Norm/(X) -Norm/(X) +INF/(-) -INF QNaN SNaN -INF/(-) QNaN/(-) QNaN/V -0/(-) +Norm +Norm/(X) *1 *2 -Norm *2 *1 -Norm/(X) FRk +INF -INF QNaN/V -INF/(-) QNaN/V -INF/(-) QNaN SNaN *1: +INF/0,X または -INF/P.X または± Norm/(X) *2: ± 0/(-) または± 0/U または± Norm/(X) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 227 第 7 章 命令細則 7.65 FBcc (Floating Point Conditional Branch) 7.65 FR81 ファミリ FBcc (Floating Point Conditional Branch) 遅延スロットのない分岐命令です。命令ごとに指定された条件が成立すると , label17 で示されたアドレスへプログラムカウンタ (PC) 相対の分岐を行います。ア ドレス計算の際に , rel16 は 2 倍されて符号拡張されます。条件が成立しないときは 分岐しません。 ● アセンブラ形式 FBN FBL label17 FBA label17 FBUGE label17 FBNE label17 FBUG label17 FBE label17 FBLE label17 FBLG label17 FBG label17 FBUE label17 FBULE label17 FBUL label17 FBU label17 FBGE label17 FBO label17 FBN 命令のときは , オペランドはありません。 ● オペレーション if( 条件成立 ) { PC + 4 + exts(rel16 × 2) → PC } 228 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.65 FBcc (Floating Point Conditional Branch) FR81 ファミリ 各命令の分岐条件を表 7.65-1 に示します。 表 7.65-1 FBcc 命令の分岐条件 cc ニーモニック 内容 条件 (FCC フィールド ) FBN 0000 Branch Never 常に非成立 FBA 1111 Branch Always 常に成立 FBNE 0111 Branch Not Equal L or G or U FBE 1000 Branch Equal E FBLG 0110 Branch Less or Greater L or G FBUE 1001 Branch Unordered or Equal E or U FBUL 0101 Branch Unoredered or Less L or U FBGE 1010 Branch Greater or Equal G or E FBL 0100 Branch Less L FBUGE 1011 Branch Unordered or Greater or Equal U or G or E FBUG 0011 Branch Unorder or Greater G or U FBLE 1100 Branch Less or Equal L or E FBG 0010 Branch Greater G FBULE 1101 Branch Unordered or Less or Equal E or L or U FBU 0001 Branch Unordered U FBO 1110 Branch Ordered E or L or G ● 分類 浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 1 1 1 1 1 1 1 cc rel16 ● EIT 発生と検出 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 229 第 7 章 命令細則 7.66 FBcc:D (Floating Point Conditional Branch with Delay Slot) 7.66 FR81 ファミリ FBcc:D (Floating Point Conditional Branch with Delay Slot) 遅延スロット付分岐命令です。命令ごとに指定された条件が成立すると , label17 で 示されたアドレスへプログラムカウンタ (PC) 相対の分岐を行います。アドレス計算 の際に , rel16 は 2 倍されて符号拡張されます。条件が成立しないときは分岐しませ ん。 ● アセンブラ形式 FBN:D FBL:D label17 FBA:D label17 FBUGE:D label17 FBNE:D label17 FBUG:D label17 FBE:D label17 FBLE:D label17 FBLG:D label17 FBG:D label17 FBUE:D label17 FBULE:D label17 FBUL:D label17 FBU:D label17 FBGE:D label17 FBO:D label17 FBN:D 命令のときは , オペランドはありません。 ● オペレーション if( 条件成立 ) { PC + 4 + exts(rel16 × 2) → PC } 230 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.66 FBcc:D (Floating Point Conditional Branch with Delay Slot) FR81 ファミリ 各命令の分岐条件を表 7.66-1 に示します。 表 7.66-1 FBcc:D 命令の分岐条件 cc ニーモニック 内容 条件 (FCC フィールド ) FBN:D 0000 Branch Never 常に非成立 FBA:D 1111 Branch Always 常に成立 FBNE:D 0111 Branch Not Equal L or G or U FBE:D 1000 Branch Equal E FBLG:D 0110 Branch Less or Greater L or G FBUE:D 1001 Branch Unordered or Equal E or U FBUL:D 0101 Branch Unoredered or Less L or U FBGE:D 1010 Branch Greater or Equal G or E FBL:D 0100 Branch Less L FBUGE:D 1011 Branch Unordered or Greater or Equal U or G or E FBUG:D 0011 Branch Unorder or Greater G or U FBLE:D 1100 Branch Less or Equal L or E FBG:D 0010 Branch Greater G FBULE:D 1101 Branch Unordered or Less or Equal E or L or U FBU:D 0001 Branch Unordered U FBO:D 1110 Branch Ordered E or L or G ● 分類 浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 1 (n+2) 0 1 1 1 1 1 1 1 cc rel16 ● EIT 発生と検出 割込みは検出しません。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 231 第 7 章 命令細則 7.67 FCMPs (Single Precision Floating Point Compare) 7.67 FR81 ファミリ FCMPs (Single Precision Floating Point Compare) FRk と FRj の比較を行い浮動小数点制御レジスタ (FCR) の浮動小数点条件コード (FCC) に反映します。 ● アセンブラ形式 FCMPs FRk, FRj ● オペレーション FRk - FRj 比較結果にしたがって , 以下のように FCC を設定します。 FCC 比較結果 1000H (E) FRk = FRj 0100H (L) FRk < FRj 0010H (G) FRk > FRj 0001H (U) FRk ? FRj ( 比較不能 ) ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 0 1 0 0 - ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 232 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.67 FCMPs (Single Precision Floating Point Compare) FR81 ファミリ ● 演算結果と例外フラグ FRj +0 +Norm -Norm +INF -INF QNaN SNaN EQ/(-) L/(-) G/(-) L(-) G(-) UO/(-) UO/V +Norm G/(-) *1 -Norm L/(-) +INF G/(-) -INF L/(-) +0 -0 -0 *1 FRk E/(-) E/(-) QNaN SNaN *1: G/(-) または L/(-) または E/(-) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 233 第 7 章 命令細則 7.68 FDIVs (Single Precision Floating Point Division) 7.68 FR81 ファミリ FDIVs (Single Precision Floating Point Division) FRk と FRj の除算を行い FRi に格納します。 ● アセンブラ形式 FDIVs FRk, FRj, FRi ● オペレーション FRk / FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 9 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 1 0 1 0 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 234 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.68 FDIVs (Single Precision Floating Point Division) FR81 ファミリ ● 演算結果と例外フラグ FRj +0 +0 -0 QNaN/V -0 +Norm -Norm +INF -INF +0(-) -0/(-) +0/(-) -0/(-) -0/(-) +0/(-) -0/(-) +0/(-) +Norm +INF/Z -INF/Z *1 *2 +0/(-) -0/(-) -Norm -INF/Z +INF/Z *2 *1 -0/(-) +0/(-) +INF +INF/(-) -INF/(-) +INF/(-) -INF/(-) QNaN/V -INF -INF/(-) +INF/(-) -INF/(-) +INF/(-) QNaN SNaN QNaN/(-) QNaN/V FRk QNaN SNaN *1: +INF/0,X または +0/U, X または +Norm/(X) *2: -INF/0,X または -0/U, X または -Norm/(X) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 235 第 7 章 命令細則 7.69 FiTOs (Convert from Integer to Single Precision Floating Point) 7.69 FR81 ファミリ FiTOs (Convert from Integer to Single Precision Floating Point) FRj の 32 ビット符号付整数を単精度浮動小数点に変換し FRi に格納します。 ● アセンブラ形式 FiTOs FRj, FRi ● オペレーション (float) FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 - 1 1 - 1 1 0 1 FRj 0 1 0 0 0 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ) ,FPU 例外 , 割込みを検出 ● 演算結果と例外フラグ FRj 236 出力結果 ±0 0/(-) +Norm +Norm/(X) -Norm -Norm/(X) +MAX +Nrom/X FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.70 FLD (Single Precision Floating Point Data Load) FR81 ファミリ 7.70 FLD (Single Precision Floating Point Data Load) メモリの Rj 番地の値を FRi に格納します。 ● アセンブラ形式 FLD @Rj, FRi ● オペレーション (Rj) → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 1 1 1 - 0 - 0 Rj FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 237 第 7 章 命令細則 7.71 FLD (Single Precision Floating Point Data Load) 7.71 FR81 ファミリ FLD (Single Precision Floating Point Data Load) メモリの R13+Rj 番地の値を FRi に格納します。 ● アセンブラ形式 FLD @(R13,Rj), FRi ● オペレーション (R13 + Rj) → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 1 1 1 - 1 - 0 Rj FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 238 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.72 FLD (Single Precision Floating Point Data Load) FR81 ファミリ 7.72 FLD (Single Precision Floating Point Data Load) メモリの R14+o14 × 4 番地の値を FRi に格納します。o14 は符号付で計算します。 o14 × 4 の値を disp16 として指定します。 ● アセンブラ形式 FLD @(R14,disp16), FRi ● オペレーション (R14 + o14 × 4) → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 0 0 1 1 1 1 1 o14 0 1 0 0 o14 FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 239 第 7 章 命令細則 7.73 FLD (Single Precision Floating Point Data Load) 7.73 FR81 ファミリ FLD (Single Precision Floating Point Data Load) メモリの R15+u14 × 4 番地の値を FRi に格納します。u14 は符号なしで計算しま す。u14 × 4 の値を udisp16 として指定します。 ● アセンブラ形式 FLD @(R15,udisp16), FRi ● オペレーション (R15 + u14 × 4) → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 0 0 1 1 1 1 1 u14 0 1 0 1 u14 FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 240 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.74 FLD (Single Precision Floating Point Data Load) FR81 ファミリ 7.74 FLD (Single Precision Floating Point Data Load) メモリの R15 番地の値を FRi に格納し , R15 に 4 を加算します。 ● アセンブラ形式 FLD @R15+, FRi ● オペレーション (R15) → FRi R15 + 4 → R15 ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 0 0 1 1 1 1 1 - 0 1 1 0 - FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 241 第 7 章 命令細則 7.75 FLD (Load Word Data in Memory to Floating Register) 7.75 FR81 ファミリ FLD (Load Word Data in Memory to Floating Register) メモリの BP+u16 × 4 番地のワードデータを FRi に格納します。u16 は符号なしで 計算します。u16 × 4 の値を udisp18 として指定します。 ● アセンブラ形式 FLD @(BP, udisp18), FRi ● オペレーション (BP+u16 × 4) → FRi ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 0 0 1 1 1 0 1 1 1 FRi u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 242 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.76 FLDM (Single Precision Floating Point Data Load to Multiple Register) FR81 ファミリ 7.76 FLDM (Single Precision Floating Point Data Load to Multiple Register) frlist に示されたレジスタを順にスタックから復帰します。frlist に指定可能なレジ スタは FR0 ∼ FR15 です。処理の順番はレジスタ番号の昇順です。 ● アセンブラ形式 FLDM (frlist) ● オペレーション 以下の操作を , frlist で示されたレジスタの数だけ繰り返します。 (R15) → FRi R15 + 4 → R15 FLDM 命令の frlist のビットとレジスタの対応を表 7.76-1 に示します。 表 7.76-1 FLDM 命令の frlist のビットとレジスタの対応 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 FRi FR15 FR14 FR13 FR12 FR11 FR10 FR9 FR8 FR7 FR6 FR5 FR4 FR3 FR2 FR1 FR0 ● 分類 浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 na サイクル (n: 転送レジスタ数 ) ● 命令フォーマット MSB (n+0) (n+2) CM71-00105-1 0 LSB 0 0 0 0 1 1 1 1 1 0 1 1 1 - frlist FUJITSU MICROELECTRONICS LIMITED 243 第 7 章 命令細則 7.76 FLDM (Single Precision Floating Point Data Load to Multiple Register) ● EIT 発生と検出 FR81 ファミリ データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 繰返しの途中で例外が発生した場合は, 例外を発生したアクセスで中断し, frlist で残っ ている値を例外ステータスレジスタ (ESR) の RL に保存し , 例外処理を行います。 244 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.77 FMADDs (Single Precision Floating Point Multiply and Add) FR81 ファミリ 7.77 FMADDs (Single Precision Floating Point Multiply and Add) FRk と FRj の乗算結果に FRi を加算し , FRi に格納します。 ● アセンブラ形式 FMADDs FRk, FRj, FRi ● オペレーション FRk × FRj + FRi → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 4 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 0 1 0 1 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 245 第 7 章 命令細則 7.77 FMADDs (Single Precision Floating Point Multiply and Add) FR81 ファミリ ● 演算結果と例外フラグ [ 乗算 ] FRj +0 -0 +Norm -Norm +INF -INF +0 +0/(-) -0/(-) +0/(-) -0/(-) QNaN/V -0 -0/(-) +0/(-) -0/(-) +0/(-) +Norm +0/(-) -0/(-) *1 *2 +INF/(-) -INF/(-) -Norm -0/(-) +0/(-) *2 *1 -INF/(-) +INF/(-) +INF QNaN/V +INF/(-) -INF/(-) +INF/(-) -INF/(-) -INF/(-) +INF/(-) -INF/(-) +INF/(-) +INF -INF QNaN SNaN QNaN/(-) QNaN/V FRk -INF QNaN SNaN *1: +INF/0,X または +0/U, X または +Norm/(X) *2: -INF/0,X または -0/U, X または -Norm/(X) [ 加算 ] FRj +0 +0 -0 +0/(-) -0 +Norm +Norm/(X) -Norm -Norm/(X) +INF/(-) QNaN SNaN -INF/(-) QNaN/(-) QNaN/V -0/(-) +Norm +Norm/(X) *1 *2 -Norm *2 *1 -Norm/(X) FRk +INF -INF QNaN/V -INF/(-) QNaN/V +INF/(-) QNaN SNaN *1: +INF/0,X または -INF/P. X または± Norm/(X) *2: ± 0/(-) または± 0/U または± Norm/(X) 246 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.78 FMOVs (Single Precision Floating Point Move) FR81 ファミリ 7.78 FMOVs (Single Precision Floating Point Move) FRj の値を FRi に格納します。 ● アセンブラ形式 FMOVs FRj, FRi ● オペレーション FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 1 - 1 0 1 FRj 0 1 1 1 0 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 247 第 7 章 命令細則 7.79 FMSUBs (Single Precision Floating Point Multiply and Subtract) 7.79 FR81 ファミリ FMSUBs (Single Precision Floating Point Multiply and Subtract) FRk と FRj の乗算結果から FRi を減算し , FRi に格納します。 ● アセンブラ形式 FMSUBs FRk, FRj, FRi ● オペレーション FRk × FRj - FRi → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 4 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 0 1 1 0 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 248 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.79 FMSUBs (Single Precision Floating Point Multiply and Subtract) FR81 ファミリ ● 演算結果と例外フラグ [ 乗算 ] FRj +0 -0 +Norm -Norm +INF -INF +0 +0/(-) -0/(-) +0/(-) -0/(-) QNaN/V -0 -0/(-) +0/(-) -0/(-) +0/(-) +Norm +0/(-) -0/(-) *1 *2 +INF/(-) -INF/(-) -Norm -0/(-) +0/(-) *2 *1 -INF/(-) +INF/(-) +INF QNaN/V +INF/(-) -INF/(-) +INF/(-) -INF/(-) -INF/(-) +INF/(-) -INF/(-) +INF/(-) +INF -INF QNaN SNaN QNaN/(-) QNaN/V FRk -INF QNaN SNaN *1: +INF/0,X または +0/U,X または +Norm/(X) *2: -INF/0,X または -0/U,X または -Norm/(X) [ 加算 ] FRj +0 +0 +0/(-) -0 -0/(-) -0 +Norm +Norm/(X) -Norm -Norm/(X) +INF/(-) +Norm +Norm/(X) *1 *2 -Norm -Norm/(X) *2 *1 +INF +INF/(-) -INF -INF/(-) QNaN SNaN -INF/(-) QNaN/(-) QNaN/V FRk QNaN/V QNaN/V QNaN SNaN *1: +INF/0 または -INF/0 または± NorM/(X) *2: ± 0/(-) または± 0/U または± Norm/(X) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 249 第 7 章 命令細則 7.80 FMULs (Single Precision Floating Point Multiply) 7.80 FR81 ファミリ FMULs (Single Precision Floating Point Multiply) FRk と FRj の乗算を行い FRi に格納します。 ● アセンブラ形式 FMULs FRk, FRj, FRi ● オペレーション FRk × FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 0 1 1 1 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 250 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.80 FMULs (Single Precision Floating Point Multiply) FR81 ファミリ ● 演算結果と例外フラグ FRj +0 -0 +Norm -Norm +INF -INF +0 +0/(-) -0/(-) +0/(-) -0/(-) QNaN/V -0 -0/(-) +0/(-) -0/(-) +0/(-) +Norm +0/(-) -0/(-) *1 *2 +INF/(-) -INF/(-) -Norm -0/(-) +0/(-) *2 *1 -INF/(-) +INF/(-) +INF QNaN/V +INF/(-) -INF/(-) +INF/(-) -INF/(-) -INF/(-) +INF/(-) -INF/(-) +INF/(-) QNaN SNaN QNaN/(-) QNaN/V FRk -INF QNaN SNaN *1: +INF/0,X または +0/U,X または +Norm/(X) *2: -INF/0,X または -0/U,X または -Norm/(X) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 251 第 7 章 命令細則 7.81 FNEGs (Single Precision Floating Point sign reverse) 7.81 FR81 ファミリ FNEGs (Single Precision Floating Point sign reverse) FRj の符号を反転し FRi に格納します。 ● アセンブラ形式 FNEGs FRj, FRi ● オペレーション FRj × -1 → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 1 - 1 0 1 FRj 0 1 1 1 1 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), 割込みを検出 252 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.82 FSQRTs (Single Precision Floating Point Square Root) FR81 ファミリ 7.82 FSQRTs (Single Precision Floating Point Square Root) FRj の開平演算を行い FRi に格納します。 ● アセンブラ形式 FSQRTs FRj, FRi ● オペレーション √ FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 14 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 1 - 1 1 1 - 0 1 0 1 FRj 0 1 1 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 ● 演算結果と例外フラグ FRj CM71-00105-1 +0 -0 +Norm -Norm +0/(-) -0/(-) +Norm/(X) QNaN/V +INF -INF QNaN SNaN +INF/(-) QNaN/V QNaN/(-) QNaN/V FUJITSU MICROELECTRONICS LIMITED 253 第 7 章 命令細則 7.83 FST (Single Precision Floating Point Data Store) 7.83 FR81 ファミリ FST (Single Precision Floating Point Data Store) FRi の値をメモリの Rj 番地に格納します。 ● アセンブラ形式 FST FRi, @Rj ● オペレーション FRi → (Rj) ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 1 0 1 1 1 1 1 - 0 - 0 Rj FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 254 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.84 FST (Single Precision Floating Point Data Store) FR81 ファミリ 7.84 FST (Single Precision Floating Point Data Store) FRi の値をメモリの R13+Rj 番地に格納します。 ● アセンブラ形式 FST FRi, @(R13,Rj) ● オペレーション FRi → (R13 + Rj) ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 1 0 1 1 1 1 1 - 1 - 0 Rj FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 255 第 7 章 命令細則 7.85 FST (Single Precision Floating Point Data Store) 7.85 FR81 ファミリ FST (Single Precision Floating Point Data Store) FRi の値をメモリの R14+o14 × 4 番地に格納します。o14 は符号付で計算します。 o14 × 4 の値を disp16 として指定します。 ● アセンブラ形式 FST FRi, @(R14,disp16) ● オペレーション FRi → (R14 + o14 × 4) ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 1 0 1 1 1 1 1 o14 0 1 0 0 o14 FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 256 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.86 FST (Single Precision Floating Point Data Store) FR81 ファミリ 7.86 FST (Single Precision Floating Point Data Store) FRi の値をメモリの R15+u14 × 4 番地に格納します。u14 は符号なしで計算しま す。u14 × 4 の値を udisp16 として指定します。 ● アセンブラ形式 FST FRi, @(R15,udisp16) ● オペレーション FRi → (R15 + u14 × 4) ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 1 0 1 1 1 1 1 u14 0 1 0 1 u14 FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 257 第 7 章 命令細則 7.87 FST (Single Precision Floating Point Data Store) 7.87 FR81 ファミリ FST (Single Precision Floating Point Data Store) R15 から 4 を減算し , FRi の値をメモリの新しい R15 が示す番地に格納します。 ● アセンブラ形式 FST FRi, @-R15 ● オペレーション R15 - 4 → R15 FRi → (R15) ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 1 0 1 1 1 1 1 - 0 1 1 0 - FRi ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 258 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.88 FST (Store Word Data in Floating Point Register to Memory) FR81 ファミリ 7.88 FST (Store Word Data in Floating Point Register to Memory) FRi のワードデータを , メモリの BP+u16 × 4 番地に格納します。u16 は符号なし で計算します。u16 × 4 の値を udisp18 として指定します。 ● アセンブラ形式 FST FRi, @(BP, udisp18) ● オペレーション FRi → (BP+u16 × 4) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 (n+2) 1 0 1 1 1 0 1 1 1 FRi u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 259 第 7 章 命令細則 7.89 FSTM (Single Precision Floating Point Data Store from Multiple Register) FR81 ファミリ FSTM (Single Precision Floating Point Data Store from Multiple Register) 7.89 frlist に示されたレジスタを順にスタックに退避します。frlist に指定可能なレジス タは FR0 ∼ FR15 です。処理の順番はレジスタ番号の降順です。 ● アセンブラ形式 FSTM (frlist) ● オペレーション 以下の操作を , frlist で示されたレジスタの数だけ繰り返します。 R15 - 4 → R15 (R15) → FRi FSTM 命令の frlist のビットとレジスタの対応を表 7.89-1 に示します。 表 7.89-1 FSTM 命令の frlist のビットとレジスタの対応 bit FRi 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 FR0 FR1 FR2 FR3 FR4 FR5 FR6 FR7 FR8 FR9 FR10 FR11 FR12 FR13 FR14 FR15 ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 na サイクル (n: 転送レジスタ数 ) ● 命令フォーマット MSB (n+0) (n+2) 260 0 LSB 0 0 1 0 1 1 1 1 1 0 1 1 1 - frlist FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.89 FSTM (Single Precision Floating Point Data Store from Multiple Register) FR81 ファミリ ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー , FPU 不在エ ラー ), 割込みを検出 繰返しの途中で例外が発生した場合は, 例外を発生したアクセスで中断し, frlist で残っ ている値を例外ステータスレジスタ (ESR) のレジスタリスト (RL) に保存し , 例外処理 を行います。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 261 第 7 章 命令細則 7.90 FsTOi (Convert from Single Precision Floating Point to Integer) 7.90 FR81 ファミリ FsTOi (Convert from Single Precision Floating Point to Integer) FRj の単精度浮動小数点を 32 ビット符号付整数に変換し FRi に格納します。 ● アセンブラ形式 FsTOi FRj, FRi ● オペレーション (int) FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 - 1 1 0 1 FRj 0 1 0 0 1 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ) ,FPU 例外 , 割込みを検出 262 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.90 FsTOi (Convert from Single Precision Floating Point to Integer) FR81 ファミリ ● 演算結果と例外フラグ FRj CM71-00105-1 出力結果 ±0 0/(-) ± Den 0/D +Norm +0/(X),+Norm/(X),+MAX/V -Norm +0/(X),-Norm/(X),-MAX/V +INF +MAX/V -INF -MAX/V QNaN, SNaN ± MAX/V FUJITSU MICROELECTRONICS LIMITED 263 第 7 章 命令細則 7.91 FSUBs (Single Precision Floating Point Subtract) 7.91 FR81 ファミリ FSUBs (Single Precision Floating Point Subtract) FRk と FRj の減算を行い FRi に格納します。 ● アセンブラ形式 FSUBs FRk, FRj, FRi ● オペレーション FRk - FRj → FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 FRk 1 1 0 1 FRj 0 0 0 1 0 FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), FPU 例外 , 割込みを検出 264 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.91 FSUBs (Single Precision Floating Point Subtract) FR81 ファミリ ● 演算結果と例外フラグ FRj +0 +0 +0/(-) -0 -0/(-) -0 +Norm +Norm/(X) -Norm +INF -Norm/(X) +INF/(-) +Norm +Norm/(X) *1 *2 -Norm -Norm/(X) *2 *1 +INF +INF/(-) -INF -INF/(-) -INF QNaN SNaN -INF/(-) QNaN/(-) QNaN/V FRk QNaN/V QNaN/V QNaN SNaN *1: +INF/0 または -INF/0 または± NorM/(X) *2: ± 0/(-) または± 0/U または± Norm/(X) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 265 第 7 章 命令細則 7.92 INT (Software Interrupt) 7.92 FR81 ファミリ INT (Software Interrupt) ソフトウェアインタラプト命令です。指定された割込みベクタ番号 u8 に応じた分岐 先アドレスを , ベクタテーブルから読み出して分岐します。 ● アセンブラ形式 INT #u8 ベクタ番号9∼13, 64, 65 はデバッグ用の割込みでエミュレータが使用しますので, ユー ザプログラムでは "INT #9" ∼ "INT #13", "INT #64", "INT #65" 命令を使用しないでくだ さい。 ● オペレーション SSP-4 → SSP PS → (SSP) SSP-4 → SSP PC+2 → (SSP) "0" → CCR:I "0" → CCR:S (TBR+3FCH-u8 × 4) → PC プログラムカウンタ (PC) とプログラムステータス (PS) をシステムスタックポインタ (SSP) の示すスタックへ格納します。コンディションコードレジスタ (CCR) のスタック フラグ (S) に "0" を書き込み , 以降に使用するスタックポインタを SSP とします。CCR の割込み許可フラグ (I) に "0" を書き込み , 外部割込みを禁止状態にします。指定され た割込みベクタ番号u8 に応じた分岐先アドレスを, ベクタテーブルから読み出して分 岐します。 ● フラグ変化 S 0 I 0 N Z V C − − − − N, Z, V, C: 変化しません。 S, I: クリアされます。 ● 分類 遅延なし分岐命令 266 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.92 INT (Software Interrupt) FR81 ファミリ ● 実行サイクル数 1+3a サイクル ● 命令フォーマット MSB 0 LSB 0 0 1 1 1 1 1 u8 ● 実行例 ; 命令のビットパターン:0001 1111 0010 0000 INT #20H R15 4 0 0 0 0 0 0 0 R15 7 F F F F F F 8 SSP 8 0 0 0 0 0 0 0 SSP 7 F F F F F F 8 TBR 0 0 0 F F C 0 0 TBR 0 0 0 F F C 0 0 USP 4 0 0 0 0 0 0 0 USP 4 0 0 0 0 0 0 0 PC 8 0 8 8 8 0 8 6 PC 6 8 0 9 6 8 0 0 PS F F F F F 8 F 0 PS F F F F F 8 C 0 S I N Z V C CCR 1 1 0 0 0 0 S I N Z V C CCR メモリ 0 0 0 0 0 0 メモリ 000FFF7C 6 8 0 9 6 8 0 0 ×××× ×××× 7FFFFFF8 8 0 8 8 8 0 8 8 7FFFFFFC ×××× ×××× 7FFFFFFC F F F F F 8 F 0 80000000 ×××× ×××× 80000000 ×××× ×××× 000FFF7C 6 8 0 9 7FFFFFF8 6 8 0 0 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 267 第 7 章 命令細則 7.93 INTE (Software Interrupt for Emulator) 7.93 FR81 ファミリ INTE (Software Interrupt for Emulator) デバッグ用のソフトウェアインタラプト命令です。ベクタテーブルを参照してベク タ番号 #9 の先頭アドレスへ分岐します。 ● アセンブラ形式 INTE ● オペレーション SSP-4 → SSP PS → (SSP) SSP-4 → SSP PC+2 → (SSP) 4 → ILM "0" → CCR:S (TBR+3D8H) → PC プログラムカウンタ (PC) とプログラムステータス (PS) をシステムスタックポインタ (SSP) の示すスタックへ格納します。コンディションコードレジスタ (CCR) のスタック フラグ (S) に "0" を書き込み , 以降に使用するスタックポインタを SSP とします。ベ クタテーブルを参照してベクタ番号 #9 の先頭アドレスへ分岐します。 コンディションコードレジスタ (CCR) の割込み許可フラグ (I) は変化しません。プログ ラムステータス (PS) のインタラプトレベルマスクレジスタ (ILM) のレベルを 4 に設定 します。 ● フラグ変化 S 0 I N Z V C − − − − − I, N, Z, V, C: 変化しません。 S: クリアされます。 ● 分類 遅延なし分岐命令 ● 実行サイクル数 1+3a サイクル 268 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.93 INTE (Software Interrupt for Emulator) FR81 ファミリ ● 命令フォーマット MSB 1 LSB 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 ● 実行例 ; 命令のビットパターン:1001 1111 0011 0000 INTE R15 4 0 0 0 0 0 0 0 R15 7 F F F F F F 8 SSP 8 0 0 0 0 0 0 0 SSP 7 F F F F F F 8 USP 4 0 0 0 0 0 0 0 USP 4 0 0 0 0 0 0 0 TBR 0 0 0 F F C 0 0 TBR 0 0 0 F F C 0 0 PC 8 0 8 8 8 0 8 6 PC 6 8 0 9 6 8 0 0 PS F F F 5 F 8 F 0 PS F F E 4 F 8 D 0 1 0 1 0 1 ILM S I N Z V C CCR 1 1 0 0 0 0 0 0 1 0 0 ILM S I N Z V C CCR メモリ 0 1 0 0 0 0 メモリ 000FFFD8 6 8 0 9 6 8 0 0 ×××× ×××× 7FFFFFF8 8 0 8 8 8 0 8 8 7FFFFFFC ×××× ×××× 7FFFFFFC F F F F F 8 F 0 80000000 ×××× ×××× 80000000 ×××× ×××× 000FFFD8 6 8 0 9 7FFFFFF8 6 8 0 0 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 269 第 7 章 命令細則 7.94 JMP (Jump) 7.94 FR81 ファミリ JMP (Jump) 遅延スロットのない分岐命令です。Ri の示すアドレスへ分岐します。 ● アセンブラ形式 JMP @Ri ● オペレーション Ri → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延なし分岐命令 ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 0 0 0 0 Ri ● 実行例 ; 命令のビットパターン:1001 0111 0000 0001 JMP @R1 R1 C 0 0 0 8 0 0 0 R1 0 0 0 0 0 0 F F PC F F 8 0 0 0 0 0 PC C 0 0 0 8 0 0 0 実行前 270 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.95 JMP:D (Jump) FR81 ファミリ 7.95 JMP:D (Jump) 遅延スロットつきの分岐命令です。Ri の示すアドレスへ分岐します。 ● アセンブラ形式 JMP:D @Ri ● オペレーション Ri → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延分岐命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 1 1 1 1 0 0 0 0 Ri ● 実行例 JMP:D @R1; 命令のビットパターン:1001 1111 0000 0001 LDI:8 #0FFH, R1; 遅延スロットに置かれた命令 R1 C 0 0 0 8 0 0 0 R1 0 0 0 0 0 0 F F PC F F 8 0 0 0 0 0 PC C 0 0 0 8 0 0 0 JMP命令実行前 分岐後 分岐先の命令の実行前に , 遅延スロットに置かれた命令が実行されます。上記の R1 は遅延スロットに置かれた LDI:8 命令により変化します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 271 第 7 章 命令細則 7.96 LCALL (Long Call Subroutine) 7.96 FR81 ファミリ LCALL (Long Call Subroutine) 遅延スロットのない分岐命令です。次の命令のアドレスをリターンポインタ (RP) に 格納した後に , label21 で指定されたアドレスへプログラムカウンタ (PC) 相対の分 岐を行います。アドレス計算の際に rel20 の値は 2 倍されて , 符号拡張されます。 ● アセンブラ形式 LCALL label21 ● オペレーション PC + 4 → RP PC + 4 + exts(rel20 × 2) → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延なし分岐命令 , FR81 ファミリ ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 1 1 1 0 0 1 0 rel20 ( 上位 ) rel20 ( 下位 ) ● EIT 発生と検出 割込みを検出 272 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.97 LCALL:D (Long Call Subroutine) FR81 ファミリ 7.97 LCALL:D (Long Call Subroutine) 遅延スロット付きの分岐命令です。次の命令のアドレスをリターンポインタ (RP) に 格納した後に , label21 で指定されたアドレスへプログラムカウンタ (PC) 相対の分 岐を行います。アドレス計算の際に rel20 の値は 2 倍されて , 符号拡張されます。 ● アセンブラ形式 LCALL:D label21 ● オペレーション PC + 6 → RP PC + 4 + exts(rel20 × 2) → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延分岐命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 0 1 (n+2) 0 1 1 1 0 0 1 0 rel20 ( 上位 ) rel20 ( 下位 ) ● EIT 発生と検出 割込みは検出しません CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 273 第 7 章 命令細則 7.98 LD (Load Word Data in Memory to Register) 7.98 FR81 ファミリ LD (Load Word Data in Memory to Register) メモリの Rj 番地のワードデータを Ri に格納します。 ● アセンブラ形式 LD @Rj, Ri ● オペレーション (Rj) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 LSB 0 0 0 0 1 0 0 Rj Ri ● 実行例 LD @R2, R3; 命令のビットパターン:0000 0100 0010 0011 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 0 0 0 0 0 0 0 0 R3 8 7 6 5 4 3 2 1 メモリ 12345678 8 7 6 5 4 3 2 1 メモリ 12345678 実行前 274 FUJITSU MICROELECTRONICS LIMITED 8 7 6 5 4 3 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.99 LD (Load Word Data in Memory to Register) FR81 ファミリ 7.99 LD (Load Word Data in Memory to Register) メモリの R13+Rj 番地のワードデータを Ri に格納します。 ● アセンブラ形式 LD @(R13, Rj), Ri ● オペレーション (R13+Rj) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 0 0 0 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 275 第 7 章 命令細則 7.99 LD (Load Word Data in Memory to Register) FR81 ファミリ ● 実行例 LD @(R13, R2), R3 ; 命令のビットパターン:0000 0000 0010 0011 R2 0 0 0 0 0 0 0 4 R2 0 0 0 0 0 0 0 4 R3 ×××× ×××× R3 8 7 6 5 4 3 2 1 R13 1 2 3 4 R13 1 2 3 4 5 6 7 8 12345678 1234567C 5 6 7 8 メモリ 8 7 6 5 4 3 2 1 12345678 1234567C 実行前 276 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.100 LD (Load Word Data in Memory to Register) FR81 ファミリ 7.100 LD (Load Word Data in Memory to Register) メモリの R14+o8 × 4 番地のワードデータを Ri に格納します。o8 は符号付きで計 算します。o8 × 4 の値を disp10 として指定します。 ● アセンブラ形式 LD @(R14, disp10), Ri ● オペレーション (R14+o8 × 4) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 1 0 o8 FUJITSU MICROELECTRONICS LIMITED Ri 277 第 7 章 命令細則 7.100 LD (Load Word Data in Memory to Register) FR81 ファミリ ● 実行例 LD @(R14,4), R3 ; 命令のビットパターン :0010 0000 0001 0011 R3 ×××× ×××× R3 8 7 6 5 4 3 2 1 R14 1 2 3 4 R14 1 2 3 4 5 6 7 8 12345678 1234567C 5 6 7 8 メモリ 8 7 6 5 4 3 2 1 12345678 1234567C 実行前 278 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.101 LD (Load Word Data in Memory to Register) FR81 ファミリ 7.101 LD (Load Word Data in Memory to Register) メモリの R15+u4 × 4 番地のワードデータを Ri に格納します。u4 は符号なしで計 算します。u4 × 4 の値を udisp6 として指定します。 ● アセンブラ形式 LD @(R15, udisp6), Ri ● オペレーション (R15+u4 × 4) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 0 0 1 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri 279 第 7 章 命令細則 7.101 LD (Load Word Data in Memory to Register) FR81 ファミリ ● 実行例 LD @(R15,4), R3 ; 命令のビットパターン:0000 0011 0001 0011 R3 ×××× ×××× R3 8 7 6 5 4 3 2 1 R15 1 2 3 4 R15 1 2 3 4 5 6 7 8 12345678 1234567C 5 6 7 8 メモリ 8 7 6 5 4 3 2 1 12345678 1234567C 実行前 280 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.102 LD (Load Word Data in Memory to Register) FR81 ファミリ 7.102 LD (Load Word Data in Memory to Register) メモリの R15 番地のワードデータを Rj に格納し , R15 に 4 を加算します。Ri とし て R15 を指定したときは , メモリから読み出した値が R15 に格納されます。 ● アセンブラ形式 LD @R15+, Ri ● オペレーション (R15) → Ri R15 + 4 → R15 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 0 0 1 1 1 0 0 0 0 FUJITSU MICROELECTRONICS LIMITED Ri 281 第 7 章 命令細則 7.102 LD (Load Word Data in Memory to Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0000 0111 0000 0011 LD @R15+, R3 R3 ×××× ×××× R3 8 7 6 5 4 3 2 1 R15 1 2 3 4 R15 1 2 3 4 5 6 7 C 5 6 7 8 メモリ 12345678 8 7 6 5 4 3 2 1 1234567C メモリ 12345678 4 3 2 1 1234567C 実行前 282 8 7 6 5 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.103 LD (Load Word Data in Memory to Register) FR81 ファミリ 7.103 LD (Load Word Data in Memory to Register) メモリの BP+u16 × 4 番地のワードデータを Ri に格納します。u16 は符号なしで 計算します。u16 × 4 の値を udisp18 として指定します。 ● アセンブラ形式 LD @(BP, udisp18), Ri ● オペレーション (BP+u16 × 4) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 ,FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 1 1 1 0 1 0 0 Ri u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 283 第 7 章 命令細則 7.104 LD (Load Word Data in Memory to Register) 7.104 FR81 ファミリ LD (Load Word Data in Memory to Register) メモリの R15 番地のワードデータを専用レジスタ Rs に格納し , R15 に 4 を加算し ます。 ● アセンブラ形式 LD @R15+, Rs ● オペレーション (R15) → Rs R15 + 4 → R15 ユーザモードで TBR,SSP,ESR を指定した場合もしくは存在しないレジスタ番号を指定 した場合は不正命令例外 ( システム専用レジスタアクセス ) を発生します。 特権モードには制約はありません。特権モードのときに , Rs として専用レジスタの存 在しない番号を指定した場合は , メモリから読み出した値は捨てられます。 Rs としてシステムスタックポインタ (SSP) またはユーザスタックポインタ (USP) を指 定して , それが R15 になっている場合 ( コンディションコードレジスタ (CCR) のスタッ クフラグ (S) が 0 のときに SSP 指定 , スタックフラグ (S) が 1 のときに USP 指定 ), 最終 的に R15 として残るのはメモリから読み出した値になります。 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 , FR81 更新 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 284 LSB 0 0 0 0 1 1 1 1 0 0 0 FUJITSU MICROELECTRONICS LIMITED Rs CM71-00105-1 第 7 章 命令細則 7.104 LD (Load Word Data in Memory to Register) FR81 ファミリ ● EIT 発生と検出 ユーザモード : 不正命令例外 ( システム専用レジスタアクセス ) を発生します。データアクセス保 護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出します。 特権モード : データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検 出します。 ● 実行例 LD @R15+, MDH ; 命令のビットパターン:0000 0111 1000 0100 R15 1 2 3 4 5 6 7 4 R15 1 2 3 4 5 6 7 8 MDH ×××× ×××× MDH 8 7 6 5 4 3 2 1 12345670 12345674 メモリ 8 7 6 5 4 3 2 1 12345670 12345674 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 285 第 7 章 命令細則 7.105 LD (Load Word Data in Memory to Program Status Register) 7.105 FR81 ファミリ LD (Load Word Data in Memory to Program Status Register) メモリの R15 番地のワードデータをプログラムステータス (PS) に格納し , R15 に 4 を加算します。 ● アセンブラ形式 LD @R15+, PS ● オペレーション (R15) → PS R15 + 4 → R15 システムステータスレジスタ (SSR) の内容は動作モードに関係なく , この命令では変更 できません。また , ユーザモードで実行した場合に , 変更できるのは D1,D0,N,Z,V,C フ ラグのみで , それ以外のフラグの値は更新されません。特権モードでは SSR 以外の ビットの変更が可能です。 命令実行時の割込みレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のとき , ILM に新た な値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定するデータがメモリに入って いた場合 , 指定した値に 16 を加算した値が ILM に転送されます。元の値が 0 ∼ 15 の ときは , 0 ∼ 31 の任意の値を ILM に転送できます。 ● フラグ変化 N C Z C V C C C N, Z, V, C: (R15) のデータが転送されます。 ● 分類 メモリロード命令 , FR81 更新 ● 実行サイクル数 1+a サイクル ● 命令フォーマット MSB 0 286 LSB 0 0 0 0 1 1 1 1 0 0 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 CM71-00105-1 第 7 章 命令細則 7.105 LD (Load Word Data in Memory to Program Status Register) FR81 ファミリ ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー), 割込みを検出し ます。割込みレベルマスクレジスタ (ILM), 割込み許可フラグ (I) に変更がある場合は , 変更後の値で割込みの検出を行います。 ● 実行例 ; 命令のビットパターン:0000 0111 1001 0000 LD @R15+, PS R15 1 2 3 4 5 6 7 4 R15 1 2 3 4 5 6 7 8 PS F F F F F 8 D 5 PS F F F 8 F 8 C 0 12345670 12345674 メモリ F F F 8 F 8 C 0 12345670 12345674 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED メモリ F F F 8 F 8 C 0 実行後 287 第 7 章 命令細則 7.106 LDI:20 (Load Immediate 20bit Data to Destination Register) 7.106 FR81 ファミリ LDI:20 (Load Immediate 20bit Data to Destination Register) 20 ビットの即値データに上位 12 ビットをゼロ拡張したワードデータを , Ri に格納 します。 ● アセンブラ形式 LDI:20 #i20, Ri ● オペレーション extu(i20) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 即値データ転送命令 ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB (n+0) (n+2) 288 1 LSB 0 0 1 1 0 1 1 i20( 上位 ) Ri i20( 下位 ) FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.106 LDI:20 (Load Immediate 20bit Data to Destination Register) FR81 ファミリ ● 実行例 LDI:20 #54321H, R3 ; 命令のビットパターン:1001 1011 0101 0011 ; 0100 0011 0010 0001 R3 0 0 0 0 0 0 0 0 R3 0 0 0 5 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 4 3 2 1 実行後 289 第 7 章 命令細則 7.107 LDI:32 (Load Immediate 32 bit Data to Destination Register) 7.107 FR81 ファミリ LDI:32 (Load Immediate 32 bit Data to Destination Register) 1 ワードの即値データを Ri に格納します。 ● アセンブラ形式 LDI:32 #i32, Ri ● オペレーション i32 → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 即値データ転送命令 ● 実行サイクル数 d サイクル ● 命令フォーマット MSB (n+0) 290 1 LSB 0 0 1 1 1 1 1 1 (n+2) i32( 上位 ) (n+4) i32( 下位 ) 0 FUJITSU MICROELECTRONICS LIMITED 0 0 Ri CM71-00105-1 第 7 章 命令細則 7.107 LDI:32 (Load Immediate 32 bit Data to Destination Register) FR81 ファミリ ● 実行例 LDI:32 #87654321H, R3 R3 0 0 0 0 0 0 0 0 ; 命令のビットパターン: 1001 1111 1000 0011 ; 1000 0111 0110 0101 ; 0100 0011 0010 0001 R3 8 7 6 5 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 4 3 2 1 実行後 291 第 7 章 命令細則 7.108 LDI:8 (Load Immediate 8bit Data to Destination Register) 7.108 FR81 ファミリ LDI:8 (Load Immediate 8bit Data to Destination Register) 8 ビットの即値データに上位 24 ビットをゼロ拡張したワードデータを , Ri に格納し ます。 ● アセンブラ形式 LDI:8 #i8, Ri ● オペレーション extu(i8) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 即値データ転送命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 1 0 0 i8 Ri ● 実行例 R3 LDI:8 #21H, R3 ; 命令のビットパターン:1100 0010 0001 0011 0 0 0 0 R3 0 0 0 0 0 0 0 0 実行前 292 FUJITSU MICROELECTRONICS LIMITED 0 0 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.109 LDM0 (Load Multiple Registers) FR81 ファミリ 7.109 LDM0 (Load Multiple Registers) reglist にて指定した複数のレジスタ (R0 ∼ R7) に R15 番地のワードデータを格納 し , R15 に 4 を加算する処理を繰り返します。処理の順番はレジスタ番号の昇順で す。 ● アセンブラ形式 LDM0 (reglist) reglist に R0 ∼ R7 のレジスタを "," で区切って , 複数並べて指定します。 ● オペレーション 以下の操作を reglist で示されたレジスタの数だけ繰り返します。 (R15) → Ri R15+4 → R15 LDM0 命令の reglist のビットとレジスタの対応を表 7.109-1 に示します。 表 7.109-1 LDM0 命令の reglist のビットとレジスタの対応 ビット 7 6 5 4 3 2 1 0 レジスタ R7 R6 R5 R4 R3 R2 R1 R0 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 293 第 7 章 命令細則 7.109 LDM0 (Load Multiple Registers) FR81 ファミリ ● 実行サイクル数 reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになりま す。 n=0 のとき :1 サイクル それ以外のとき:b × n サイクル ● 命令フォーマット MSB 1 LSB 0 0 0 1 1 0 0 reglist ● 実行例 ; 命令のビットパターン:1000 1100 0001 1000 LDM0 (R3, R4) R3 ×××× ×××× R3 9 0 B C 9 3 6 3 R4 ×××× ×××× R4 8 3 4 3 8 3 4 A R15 7 F F F R15 7 F F F F F C 8 F F C 0 メモリ メモリ 7FFFFFC0 9 0 B C 9 3 6 3 7FFFFFC0 9 0 B C 9 3 6 3 7FFFFFC4 8 3 4 3 8 3 4 A 7FFFFFC4 8 3 4 3 8 3 4 A ×××× ×××× 7FFFFFC8 7FFFFFC8 実行前 294 FUJITSU MICROELECTRONICS LIMITED ×××× ×××× 実行後 CM71-00105-1 第 7 章 命令細則 7.110 LDM1 (Load Multiple Registers) FR81 ファミリ 7.110 LDM1 (Load Multiple Registers) reglist にて指定した複数のレジスタ (R8 ∼ R15) に R15 番地のワードデータを格納 し , R15 に 4 を加算する処理を繰り返します。処理の順番はレジスタ番号の昇順で す。reglist で R15 を指定した場合 , メモリから読み出した値が最終的に R15 に入り ます。 ● アセンブラ形式 LDM1 (reglist) reglist に R8 ∼ R15 のレジスタを "," で区切って , 複数並べて指定します。 ● オペレーション 以下の操作を reglist で示されたレジスタの数だけ繰り返します。 (R15) → Ri R15+4 → R15 LDM1 命令の reglist のビットとレジスタの対応を表 7.110-1 に示します。 表 7.110-1 LDM1 命令の reglist のビットとレジスタの対応 ビット 7 6 5 4 3 2 1 0 レジスタ R15 R14 R13 R12 R11 R10 R9 R8 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 295 第 7 章 命令細則 7.110 LDM1 (Load Multiple Registers) FR81 ファミリ ● 実行サイクル数 reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになりま す。 n=0 のとき :1 サイクル それ以外のとき:b × n サイクル ● 命令フォーマット MSB 1 LSB 0 0 0 1 1 0 1 reglist ● 実行例 LDM1 (R10, R11, R12) ; 命令のビットパターン:1000 1101 0001 1100 R10 ×××× ×××× R10 8 F E 3 9 E 8 A R11 ×××× ×××× R11 9 0 B C 9 3 6 3 R12 ×××× ×××× R12 8 D F 7 8 8 E 4 R15 7 F F F R15 7 F F F F F C C F F C 0 メモリ メモリ 7FFFFFC0 8 F E 3 9 E 8 A 7FFFFFC0 8 F E 3 9 E 8 A 7FFFFFC4 9 0 B C 9 3 6 3 7FFFFFC4 9 0 B C 9 3 6 3 7FFFFFC8 8 D F 7 8 8 E 4 7FFFFFC8 8 D F 7 8 8 E 4 ×××× ×××× 7FFFFFCC 7FFFFFCC 実行前 296 FUJITSU MICROELECTRONICS LIMITED ×××× ×××× 実行後 CM71-00105-1 第 7 章 命令細則 7.111 LDUB (Load Byte Data in Memory to Register) FR81 ファミリ 7.111 LDUB (Load Byte Data in Memory to Register) メモリの Rj 番地のバイトデータをゼロ拡張し , Ri に格納します。 ● アセンブラ形式 LDUB @Rj, Ri ● オペレーション extu((Rj)) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 LSB 0 0 0 0 1 1 0 Rj Ri ● 実行例 LDUB @R2, R3 ; 命令のビットパターン:0000 0110 0010 0011 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 ×××× ×××× R3 0 0 0 0 0 0 2 1 メモリ 12345678 2 1 メモリ 12345678 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 2 1 実行後 297 第 7 章 命令細則 7.112 LDUB (Load Byte Data in Memory to Register) 7.112 FR81 ファミリ LDUB (Load Byte Data in Memory to Register) メモリの R13+Rj 番地のバイトデータをゼロ拡張し , Ri に格納します。 ● アセンブラ形式 LDUB @(R13, Rj), Ri ● オペレーション extu((R13+Rj)) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 298 LSB 0 0 0 0 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.112 LDUB (Load Byte Data in Memory to Register) FR81 ファミリ ● 実行例 LDUB @(R13, R2), R3 ; 命令のビットパターン:0000 0010 0010 0011 R2 0 0 0 0 0 0 0 4 R2 0 0 0 0 0 0 0 4 R3 ×××× ×××× R3 0 0 0 0 0 0 2 1 R13 1 2 3 4 R13 1 2 3 4 5 6 7 8 5 6 7 8 12345678 メモリ 12345678 メモリ 1234567C 2 1 1234567C 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 299 第 7 章 命令細則 7.113 LDUB (Load Byte Data in Memory to Register) 7.113 FR81 ファミリ LDUB (Load Byte Data in Memory to Register) メモリの R14+o8 番地のバイトデータをゼロ拡張し , Ri に格納します。o8 は符号付 きで計算します。o8 の値を disp8 として指定します。 ● アセンブラ形式 LDUB @(R14, disp8), Ri ● オペレーション extu((R14+o8)) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 300 LSB 1 1 0 o8 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.113 LDUB (Load Byte Data in Memory to Register) FR81 ファミリ ● 実行例 LDUB @(R14,1), R3 ; 命令のビットパターン:0110 0000 0001 0011 R3 ×××× ×××× R3 0 0 0 0 0 0 2 1 R14 1 2 3 4 R14 1 2 3 4 5 6 7 8 5 6 7 8 12345678 メモリ 12345678 メモリ 12345679 2 1 12345679 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 301 第 7 章 命令細則 7.114 LDUB (Load Byte Data in Memory to Register) 7.114 FR81 ファミリ LDUB (Load Byte Data in Memory to Register) メモリの BP+u16 番地のバイトデータを Ri に格納します。u16 は符号なしで計算し ます。u16 の値を udisp16 として指定します。 ● アセンブラ形式 LDUB @(BP, udisp16), Ri ● オペレーション (BP+u16) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 1 1 1 0 1 1 0 Ri u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出 302 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.115 LDUH (Load Halfword Data in Memory to Register) FR81 ファミリ 7.115 LDUH (Load Halfword Data in Memory to Register) メモリの Rj 番地のハーフワードデータをゼロ拡張し , Ri に格納します。 ● アセンブラ形式 LDUH @Rj, Ri ● オペレーション extu((Rj)) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 LSB 0 0 0 0 1 0 1 Rj Ri ● 実行例 LDUH @R2, R3 ; 命令のビットパターン:0000 0101 0010 0011 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 ×××× ×××× R3 0 0 0 0 4 3 2 1 メモリ 12345678 4 3 2 1 メモリ 12345678 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 4 3 2 1 実行後 303 第 7 章 命令細則 7.116 LDUH (Load Halfword Data in Memory to Register) 7.116 FR81 ファミリ LDUH (Load Halfword Data in Memory to Register) メモリの R13+Rj 番地のハーフワードデータをゼロ拡張し , Ri に格納します。 ● アセンブラ形式 LDUH @(R13, Rj), Ri ● オペレーション extu((R13+Rj)) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 304 LSB 0 0 0 0 0 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.116 LDUH (Load Halfword Data in Memory to Register) FR81 ファミリ ● 実行例 LDUH @(R13, R2), R3 ; 命令のビットパターン:0000 0001 0010 0011 R2 0 0 0 0 0 0 0 4 R2 0 0 0 0 0 0 0 4 R3 ×××× ×××× R3 0 0 0 0 4 3 2 1 R13 1 2 3 4 R13 1 2 3 4 5 6 7 8 5 6 7 8 12345678 メモリ 12345678 メモリ 1234567C 4 3 2 1 1234567C 4 3 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 305 第 7 章 命令細則 7.117 LDUH (Load Halfword Data in Memory to Register) 7.117 FR81 ファミリ LDUH (Load Halfword Data in Memory to Register) メモリの R14+o8 × 2 番地のハーフワードデータをゼロ拡張し , Ri に格納します。 o8 は符号付きで計算します。o8 × 2 の値を disp9 として指定します。 ● アセンブラ形式 LDUH @(R14, disp9), Ri ● オペレーション extu((R14+o8 × 2)) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 0 306 LSB 1 0 0 o8 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.117 LDUH (Load Halfword Data in Memory to Register) FR81 ファミリ ● 実行例 LDUH @(R14,2), R3 ; 命令のビットパターン:0100 0000 0001 0011 R3 ×××× ×××× R3 0 0 0 0 4 3 2 1 R14 1 2 3 4 R14 1 2 3 4 5 6 7 8 5 6 7 8 12345678 メモリ 12345678 メモリ 1234567A 4 3 2 1 1234567A 4 3 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 307 第 7 章 命令細則 7.118 LDUH (Load Halfword Data in Memory to Register) 7.118 FR81 ファミリ LDUH (Load Halfword Data in Memory to Register) メモリの BP+u16 × 2 番地のハーフワードデータを Ri に格納します。u16 は符号 なしで計算します。u16 × 2 の値を udisp17 として指定します。 ● アセンブラ形式 LD @(BP, udisp17), Ri ● オペレーション (BP+u16 × 2) → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリロード命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 0 0 1 1 1 0 1 0 1 Ri u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出 308 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.119 LEAVE (Leave Function) FR81 ファミリ 7.119 LEAVE (Leave Function) 高級言語用のスタックフレーム開放処理を行います。 ● アセンブラ形式 LEAVE ● オペレーション R14+4 → R15 (R15-4) → R14 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 b サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 1 1 1 1 1 0 0 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 309 第 7 章 命令細則 7.119 LEAVE (Leave Function) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 1111 1001 0000 LEAVE R14 7 F F F F F F 4 R14 8 0 0 0 0 0 0 0 R15 7 F F F F F E C R15 7 F F F F F F 8 メモリ メモリ 7FFFFFEC ×××× ×××× 7FFFFFEC ×××× ×××× 7FFFFFF0 ×××× ×××× 7FFFFFF0 ×××× ×××× 7FFFFFF4 8 0 0 0 7FFFFFF4 8 0 0 0 7FFFFFF8 ×××× ×××× 7FFFFFF8 ×××× ×××× 7FFFFFFC ×××× ×××× 7FFFFFFC ×××× ×××× 80000000 ×××× ×××× 80000000 ×××× ×××× 0 0 0 0 実行前 310 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.120 LSL (Logical Shift to the Left Direction) FR81 ファミリ 7.120 LSL (Logical Shift to the Left Direction) Ri のワードデータを左方向に Rj ビット論理シフトし , 結果を Ri に格納します。シ フト量を示す Rj は下位 5 ビットのみ有効で , 0 ∼ 31 が指定できます。 ● アセンブラ形式 LSL Rj, Ri ● オペレーション Ri << Rj → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。シフト量がゼロのときはクリア されます。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 1 0 1 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 311 第 7 章 命令細則 7.120 LSL (Logical Shift to the Left Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 0110 0010 0011 LSL R2, R3 R2 0 0 0 0 0 0 0 8 R2 0 0 0 0 0 0 0 8 R3 F F F F F F F F R3 F F F F F F 0 0 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 312 FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 CM71-00105-1 第 7 章 命令細則 7.121 LSL (Logical Shift to the Left Direction) FR81 ファミリ 7.121 LSL (Logical Shift to the Left Direction) Ri のワードデータを左方向に u4 ビット論理シフトし , 結果を Ri に格納します。 ● アセンブラ形式 LSL #u4, Ri ● オペレーション Ri << u4 → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。シフト量がゼロのときはクリア されます。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 1 1 0 1 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri 313 第 7 章 命令細則 7.121 LSL (Logical Shift to the Left Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 0100 1000 0011 LSL #8, R3 R3 F F F F F F F F R3 F F F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 314 F F 0 0 FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 CM71-00105-1 第 7 章 命令細則 7.122 LSL2 (Logical Shift to the Left Direction) FR81 ファミリ 7.122 LSL2 (Logical Shift to the Left Direction) Ri のワードデータを左方向に u4+16 ビット論理シフトし , 結果を Ri に格納します。 ● アセンブラ形式 LSL2 #u4, Ri ● オペレーション Ri << {u4+16} → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 1 1 0 1 0 1 u4 Ri ● 実行例 ; 命令のビットパターン:1011 0101 1000 0011 LSL2 #8, R3 R3 F F F F F F F F R3 F F 0 0 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 0 0 0 FUJITSU MICROELECTRONICS LIMITED 1 0 0 1 実行後 315 第 7 章 命令細則 7.123 LSR (Logical Shift to the Right Direction) 7.123 FR81 ファミリ LSR (Logical Shift to the Right Direction) Ri のワードデータを右方向に Rj ビット論理シフトし , 結果を Ri に格納します。シ フト量を示す Rj は下位 5 ビットのみ有効で , 0 ∼ 31 が指定可能な値となります。 ● アセンブラ形式 LSR Rj, Ri ● オペレーション Ri >> Rj → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。シフト量がゼロのときはクリア されます。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 316 LSB 0 1 1 0 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.123 LSR (Logical Shift to the Right Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 0010 0010 0011 LSR R2, R3 R2 0 0 0 0 0 0 0 8 R2 0 0 0 0 0 0 0 8 R3 F F F F F F F F R3 0 0 F F F F F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 1 実行後 317 第 7 章 命令細則 7.124 LSR (Logical Shift to the Right Direction) 7.124 FR81 ファミリ LSR (Logical Shift to the Right Direction) Ri のワードデータを右方向に u4 ビット論理シフトし , 結果を Ri に格納します。 ● アセンブラ形式 LSR #u4, Ri ● オペレーション Ri >> u4 → Ri ● フラグ変化 N C Z C V C C − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。シフト量がゼロのときはクリア されます。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 318 LSB 0 1 1 0 0 0 0 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.124 LSR (Logical Shift to the Right Direction) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1011 0000 1000 0011 LSR #8, R3 R3 F F F F F F F F R3 0 0 F F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 F F F F FUJITSU MICROELECTRONICS LIMITED 0 0 0 1 実行後 319 第 7 章 命令細則 7.125 LSR2 (Logical Shift to the Right Direction) 7.125 FR81 ファミリ LSR2 (Logical Shift to the Right Direction) Ri のワードデータを左方向に u4+16 ビット論理シフトし , 結果を Ri に格納します。 ● アセンブラ形式 LSR2 #u4, Ri ● オペレーション Ri >> {u4+16} → Ri ● フラグ変化 N C Z C V C C − N: クリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 変化しません。 C: 最後にシフトアウトしたビットの内容が入ります。 ● 分類 シフト演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 1 1 0 0 0 1 u4 Ri ● 実行例 ; 命令のビットパターン:1011 0001 1000 0011 LSR2 #8, R3 R3 R2 R3 CCR 8F 7F 6F 5F 4F 3F 2F 1F ×××× ×××× N Z V C 0 0 0 0 実行前 R3 R2 08 07 06 05 04 03 F2 F1 R3 8 7 6 5 4 N3 Z2V1C CCR 実行前 320 FUJITSU MICROELECTRONICS LIMITED 0 0 0 1 実行後 実行後 CM71-00105-1 第 7 章 命令細則 7.126 MOV (Move Word Data in Source Register to Destination Register) FR81 ファミリ 7.126 MOV (Move Word Data in Source Register to Destination Register) Rj のワードデータを Ri に格納します。 ● アセンブラ形式 MOV Rj, Ri ● オペレーション Rj → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 レジスタ間転送命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 0 1 0 1 1 Rj Ri ● 実行例 ; 命令のビットパターン:1000 1011 0010 0011 MOV R2, R3 R2 R3 4 3 2 1 R2 8 7 6 5 4 3 2 1 ×××× ×××× R3 8 7 6 5 4 3 2 1 8 7 6 5 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 321 第 7 章 命令細則 7.127 MOV (Move Word Data in Source Register to Destination Register) 7.127 FR81 ファミリ MOV (Move Word Data in Source Register to Destination Register) 専用レジスタ Rs のワードデータを汎用レジスタ Ri に格納します。 ● アセンブラ形式 MOV Rs, Ri ● オペレーション Rs → Ri Rs として専用レジスタの存在しない番号を指定した場合 , 不定値が転送されます。 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 レジスタ間転送命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 1 1 0 1 1 1 Rs Ri ● 実行例 MOV MDL, R3 ; 命令のビットパターン:1011 0111 0101 0011 R3 ×××× ×××× R3 8 7 6 5 4 3 2 1 MDL 8 7 6 5 MDL 8 7 6 5 4 3 2 1 4 3 2 1 実行前 322 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.128 MOV (Move Word Data in Program Status Register to Destination Register) FR81 ファミリ 7.128 MOV (Move Word Data in Program Status Register to Destination Register) プログラムステータス (PS) のワードデータを汎用レジスタ Ri に格納します。 ● アセンブラ形式 MOV PS, Ri ● オペレーション PS → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 レジスタ間転送命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 0 LSB 0 0 1 0 1 1 1 0 0 0 1 Ri ● 実行例 ; 命令のビットパターン:0001 0111 0001 0011 MOV PS, R3 R3 ×××× ×××× R3 F F F 8 F 8 C 0 PS F F F 8 PS F F F 8 F 8 C 0 F 8 C 0 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 323 第 7 章 命令細則 7.129 MOV (Move Word Data in Source Register to Destination Register) 7.129 FR81 ファミリ MOV (Move Word Data in Source Register to Destination Register) 汎用レジスタ Ri のワードデータを専用レジスタ Rs に格納します。 ● アセンブラ形式 MOV Ri, Rs ● オペレーション Ri → Rs ユーザモードで TBR,SSP,ESR を指定した場合 , または RS として専用レジスタの存在 しない番号を指定した場合は , 不正命令例外 ( システム専用レジスタアクセス ) を発 生します。 特権モードには制約はありません。特権モードで , Rs として専用レジスタの存在しな い番号を指定した場合 , 読み出した Ri の値は捨てられます。 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 レジスタ間転送命令 , 遅延スロット可 , FR81 更新 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 324 LSB 0 1 1 0 0 1 1 Rs FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.129 MOV (Move Word Data in Source Register to Destination Register) FR81 ファミリ ● EIT 発生と検出 ユーザモード : 不正命令例外 ( システム専用レジスタアクセス ) を発生 , 割込みを検出します。 特権モード : 割込みを検出します。 ● 実行例 MOV R3, MDL ; 命令のビットパターン:1011 0011 0101 0011 R3 8 7 6 5 MDL ×××× ×××× 4 3 2 1 R3 8 7 6 5 4 3 2 1 MDL 8 7 6 5 4 3 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 325 第 7 章 命令細則 7.130 MOV (Move Word Data in Source Register to Program Status Register) 7.130 FR81 ファミリ MOV (Move Word Data in Source Register to Program Status Register) 汎用レジスタ Ri のワードデータをプログラムステータス (PS) に格納します。 ● アセンブラ形式 MOV Ri, PS ● オペレーション Ri → PS システムステータスレジスタ (SSR) の内容は , 動作モードに関係なく , この命令では変 更できません。ユーザモードで実行した場合変更できるのは , D1,D0,N,Z,V,C フラグの みで , それ以外に値は更新されません。特権モードでは SSR 以外のビットの変更が可 能です。 命令実行時の割込みレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のとき , ILM に新た な値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定するデータが Ri に入っていた 場合 , 指定した値 +16 が ILM に転送されます。元の値が 0 ∼ 15 のときは 0 ∼ 31 の任 意の値を ILM に転送できます。 ● フラグ変化 N C Z C V C C C N, Z, V, C: Ri のデータが転送されます。 ● 分類 レジスタ間転送命令 , 遅延スロット可 , FR81 更新 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 0 326 LSB 0 0 0 0 1 1 1 0 0 0 1 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.130 MOV (Move Word Data in Source Register to Program Status Register) FR81 ファミリ ● EIT 発生と検出 割込みを検出します。 ● 実行例 ; 命令のビットパターン:0000 0111 0001 0011 MOV R3, PS R3 F F F 3 PS ×××× ×××× F 8 D 5 R3 F F F 3 F 8 D 5 PS F F F 3 F 8 D 5 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 327 第 7 章 命令細則 7.131 MOV (Move Word Data in General Purpose Register to Floating Point Register) 7.131 FR81 ファミリ MOV (Move Word Data in General Purpose Register to Floating Point Register) Rj の値を FRi に転送します。 ● アセンブラ形式 MOV Rj, FRi ● オペレーション MOV Rj, FRi ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 0 0 1 1 1 0 0 - 1 - 1 Rj FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), 割込みを検出 328 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.132 MOV (Move Word Data in Floating Point Register to General Purpose Register) FR81 ファミリ 7.132 MOV (Move Word Data in Floating Point Register to General Purpose Register) FRi の値を Rj に転送します。 ● アセンブラ形式 MOV FRi, Rj ● オペレーション FRi → Rj ● 分類 単精度浮動小数点命令 , FR81 ファミリ ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 - 1 0 1 1 1 0 0 - 1 - 1 Rj FRi ● EIT 発生と検出 不正命令例外 (FPU 不在エラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 329 第 7 章 命令細則 7.133 MUL (Multiply Word Data) 7.133 FR81 ファミリ MUL (Multiply Word Data) Ri のワードデータと Rj のワードデータを符号付き数値として乗算し , 結果である符 号付き 64 ビットデータの上位ワードを乗除算レジスタ (MDH) に , 下位ワードを乗 除算レジスタ (MDL) に格納します。 ● アセンブラ形式 MUL Rj, Ri ● オペレーション Ri × Rj → MDH, MDL ● フラグ変化 N C Z C V C C − N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果の MDL の内容がゼロならばセット , それ以外ならクリアされます。 V: 演算結果が -2147483648 ∼ 2147483647 のときクリアされ , それ以外のときセット されます。 C: 変化しません。 ● 分類 乗除算命令 ● 実行サイクル数 5 サイクル ● 命令フォーマット MSB 1 330 LSB 0 1 0 1 1 1 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.133 MUL (Multiply Word Data) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 1111 0010 0011 MUL R2, R3 R2 0 0 0 0 0 0 0 2 R2 0 0 0 0 0 0 0 2 R3 8 0 0 0 0 0 0 1 R3 8 0 0 0 0 0 0 1 MDH ×××× ×××× MDH F F F F F F F F MDL ×××× ×××× MDL 0 0 0 0 0 0 0 2 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 0 0 1 0 実行後 331 第 7 章 命令細則 7.134 MULH (Multiply Halfword Data) 7.134 FR81 ファミリ MULH (Multiply Halfword Data) Ri の下位 16 ビットのハーフワードデータと , Rj の下位 16 ビットのハーフワード データを符号付数値として乗算し , 結果である符号付き 32 ビットデータを乗除算レ ジスタ (MDL) に格納します。乗除算レジスタ (MDH) は不定です。 ● アセンブラ形式 MULH Rj, Ri ● オペレーション Ri × Rj → MDL ● フラグ変化 N C Z C V C − − N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果の MDL の内容がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 乗除算命令 ● 実行サイクル数 3 サイクル ● 命令フォーマット MSB 1 332 LSB 0 1 1 1 1 1 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.134 MULH (Multiply Halfword Data) FR81 ファミリ ● 実行例 MULH R2, R3 ; 命令のビットパターン:1011 1111 0010 0011 R2 F E D C B A 9 8 R2 F E D C B A 9 8 R3 0 1 2 3 4 5 6 7 R3 0 1 2 3 4 5 6 7 MDH ×××× ×××× MDH ×××× ×××× MDL ×××× ×××× MDL E D 2 F N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 B 2 8 FUJITSU MICROELECTRONICS LIMITED 1 0 0 0 実行後 333 第 7 章 命令細則 7.135 MULU (Multiply Unsigned Word Data) 7.135 FR81 ファミリ MULU (Multiply Unsigned Word Data) Ri のワードデータと Rj のワードデータを符号なし数値として乗算し , 結果である符 号なし 64 ビットデータの上位ワードを乗除算レジスタ (MDH) に , 下位ワードを乗 除算レジスタ (MDL) に格納します。 ● アセンブラ形式 MULU Rj, Ri ● オペレーション Ri × Rj → MDH, MDL ● フラグ変化 N C Z C V C C − N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果の MDL の内容がゼロならばセット , それ以外ならクリアされます。 V: 演算結果が 0 ∼ 4294967295 のときクリアされ , それ以外のときセットされます。 C: 変化しません。 ● 分類 乗除算命令 ● 実行サイクル数 5 サイクル ● 命令フォーマット MSB 1 334 LSB 0 1 0 1 0 1 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.135 MULU (Multiply Unsigned Word Data) FR81 ファミリ ● 実行例 MULU R2, R3 ; 命令のビットパターン:1010 1011 0010 0011 R2 0 0 0 0 0 0 0 2 R2 0 0 0 0 0 0 0 2 R3 8 0 0 0 0 0 0 1 R3 8 0 0 0 0 0 0 1 MDH ×××× ×××× MDH 0 0 0 0 0 0 0 1 MDL ×××× ×××× MDL 0 0 0 0 0 0 0 2 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 0 0 1 0 実行後 335 第 7 章 命令細則 7.136 MULUH (Multiply Unsigned Halfword Data) 7.136 FR81 ファミリ MULUH (Multiply Unsigned Halfword Data) Ri の下位 16 ビットのハーフワードデータと , Rj の下位 16 ビットのハーフワード データを符号なし数値として乗算し , 結果である符号なし 32 ビットデータを乗除算 レジスタ (MDL) に格納します。乗除算レジスタ (MDH) は不定です。 ● アセンブラ形式 MULUH Rj, Ri ● オペレーション Ri × Rj → MDL ● フラグ変化 N C Z C V C − − N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果の MDL の内容がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 乗除算命令 ● 実行サイクル数 3 サイクル ● 命令フォーマット MSB 1 336 LSB 0 1 1 1 0 1 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.136 MULUH (Multiply Unsigned Halfword Data) FR81 ファミリ ● 実行例 MULUH R2, R3 ; 命令のビットパターン:1011 1011 0010 0011 R2 F E D C B A 9 8 R2 F E D C B A 9 8 R3 0 1 2 3 4 5 6 7 R3 0 1 2 3 4 5 6 7 MDH ×××× ×××× MDH ×××× ×××× MDL ×××× ×××× MDL 3 2 9 6 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 0 B 2 8 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 337 第 7 章 命令細則 7.137 NOP (No Operation) 7.137 FR81 ファミリ NOP (No Operation) 何も動作しません。 ● アセンブラ形式 NOP ● オペレーション 何も動作しません。 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 ● 実行例 ; 命令のビットパターン:1001 1111 1010 0000 NOP PC 8 3 4 3 8 3 4 A PC 8 3 4 3 実行前 338 FUJITSU MICROELECTRONICS LIMITED 8 3 4 C 実行後 CM71-00105-1 第 7 章 命令細則 7.138 OR (Or Word Data of Source Register to Data in Memory) FR81 ファミリ 7.138 OR (Or Word Data of Source Register to Data in Memory) メモリの Ri 番地のワードデータと Rj のワードデータの論理和演算 (OR) を行い , 結 果をメモリの Ri 番地に格納します。 ● アセンブラ形式 OR Rj,@Ri ● オペレーション (Ri) | Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 1 0 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 339 第 7 章 命令細則 7.138 OR (Or Word Data of Source Register to Data in Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 0100 0010 0011 OR R2,@R3 R2 1 1 1 1 0 0 0 0 R2 1 1 1 1 0 0 0 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 1 0 1 0 1 0 1 0 メモリ 12345678 N Z V C 0 0 0 0 N Z V C CCR 実行前 340 1 0 1 0 1234567C 1234567C CCR 1 1 1 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.139 OR (Or Word Data of Source Register to Destination Register) FR81 ファミリ 7.139 OR (Or Word Data of Source Register to Destination Register) Ri のワードデータと Rj のワードデータの論理和演算 (OR) を行い , 結果を Ri に格納 します。 ● アセンブラ形式 OR Rj, Ri ● オペレーション Ri | Rj → Ri ● フラグ変化 N C Z C V C − − N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 341 第 7 章 命令細則 7.139 OR (Or Word Data of Source Register to Destination Register) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1001 0010 0010 0011 OR R2, R3 R2 1 1 1 1 0 0 0 0 R2 1 1 1 1 0 0 0 0 R3 1 0 1 0 1 0 1 0 R3 1 1 1 1 1 0 1 0 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 342 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.140 ORB (Or Byte Data of Source Register to Data in Memory) FR81 ファミリ 7.140 ORB (Or Byte Data of Source Register to Data in Memory) メモリの Ri 番地のバイトデータと Rj のバイトデータの論理和演算 (OR) を行い , 結 果をメモリの Ri 番地に格納します。 ● アセンブラ形式 ORB Rj,@Ri ● オペレーション (Ri) | Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 1 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri 343 第 7 章 命令細則 7.140 ORB (Or Byte Data of Source Register to Data in Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 0110 0010 0011 ORB R2,@R3 R2 0 0 0 0 0 0 1 1 R2 0 0 0 0 0 0 1 1 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 メモリ 12345678 1 0 12345679 12345679 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 344 1 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.141 ORCCR (Or Condition Code Register and Immediate Data) FR81 ファミリ 7.141 ORCCR (Or Condition Code Register and Immediate Data) コンディションコードレジスタ (CCR) のバイトデータと即値データとで論理和演算 (OR) を行い , 結果を CCR に戻します。 ● アセンブラ形式 ORCCR #u8 ● オペレーション ユーザーモード: CCR | (u8 & CFH) → CCR 特権モード: CCR | u8 → CCR ユーザモードでは , スタックフラグ (S), 割込み許可フラグ (I) の書換えは無視します。 特権モードでのみ S フラグ , I フラグの変更が可能です。 ● フラグ変化 S C I C N C Z C V C C C S, I, N, Z, V, C: 演算結果に従い変化します。 ● 分類 その他の命令 , 遅延スロット可 , FR81 更新 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 0 1 1 u8 ● EIT 発生と検出 割込みを検出 (I フラグの値は命令実行後の値を使用 ) します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 345 第 7 章 命令細則 7.141 ORCCR (Or Condition Code Register and Immediate Data) ● 実行例 ORCCR #10H FR81 ファミリ ; 命令のビットパターン:1001 0011 0001 0000 S I N Z V C CCR 0 0 0 1 0 1 S I N Z V C CCR 実行前 346 0 1 0 1 0 1 実行後 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.142 ORH (Or Halfword Data of Source Register to Data in Memory) FR81 ファミリ 7.142 ORH (Or Halfword Data of Source Register to Data in Memory) メモリの Ri 番地のハーフワードデータと Rj のハーフワードデータの論理和演算 (OR) を行い , 結果をメモリの Ri 番地に格納します。 ● アセンブラ形式 ORH Rj,@Ri ● オペレーション (Ri) | Rj → (Ri) ● フラグ変化 N C Z C V C − − N: 演算結果の MSB( ビット 15) が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V, C: 変化しません。 ● 分類 論理演算命令 , リードモディファイライト系命令 ● 実行サイクル数 1+2a サイクル ● 命令フォーマット MSB 1 CM71-00105-1 LSB 0 0 1 0 1 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri 347 第 7 章 命令細則 7.142 ORH (Or Halfword Data of Source Register to Data in Memory) ● 実行例 FR81 ファミリ ; 命令のビットパターン:1001 0101 0010 0011 ORH R2,@R3 R2 0 0 0 0 1 1 0 0 R2 0 0 0 0 1 1 0 0 R3 1 2 3 4 5 6 7 8 R3 1 2 3 4 5 6 7 8 メモリ 12345678 メモリ 12345678 1 0 1 0 1234567A 1234567A N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 348 1 1 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 CM71-00105-1 第 7 章 命令細則 7.143 RET (Return from Subroutine) FR81 ファミリ 7.143 RET (Return from Subroutine) 遅延スロットのない分岐命令です。リターンポインタ (RP) の示すアドレスへ分岐し ます。サブルーチンからの復帰に使用します。 ● アセンブラ形式 RET ● オペレーション RP → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延なし分岐命令 ● 実行サイクル数 2 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 ● 実行例 ; 命令のビットパターン:1001 0111 0010 0000 RET PC F F F 0 8 8 2 0 PC 8 0 0 0 A E 8 6 RP 8 0 0 0 A E 8 6 RP 8 0 0 0 A E 8 6 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 349 第 7 章 命令細則 7.144 RET:D (Return from Subroutine) 7.144 FR81 ファミリ RET:D (Return from Subroutine) 遅延スロット付きの分岐命令です。リターンポインタ (RP) の示すアドレスへ分岐し ます。サブルーチンからの復帰に使用します。 ● アセンブラ形式 RET:D ● オペレーション RP → PC ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 遅延分岐命令 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 350 LSB 0 0 1 1 1 1 1 0 0 1 0 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 CM71-00105-1 第 7 章 命令細則 7.144 RET:D (Return from Subroutine) FR81 ファミリ ● 実行例 RET:D ; 命令のビットパターン:1001 1111 0010 0000 MOV R0, R1 ; 遅延スロットに置かれた命令 R0 0 0 1 1 2 2 3 3 R0 0 0 1 1 2 2 3 3 R1 ×××× ×××× R1 0 0 1 1 2 2 3 3 PC F F F 0 8 8 2 0 PC 8 0 0 0 A E 8 6 RP 8 0 0 0 A E 8 6 RP 8 0 0 0 A E 8 6 RET命令実行前 分岐後 分岐先の命令の実行前に , 遅延スロットに置かれた命令が実行されます。上記の R1 は遅延スロットに置かれた MOV 命令により変化します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 351 第 7 章 命令細則 7.145 RETI (Return from Interrupt) 7.145 FR81 ファミリ RETI (Return from Interrupt) システムスタックポインタ (SSP) の示すシステムスタックからデータを取り出し , プログラムカウンタ (PC) およびプログラムステータス (PS) に格納し , EIT 処理ハン ドラから復帰します。 ● アセンブラ形式 RETI ● オペレーション • 通常走行状態 (SSP) → PC SSP+4 → SSP (SSP) → PS SSP+4 → SSP • デバッグステート PC 退避レジスタ (PCSR) → PC PS 退避レジスタ (PSSR) → PS (PC) の命令実行 この命令は特権命令です。特権モードでのみ実行可能です。ユーザモードで実行した 場合は不正命令例外 ( 特権命令実行 ) を発生します。 通常走行状態で実行した場合とデバッグステートで実行した場合とで動作が異なりま す。デバッグステートで実行した場合は , スタックを使用せずに DSU レジスタを使用 し , 次の命令実行完了まで割込みの受付を保留します。従って , デバッグステートから の RETI 命令実行後は必ず 1 命令実行することが保証されます。 命令実行時にプログラムステータス (PS) の割込みレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のとき , ILM に新たな値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定 するデータがメモリに入っていた場合は , 指定した値に 16 を加算した値が ILM に転送 されます。元の値が 0 ∼ 15 の場合は 0 ∼ 31 の任意の値を ILM に転送できます。 ● フラグ変化 S C I C N C Z C V C C C D2, D1, S, I, N, Z, V, C: スタックから取り出した値に応じて変化します。 352 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.145 RETI (Return from Interrupt) FR81 ファミリ ● 分類 遅延なし分岐命令 , FR81 更新 ● 実行サイクル数 1+2b サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 ● EIT 発生と検出 ユーザモード : 不正命令例外 ( 特権命令実行 ) を発生します。 特権モード : データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検 出します。割込みレベルの判定はスタックから復帰される値で判定を行います。 デバッグステート : EIT は受け付けません。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 353 第 7 章 命令細則 7.145 RETI (Return from Interrupt) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1001 0111 0011 0000 RETI R15 7 F F F F F F 8 R15 4 0 0 0 0 0 0 0 SSP 7 F F F F F F 8 SSP 8 0 0 0 0 0 0 0 USP 4 0 0 0 0 0 0 0 USP 4 0 0 0 0 0 0 0 PC F F 0 0 9 0 B C PC 8 0 8 8 8 0 8 8 PS F F F 0 F 8 D 4 PS F F F 3 F 8 F 1 1 0 0 0 0 ILM S I N Z V C CCR 0 1 0 1 0 0 S I N Z V C CCR メモリ 1 1 0 0 0 1 メモリ 7FFFFFF8 8 0 8 8 8 0 8 8 7FFFFFF8 8 0 8 8 8 0 8 8 7FFFFFFC F F F 3 F 8 F 1 7FFFFFFC F F F 3 F 8 F 1 ×××× ×××× 80000000 ×××× ×××× 80000000 実行前 354 1 0 0 1 1 ILM FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.146 SRCH0 (Search First Zero bit position distance From MSB) FR81 ファミリ 7.146 SRCH0 (Search First Zero bit position distance From MSB) ビットサーチ用の "0" サーチ命令です。Ri のワードデータを MSB(bit31) から "0" と比較を行い , 最初に見つかった "0" のビット MSB(bit31) からの距離を Ri に格納 します。 ● アセンブラ形式 SRCH0 Ri ● オペレーション search_zero(Ri) → Ri "0" のビットが見つからなかった場合 (Ri のワードデータがすべて "1" ビットの場合 ) は , Ri に 32 が格納されます。MSB(bit31) が "0" の場合には , Ri に 0 が格納されます。 LSB(bit0) が "0" で , それ以外のビットが "1" の場合には , Ri に 31 が格納されます。 命令実行前の Ri のビットパターンと , 命令実行後に Ri に格納される値との関係を 表 7.146-1 に示します。 表 7.146-1 SRCH0 命令の入力ビットパターンと結果 入力(命令実行前の Ri のビットパターン) 11111111_11111111_11111111_11111111 0xxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 10xxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 110xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 1110xxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx ・・・ 11111111_11111111_11111111_11110xxx 11111111_11111111_11111111_111110xx 11111111_11111111_11111111_1111110x 11111111_11111111_11111111_11111110 結果 32 0 1 2 3 28 29 30 31 備考 見つからなかった MSB(bit31) が "1" LSB(bit0) だけが "0" ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 355 第 7 章 命令細則 7.146 SRCH0 (Search First Zero bit position distance From MSB) ● 分類 FR81 ファミリ ビットサーチ命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 0 LSB 0 1 0 1 1 1 1 1 0 0 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1100 0010 SRCH0 R2 R2 F C 3 4 5 6 7 8 R2 0 0 0 0 実行前 356 FUJITSU MICROELECTRONICS LIMITED 0 0 0 6 実行後 CM71-00105-1 第 7 章 命令細則 7.147 SRCH1 (Search First One bit position distance From MSB) FR81 ファミリ 7.147 SRCH1 (Search First One bit position distance From MSB) ビットサーチ用の "1" サーチ命令です。Ri のワードデータを MSB(bit31) から "1" と比較を行い , 最初に見つかった "1" のビット MSB(bit31) からの距離を Ri に格納 します。 ● アセンブラ形式 SRCH1 Ri ● オペレーション search_one(Ri) → Ri "1" のビットが見つからなかった場合 (Ri のワードデータがすべて "0" ビットの場合 ) は , Ri に 32 が格納されます。MSB(bit31) が "1" の場合には , Ri に 0 が格納されます。 LSB(bit0) が "1" で , それ以外のビットが "0" の場合には , Ri に 31 が格納されます。 命令実行前の Ri のビットバターンと , 命令実行後に Ri に格納される値との関係を表 7.147-1 に示します。 表 7.147-1 SRCH1 命令の入力ビットパターンと結果 入力(命令実行前の Ri のビットパターン) 00000000_00000000_00000000_00000000 1xxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 01xxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 001xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 0001xxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx ・・・ 00000000_00000000_00000000_00001xxx 00000000_00000000_00000000_000001xx 00000000_00000000_00000000_0000001x 00000000_00000000_00000000_00000001 結果 32 0 1 2 3 28 29 30 31 備考 見つからなかった MSB(bit31) が "0" LSB(bit0) だけが "0" ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 357 第 7 章 命令細則 7.147 SRCH1 (Search First One bit position distance From MSB) FR81 ファミリ ● 分類 ビットサーチ命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 1 1 0 1 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1101 0010 SRCH0 R2 R2 0 0 3 4 5 6 7 8 R2 0 0 0 0 実行前 358 FUJITSU MICROELECTRONICS LIMITED 0 0 0 A 実行後 CM71-00105-1 第 7 章 命令細則 7.148 SRCHC (Search First bit value change position distance From MSB) FR81 ファミリ 7.148 SRCHC (Search First bit value change position distance From MSB) ビットサーチ用の変化点サーチ命令です。Ri のデータを MSB(bit31) と比較し , 最初 に見つかった MSB(bit31) と異なる値のビットの MSB(bit31) からの距離を Ri に格 納します。 ● アセンブラ形式 SRCHC Ri ● オペレーション search_change(Ri) → Ri すべてのビットが同じ値の場合は , Ri に 32 が格納されます。MSB(bit31) とその隣の bit30 のビットの値が異なっていた場合は , Ri に 1 が格納されます。LSB(bit0) のみビッ トの値が異なっていた場合は , Ri に 31 が格納されます。 命令実行前の Ri のビットバターンと , 命令実行後に Ri に格納される値との関係を表 7.148-1 に示します。 表 7.148-1 SRCHC 命令の入力ビットパターンと結果 入力(命令実行前の Ri のビットパターン) 00000000_00000000_00000000_00000000 11111111_11111111_11111111_11111111 01xxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 10xxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 001xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 110xxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 0001xxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 1110xxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 00001xxx_xxxxxxxx_xxxxxxxx_xxxxxxxx 11110xxx_xxxxxxxx_xxxxxxxx_xxxxxxxx ・・・ 00000000_00000000_00000000_00001xxx 11111111_11111111_11111111_11110xxx 00000000_00000000_00000000_000001xx 11111111_11111111_11111111_111110xx 00000000_00000000_00000000_0000001x 11111111_11111111_11111111_1111110x 00000000_00000000_00000000_00000001 11111111_11111111_11111111_11111110 * 結果 (Ri) の値が 0 になることはありません。 CM71-00105-1 結果 備考 32 見つからなかった 1 MSB(bit31) と bit30 のビットの値が相違 2 3 4 28 29 30 31 FUJITSU MICROELECTRONICS LIMITED LSB(bit0) だけビット の値が相違 359 第 7 章 命令細則 7.148 SRCHC (Search First bit value change position distance From MSB) ● フラグ変化 N Z V C − − − − FR81 ファミリ N, Z, V, C: 変化しません。 ● 分類 ビットサーチ命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 LSB 0 0 1 0 1 1 1 1 1 1 0 Ri ● 実行例 ; 命令のビットパターン:1001 0111 1110 0010 SRCHC R2 R2 F F 3 4 5 6 7 8 R2 0 0 0 0 実行前 360 FUJITSU MICROELECTRONICS LIMITED 0 0 0 8 実行後 CM71-00105-1 第 7 章 命令細則 7.149 ST (Store Word Data in Register to Memory) FR81 ファミリ 7.149 ST (Store Word Data in Register to Memory) Ri のワードデータをメモリの Rj 番地に格納します。 ● アセンブラ形式 ST Ri,@Rj ● オペレーション Ri → (Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 LSB 0 0 1 0 1 0 0 Rj Ri ● 実行例 ; 命令のビットパターン:0001 0100 0010 0011 ST R3,@R2 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 8 7 6 5 4 3 2 1 R3 8 7 6 5 4 3 2 1 メモリ 12345678 ×××× ×××× メモリ 12345678 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 8 7 6 5 4 3 2 1 実行後 361 第 7 章 命令細則 7.150 ST (Store Word Data in Register to Memory) 7.150 FR81 ファミリ ST (Store Word Data in Register to Memory) Ri のワードデータをメモリの R13+Rj 番地に格納します。 ● アセンブラ形式 ST Ri,@(R13, Rj) ● オペレーション Ri → (R13+Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 362 LSB 0 0 1 0 0 0 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.150 ST (Store Word Data in Register to Memory) FR81 ファミリ ● 実行例 ST R3,@(R13, R2) ; 命令のビットパターン:0001 0000 0010 0011 R2 0 0 0 0 0 0 0 4 R2 0 0 0 0 0 0 0 4 R3 8 7 6 5 4 3 2 1 R3 8 7 6 5 4 3 2 1 R13 1 2 3 4 5 6 7 8 R13 1 2 3 4 5 6 7 8 12345678 1234567C メモリ ×××× ×××× 12345678 1234567C 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 363 第 7 章 命令細則 7.151 ST (Store Word Data in Register to Memory) 7.151 FR81 ファミリ ST (Store Word Data in Register to Memory) Ri のワードデータをメモリの R14+o8 × 4 番地に格納します。o8 は符号付きで計 算します。o8 × 4 の値を disp10 として指定します。 ● アセンブラ形式 ST Ri,@(R14, disp10) ● オペレーション Ri → (R14+o8 × 4) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 364 LSB 0 1 1 o8 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.151 ST (Store Word Data in Register to Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0011 0000 0001 0011 ST R3,@(R14,4) R3 8 7 6 5 4 3 2 1 R3 8 7 6 5 4 3 2 1 R14 1 2 3 4 5 6 7 8 R14 1 2 3 4 5 6 7 8 12345678 メモリ 12345678 1234567C ×××× ×××× 1234567C 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 365 第 7 章 命令細則 7.152 ST (Store Word Data in Register to Memory) 7.152 FR81 ファミリ ST (Store Word Data in Register to Memory) Ri のワードデータをメモリの R15+u4 × 4 番地に格納します。u4 は符号なしで計 算します。u4 × 4 の値を udisp6 として指定します。 ● アセンブラ形式 ST Ri,@(R15, udisp6) ● オペレーション Ri → (R15+u4 × 4) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 366 LSB 0 0 1 0 0 1 1 u4 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.152 ST (Store Word Data in Register to Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0001 0011 0001 0011 ST R3,@(R15,4) R3 8 7 6 5 4 3 2 1 R3 8 7 6 5 4 3 2 1 R15 1 2 3 4 5 6 7 8 R15 1 2 3 4 5 6 7 8 12345678 メモリ 12345678 1234567C ×××× ×××× 1234567C 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 367 第 7 章 命令細則 7.153 ST (Store Word Data in Register to Memory) 7.153 FR81 ファミリ ST (Store Word Data in Register to Memory) R15 から 4 を減算し , Ri のワードデータをメモリの新しい R15 が示す番地に格納し ます。Ri として R15 を指定した場合は , 減算前の R15 の値を転送します。 ● アセンブラ形式 ST Ri,@-R15 ● オペレーション R15 - 4 → R15 Ri → (R15) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 368 LSB 0 0 1 0 1 1 1 0 0 0 0 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.153 ST (Store Word Data in Register to Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0001 0111 0000 0011 ST R3,@-R15 R3 8 7 6 5 4 3 2 1 R3 8 7 6 5 4 3 2 1 R15 1 2 3 4 5 6 7 8 R15 1 2 3 4 5 6 7 4 メモリ 12345674 ×××× ×××× 12345678 メモリ 12345674 4 3 2 1 12345678 実行前 CM71-00105-1 8 7 6 5 FUJITSU MICROELECTRONICS LIMITED 実行後 369 第 7 章 命令細則 7.154 ST (Store Word Data in Register to Memory) 7.154 FR81 ファミリ ST (Store Word Data in Register to Memory) Ri のワードデータを , メモリの BP+u16 × 4 番地に格納します。u16 は符号なしで 計算します。u16 × 4 の値を udisp18 として指定します。 ● アセンブラ形式 ST Ri, @(BP, udisp18) ● オペレーション Ri → (BP+u16 × 4) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 1 0 1 1 1 0 1 0 0 Ri u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出 370 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.155 ST (Store Word Data in Register to Memory) FR81 ファミリ 7.155 ST (Store Word Data in Register to Memory) R15 から 4 を減算し , 専用レジスタ Rs のワードデータをメモリの R15 が示す番地 に格納します。 ● アセンブラ形式 ST Rs,@-R15 ● オペレーション R15 - 4 → R15 Rs → (R15) Rs として専用レジスタの存在しない番号を指定した場合 , 不定値が転送されます。 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 0 1 1 1 1 0 0 0 FUJITSU MICROELECTRONICS LIMITED Rs 371 第 7 章 命令細則 7.155 ST (Store Word Data in Register to Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0001 0111 1000 0100 ST MDH,@-R15 R15 1 2 3 4 5 6 7 8 R15 1 2 3 4 5 6 7 4 MDH 8 7 6 5 4 3 2 1 MDH 8 7 6 5 4 3 2 1 12345670 メモリ 12345670 12345674 ×××× ×××× 12345674 実行前 372 FUJITSU MICROELECTRONICS LIMITED メモリ 8 7 6 5 4 3 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.156 ST (Store Word Data in Program Status Register to Memory) FR81 ファミリ 7.156 ST (Store Word Data in Program Status Register to Memory) R15 から 4 を減算し , プログラムステータス (PS) のワードデータをメモリの R15 の 示す番地に格納します。 ● アセンブラ形式 ST PS,@-R15 ● オペレーション R15 - 4 → R15 PS → (R15) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 0 1 1 1 1 0 0 1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 373 第 7 章 命令細則 7.156 ST (Store Word Data in Program Status Register to Memory) ● 実行例 FR81 ファミリ ; 命令のビットパターン:0001 0111 1001 0000 ST PS,@-R15 R15 1 2 3 4 5 6 7 8 R15 1 2 3 4 5 6 7 4 PS F F F 8 F 8 C 0 PS F F F 8 F 8 C 0 12345670 メモリ 12345670 12345674 ×××× ×××× 12345674 実行前 374 FUJITSU MICROELECTRONICS LIMITED メモリ F F F 8 F 8 C 0 実行後 CM71-00105-1 第 7 章 命令細則 7.157 STB (Store Byte Data in Register to Memory) FR81 ファミリ 7.157 STB (Store Byte Data in Register to Memory) Ri のバイトデータをメモリの Rj 番地に格納します。 ● アセンブラ形式 STB Ri,@Rj ● オペレーション Ri → (Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 LSB 0 0 1 0 1 1 0 Rj Ri ● 実行例 ; 命令のビットパターン:0001 0110 0010 0011 STB R3,@R2 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 0 0 0 0 0 0 2 1 R3 0 0 0 0 0 0 2 1 メモリ 12345678 ×× メモリ 12345678 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 2 1 実行後 375 第 7 章 命令細則 7.158 STB (Store Byte Data in Register to Memory) 7.158 FR81 ファミリ STB (Store Byte Data in Register to Memory) Ri のバイトデータをメモリの R13+Rj 番地に格納します。 ● アセンブラ形式 STB Ri,@(R13, Rj) ● オペレーション Ri → (R13+Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 376 0 LSB 0 1 0 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.158 STB (Store Byte Data in Register to Memory) FR81 ファミリ ● 実行例 STB R3,@(R13, R2) ; 命令のビットパターン:0001 0010 0010 0011 R2 0 0 0 0 0 0 0 4 R2 0 0 0 0 0 0 0 4 R3 0 0 0 0 0 0 2 1 R3 0 0 0 0 0 0 2 1 R13 1 2 3 4 5 6 7 8 R13 1 2 3 4 5 6 7 8 1234567B メモリ 1234567B メモリ 1234567C ×× 1234567C 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 377 第 7 章 命令細則 7.159 STB (Store Byte Data in Register to Memory) 7.159 FR81 ファミリ STB (Store Byte Data in Register to Memory) Ri のバイトデータをメモリの R14+o8 番地に格納します。o8 は符号付きで計算しま す。o8 の値を disp8 として指定します。 ● アセンブラ形式 STB Ri,@(R14, disp8) ● オペレーション Ri → (R14+o8) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 378 LSB 1 1 1 o8 FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.159 STB (Store Byte Data in Register to Memory) FR81 ファミリ ● 実行例 STB R3,@(R14,1) ; 命令のビットパターン:0111 0000 0001 0011 R3 0 0 0 0 0 0 2 1 R3 0 0 0 0 0 0 2 1 R14 1 2 3 4 5 6 7 8 R14 1 2 3 4 5 6 7 8 12345678 メモリ 12345678 メモリ 12345679 ×× 12345679 2 1 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 379 第 7 章 命令細則 7.160 STB (Store Byte Data in Register to Memory) 7.160 FR81 ファミリ STB (Store Byte Data in Register to Memory) Ri のバイトデータを , メモリの BP+u16 番地に格納します。u16 は符号なしで計算 します。u16 の値を udisp16 として指定します。 ● アセンブラ形式 STB Ri, @(BP, udisp16) ● オペレーション Ri → (BP+u16) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 1 0 1 1 0 0 1 1 0 Ri u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出 380 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.161 STH (Store Halfword Data in Register to Memory) FR81 ファミリ 7.161 STH (Store Halfword Data in Register to Memory) Ri のハーフワードデータをメモリの Rj 番地に格納します。 ● アセンブラ形式 STH Ri,@Rj ● オペレーション Ri → (Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 0 1 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri 381 第 7 章 命令細則 7.161 STH (Store Halfword Data in Register to Memory) FR81 ファミリ ● 実行例 ; 命令のビットパターン:0001 0101 0010 0011 STH R3,@R2 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 0 0 0 0 4 3 2 1 R3 0 0 0 0 4 3 2 1 メモリ 12345678 ×××× メモリ 12345678 実行前 382 FUJITSU MICROELECTRONICS LIMITED 4 3 2 1 実行後 CM71-00105-1 第 7 章 命令細則 7.162 STH (Store Halfword Data in Register to Memory) FR81 ファミリ 7.162 STH (Store Halfword Data in Register to Memory) Ri のハーフワードデータをメモリの R13+Rj 番地に格納します。 ● アセンブラ形式 STH Ri,@(R13, Rj) ● オペレーション Ri → (R13+Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 0 0 1 0 0 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri 383 第 7 章 命令細則 7.162 STH (Store Halfword Data in Register to Memory) FR81 ファミリ ● 実行例 STH R3,@(R13, R2) ; 命令のビットパターン:0001 0001 0010 0011 R2 0 0 0 0 0 0 0 4 R2 0 0 0 0 0 0 0 4 R3 0 0 0 0 4 3 2 1 R3 0 0 0 0 4 3 2 1 R13 1 2 3 4 5 6 7 8 R13 1 2 3 4 5 6 7 8 1234567A メモリ 1234567A メモリ 1234567C ×××× 1234567C 4 3 2 1 実行前 384 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.163 STH (Store Halfword Data in Register to Memory) FR81 ファミリ 7.163 STH (Store Halfword Data in Register to Memory) Ri のハーフワードデータをメモリの R14+o8 × 2 番地に格納します。o8 は符号付 きで計算します。o8 × 2 の値を disp9 として指定します。 ● アセンブラ形式 STH Ri,@(R14, disp9) ● オペレーション Ri → (R14+o8 × 2) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , 遅延スロット可 ● 実行サイクル数 a サイクル ● 命令フォーマット MSB 0 CM71-00105-1 LSB 1 0 1 o8 FUJITSU MICROELECTRONICS LIMITED Ri 385 第 7 章 命令細則 7.163 STH (Store Halfword Data in Register to Memory) FR81 ファミリ ● 実行例 STH R3,@(R14,2) ; 命令のビットパターン:0101 0000 0001 0011 R3 0 0 0 0 4 3 2 1 R3 0 0 0 0 4 3 2 1 R14 1 2 3 4 5 6 7 8 R14 1 2 3 4 5 6 7 8 12345678 メモリ 12345678 メモリ 1234567A ×××× 1234567A 4 3 2 1 実行前 386 FUJITSU MICROELECTRONICS LIMITED 実行後 CM71-00105-1 第 7 章 命令細則 7.164 STH (Store Halfword Data in Register to Memory) FR81 ファミリ 7.164 STH (Store Halfword Data in Register to Memory) Ri のハーフワードデータを , メモリの BP+u16 × 2 番地に格納します。u16 は符号 なしで計算します。u16 × 2 の値を udisp17 として指定します。 ● アセンブラ形式 STB Ri, @(BP, udisp17) ● オペレーション Ri → (BP+u16 × 2) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 メモリストア命令 , FR81 ファミリ ● 実行サイクル数 a サイクル ● 命令フォーマット MSB (n+0) 0 LSB 0 (n+2) 0 1 0 1 1 1 0 1 0 1 Ri u16 ● EIT 発生と検出 データアクセス保護違反例外 , 不正命令例外 ( データアクセスエラー ), 割込みを検出 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 387 第 7 章 命令細則 7.165 STILM (Set Immediate Data to Interrupt Level Mask Register) 7.165 FR81 ファミリ STILM (Set Immediate Data to Interrupt Level Mask Register) 即値データをプログラムステータス (PS) の割込みレベルマスクレジスタ (ILM) に転 送します。 ● アセンブラ形式 STILM #u8 ● オペレーション if (ILM < 16) u8 → ILM else if (u8 < 16) u8+16 → ILM else u8 → ILM この命令は特権命令です。特権モードでのみ実行可能です。ユーザモードで実行した 場合は不正命令例外 ( 特権命令実行 ) を発生します。 即値データは , 下位 5 ビット ( ビット 4 ∼ビット 0) だけが有効です。命令実行時の割 込みレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のとき , ILM に新たな値として設定 できるのは 16 ∼ 31 です。u8 が 0 ∼ 15 の場合は , 指定した値に 16 を加算した値が ILM に転送されます。 元の値が 0 ∼ 15 のときは , 0 ∼ 31 の任意の値を ILM に転送できます。 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , 遅延スロット可 , FR81 更新 ● 実行サイクル数 1 サイクル 388 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.165 STILM (Set Immediate Data to Interrupt Level Mask Register) FR81 ファミリ ● 命令フォーマット MSB 1 LSB 0 0 0 0 1 1 1 u8 ● EIT 発生と検出 ユーザモード : 不正命令例外 ( 特権命令実行 ) を発生します。 特権モード : 割込みを検出 (ILM は命令実行後の値を使用 ) します。 ● 実行例 STILM #14H ILM ; 命令のビットパターン:1000 0111 0001 0100 1 1 1 1 1 ILM 実行前 CM71-00105-1 1 0 1 0 0 実行後 FUJITSU MICROELECTRONICS LIMITED 389 第 7 章 命令細則 7.166 STM0 (Store Multiple Registers) 7.166 FR81 ファミリ STM0 (Store Multiple Registers) reglist にて指定した複数のレジスタ (R0 ∼ R7) のワードデータを , R15 から 4 を減 算してから R15 番地に格納する処理を繰り返します。処理の順番はレジスタ番号の 昇順です。 ● アセンブラ形式 STM0 (reglist) reglist に R0 ∼ R7 のレジスタを "," で区切って , 複数並べて指定します。 ● オペレーション 以下の操作を , reglist で示されたレジスタの数だけ繰り返します。 R15-4 → R15 Ri → (R15) STM0 命令の reglist のビットとレジスタの対応を表 7.166-1 に示します。 表 7.166-1 STM0 命令の reglist のビットとレジスタの対応 ビット 7 6 5 4 3 2 1 0 レジスタ R0 R1 R2 R3 R4 R5 R6 R7 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 390 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.166 STM0 (Store Multiple Registers) FR81 ファミリ ● 実行サイクル数 reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになりま す。 n=0 のとき :1 サイクル それ以外のとき:a × n サイクル ● 命令フォーマット MSB 1 LSB 0 0 0 1 1 1 0 reglist ● 実行例 ; 命令のビットパターン:1000 1110 0011 0000 STM0 (R2, R3) R2 9 0 B C 9 3 6 3 R2 9 0 B C 9 3 6 3 R3 8 3 4 3 8 3 4 A R3 8 3 4 3 8 3 4 A R15 7 F F F F F C 8 R15 7 F F F F F C 0 メモリ メモリ 7FFFFFC0 ×××× ×××× 7FFFFFC0 9 0 B C 9 3 6 3 7FFFFFC4 ×××× ×××× 7FFFFFC4 8 3 4 3 8 3 4 A 7FFFFFC8 ×××× ×××× 7FFFFFC8 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED ×××× ×××× 実行後 391 第 7 章 命令細則 7.167 STM1 (Store Multiple Registers) 7.167 FR81 ファミリ STM1 (Store Multiple Registers) reglist にて指定した複数のレジスタ (R8 ∼ R15) のワードデータを , R15 から 4 を 減算してから R15 番地に格納する処理を繰り返します。処理の順番はレジスタ番号 の昇順です。reglist で R15 を指定した場合 , 命令実行前に R15 が保持していた値が メモリに書き込まれます。 ● アセンブラ形式 STM1 (reglist) reglist に R8 ∼ R15 のレジスタを "," で区切って , 複数並べて指定します。 ● オペレーション 以下の操作を , reglist で示されたレジスタの数だけ繰り返します。 R15-4 → R15 Ri → (R15) STM1 命令の reglist のビットとレジスタの対応を表 7.167-1 に示します。 表 7.167-1 STM1 命令の reglist のビットとレジスタの対応 ビット 7 6 5 4 3 2 1 0 レジスタ R8 R9 R10 R11 R12 R13 R14 R15 ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 392 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 第 7 章 命令細則 7.167 STM1 (Store Multiple Registers) FR81 ファミリ ● 実行サイクル数 reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになりま す。 n=0 のとき :1 サイクル それ以外のとき:a × n サイクル ● 命令フォーマット MSB 1 0 LSB 0 0 1 1 1 1 reglist ● 実行例 STM1 (R10, R11, R12) ; 命令のビットパターン:1000 1111 0011 1000 R10 8 F E 3 9 E 8 A R10 8 F E 3 9 E 8 A R11 9 0 B C 9 3 6 3 R11 9 0 B C 9 3 6 3 R12 8 D F 7 8 8 E 4 R12 8 D F 7 8 8 E 4 R15 7 F F F F F C C R15 7 F F F F F C 0 メモリ メモリ 7FFFFFC0 ×××× ×××× 7FFFFFC0 8 F E 3 9 E 8 A 7FFFFFC4 ×××× ×××× 7FFFFFC4 9 0 B C 9 3 6 3 7FFFFFC8 ×××× ×××× 7FFFFFC8 8 D F 7 8 8 E 4 7FFFFFCC ×××× ×××× 7FFFFFCC 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED ×××× ×××× 実行後 393 第 7 章 命令細則 7.168 SUB (Subtract Word Data in Source Register from Destination Register) 7.168 FR81 ファミリ SUB (Subtract Word Data in Source Register from Destination Register) Ri のワードデータから Rj のワードデータを減算し , 結果を Ri に格納します。 ● アセンブラ形式 SUB Rj, Ri ● オペレーション Ri - Rj → Ri ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 394 LSB 0 1 0 1 1 0 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.168 SUB (Subtract Word Data in Source Register from Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 1100 0010 0011 SUB R2, R3 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 9 9 9 9 9 9 9 9 R3 8 7 6 5 4 3 2 1 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 1 0 0 0 実行後 395 第 7 章 命令細則 7.169 SUBC (Subtract Word Data in Source Register and Carry bit from Destination Register) 7.169 FR81 ファミリ SUBC (Subtract Word Data in Source Register and Carry bit from Destination Register) Ri のワードデータから Rj のワードデータとキャリフラグ (C) を減算し , 結果を Ri に格納します。 ● アセンブラ形式 SUBC Rj, Ri ● オペレーション Ri - Rj - C → Ri ● フラグ変化 N C Z C V C C C N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。 Z: 演算結果がゼロならばセット , それ以外ならクリアされます。 V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。 C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 396 LSB 0 1 0 1 1 0 1 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.169 SUBC (Subtract Word Data in Source Register and Carry bit from Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 1101 0010 0011 SUBC R2, R3 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 9 9 9 9 9 9 9 9 R3 8 7 6 5 4 3 2 0 N Z V C CCR 0 0 0 1 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 1 0 0 0 実行後 397 第 7 章 命令細則 7.170 SUBN (Subtract Word Data in Source Register from Destination Register) 7.170 FR81 ファミリ SUBN (Subtract Word Data in Source Register from Destination Register) Ri のワードデータから Rj のワードデータを減算し , 結果を Ri に格納します。フラ グは変化しません。 ● アセンブラ形式 SUBN Rj, Ri ● オペレーション Ri - Rj → Ri ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 加減算命令 , 遅延スロット可 ● 実行サイクル数 1 サイクル ● 命令フォーマット MSB 1 398 LSB 0 1 0 1 1 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.170 SUBN (Subtract Word Data in Source Register from Destination Register) FR81 ファミリ ● 実行例 ; 命令のビットパターン:1010 1110 0010 0011 SUBN R2, R3 R2 1 2 3 4 5 6 7 8 R2 1 2 3 4 5 6 7 8 R3 9 9 9 9 9 9 9 9 R3 8 7 6 5 4 3 2 1 N Z V C CCR 0 0 0 0 N Z V C CCR 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 0 0 0 0 実行後 399 第 7 章 命令細則 7.171 XCHB (Exchange Byte Data) 7.171 FR81 ファミリ XCHB (Exchange Byte Data) Rj の示すバイトアドレスの内容と , Ri の内容を交換します。Rj の示すバイトアドレ スへは , 元の Ri の下位 8 ビットのデータが転送され , Ri には Rj の示すアドレスの 元のデータがゼロ拡張して転送されます。 ● アセンブラ形式 XCHB @Rj, Ri ● オペレーション Ri → TEMP extu((Rj)) → Ri TEMP → (Rj) ● フラグ変化 N Z V C − − − − N, Z, V, C: 変化しません。 ● 分類 その他の命令 , リードモディファイライト系命令 ● 実行サイクル数 2a サイクル ● 命令フォーマット MSB 1 400 0 LSB 0 0 1 0 1 0 Rj FUJITSU MICROELECTRONICS LIMITED Ri CM71-00105-1 第 7 章 命令細則 7.171 XCHB (Exchange Byte Data) FR81 ファミリ ● 実行例 XCHB @R1, R0 ; 命令のビットパターン:1000 1010 0001 0000 R0 0 0 0 0 0 0 7 8 R0 0 0 0 0 0 0 F D R1 8 0 0 0 0 0 0 2 R1 8 0 0 0 0 0 0 2 メモリ メモリ 80000001 ×× 80000001 ×× 80000002 F D 80000002 7 8 80000003 ×× 80000003 ×× 実行前 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 実行後 401 第 7 章 命令細則 7.171 XCHB (Exchange Byte Data) 402 FUJITSU MICROELECTRONICS LIMITED FR81 ファミリ CM71-00105-1 付録 FR81 ファミリ CPU の命令一覧と命令マップを示 します。 付録 A 命令一覧 付録 B 命令マップ 付録 C FPU 例外処理についての補足 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 403 付録 付録 A 命令一覧 付録 A FR81 ファミリ 命令一覧 FR81 ファミリ CPU の命令一覧を示します。 A.1 記号の意味 A.2 命令一覧表 A.3 遅延スロットに配置可能な命令一覧 404 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ A.1 記号の意味 命令一覧表および命令細則に用いている記号の意味を説明します。 A.1.1 ニーモニック欄および動作欄 命令一覧表のニーモニック欄および動作欄と , 命令細則のアセンブラ形式およびオペ レーションに使用されている記号です。 i4 4 ビット即値です。ゼロ拡張の場合は 0(0H) ∼ 15(FH), マイナス拡張の場合は -16(0H) ∼ -1(FH) の指定ができます。 表 A.1-1 4 ビット即値 (i4) のゼロ拡張とマイナス拡張の値 0000B 0001B 0010B 指定される値 ゼロ拡張 マイナス拡張 0 -16 1 -15 2 -14 1101B 1110B 1111B ・・・ 13 14 15 ビットパターン -3 -2 -1 i8 8 ビット即値です。0 (00H) ∼ 255 (FFH) の指定ができます。 i20 20 ビット即値です。0 (00000H) ∼ 1,048,575 (FFFFFH) の指定ができます。 i32 32 ビット即値です。0 (0000 0000H) ∼ 4,294,967,295 (FFFF FFFFH) の指定ができます。 s8 符号付き 8 ビット即値です。-128 (80H) ∼ 127 (7FH) の指定ができます。 s10 符号付き10ビット即値です。4の倍数で-512 (200H)∼508 (1FCH)の指定ができます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 405 付録 付録 A 命令一覧 FR81 ファミリ u4 符号なし 4 ビット即値です。0 (0H) ∼ 15 (FH) の指定ができます。 u8 符号なし 8 ビット即値です。0 (00H) ∼ 255 (FFH) の指定ができます。 u10 符号なし 10 ビット即値です。4 の倍数で 0 (000H) ∼ 1020 (3FCH) の指定ができます。 udisp6 符号なし 6 ビットアドレス値です。 4 の倍数で 0 (00H) ∼ 60 (3CH) の指定ができます。 udisp16 符号なし 16 ビットアドレス値です。命令により 0(0000H) ∼ 65535(FFFFH) の指定 , または 4 の倍数で 0(0000H) ∼ 65532(FFFCH) の指定ができます。 udisp17 符号なし 17 ビットアドレス値です。2 の倍数で 0(00000H) ∼ 131070(1FFFEH) の指 定ができます。 udisp18 符号なし 18 ビットアドレス値です。4 の倍数で 0(00000H) ∼ 262140(3FFFCH) の指 定ができます。 disp8 符号付き 8 ビットアドレス値です。-128(80H) ∼ 127(7FH) の指定ができます。 disp9 符号付き 9 ビットアドレス値です。2 の倍数で -256(100H) ∼ 254(0FEH) の指定がで きます。 disp10 符号付き 10 ビットアドレス値です。4 の倍数で -512(200H) ∼ 508(1FCH) の指定がで きます。 disp16 符号付き 16 ビットアドレス値です。-32768(8000H) ∼ 32764(FFFCH) の指定ができ ます。 406 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ dir8 符号なし 8 ビットアドレス値です。0 (00H) ∼ 255 (FFH) の指定ができます。 dir9 符号なし 9 ビットアドレス値です。2 の倍数で 0 (000H) ∼ 510 (1FEH) の指定ができ ます。 dir10 符号なし 10 ビットアドレス値です。4 の倍数で 0 (000H) ∼ 1020 (3FCH) の指定がで きます。 label9 分岐アドレスです。プログラムカウンタ (PC)+2 の値に対して , 2 の倍数で -256 (100H) ∼ 254 (0FEH) の範囲の指定ができます。 label12 分岐アドレスです。プログラムカウンタ (PC)+2 の値に対して , 2 の倍数で -2048 (800H) ∼ 2046 (7FEH) の範囲の指定ができます。 label17 分 岐 ア ド レ ス で す 。プ ロ グ ラ ム カ ウ ン タ ( P C ) + 2 の 値 に 対 し て , 2 の 倍 数 で -65536(10000H) ∼ 65534(0FFFEH) の範囲の指定ができます。 label21 分 岐 ア ド レ ス で す 。プ ロ グ ラ ム カ ウ ン タ ( P C ) + 2 の 値 に 対 し て , 2 の 倍 数 で -1048576(100000H) ∼ 1048574(0FFFFEH) の範囲の指定ができます。 rel8 符号付き 8 ビット相対アドレス値です。プログラムカウンタ (PC)+2 の値に対して , rel8 を 2 倍した値を加算した結果が分岐先アドレスを示します。-128 (80H) ∼ 127 (7FH) の指定ができます。 rel11 符号付き 11 ビット相対アドレス値です。プログラムカウンタ (PC)+2 の値に対して , rel11 を 2 倍した値を加算した結果が分岐先アドレスを示します。-1024 (400H) ∼ 1023 (3FFH) の指定ができます。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 407 付録 付録 A 命令一覧 FR81 ファミリ rel16 符号付き 16 ビット相対アドレス値です。プログラムカウンタ (PC)+2 の値に対して , rel16 を 2 倍した値を加算した結果が分岐先アドレスを示します。-32768(8000H) ∼ 32767(7FFFH) の指定ができます。 rel20 符号付き 20 ビット相対アドレス値です。プログラムカウンタ (PC)+2 の値に対して , rel20 を 2 倍した値を加算した結果が分岐先アドレスを示します。-524288(80000H) ∼ 524287(7FFFFH) の指定ができます。 Ri, Rj 汎用レジスタ (R0 ∼ R15) を示します。 表 A.1-2 Rj/Ri による汎用レジスタの指定 Ri / Rj 0000 0001 0010 0011 0100 0101 0110 0111 レジスタ R0 R1 R2 R3 R4 R5 R6 R7 Ri / Rj 1000 1001 1010 1011 1100 1101 1110 1111 レジスタ R8 R9 R10 R11 R12 R13 R14 R15 Rs 専用レジスタ (TBR, RP, USP, SSP, MDH, MDL, BP, FCR, ESR, DBR) を示します。 表 A.1-3 Rs による専用レジスタの指定 Rs 0000 0001 0010 0011 0100 0101 0110 0111 レジスタ テーブルベースレジスタ (TBR) リターンポインタ (RP) システムスタックポインタ (SSP) ユーザスタックポインタ (USP) 乗除算レジスタ (MDH) 乗除算レジスタ (MDL) ベースポインタ (BP) FPU 制御レジスタ (FCR) Rs 1000 1001 1010 1011 1100 1101 1110 1111 レジスタ 例外ステータスレジスタ (ESR) Reserved(使用禁止) デバッグレジスタ (DBR) FRi, FRj, FRk 浮動小数点レジスタ (FR0 ∼ FR15) を示します。 408 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ 表 A.1-4 FRi/FRj/FRk による浮動小数点レジスタの指定 FRi/FRj/FRk 0000 0001 0010 0011 0100 0101 0110 0111 レジスタ FR0 FR1 FR2 FR3 FR4 FR5 FR6 FR7 FRi/FRj/FRk 1000 1001 1010 1011 1100 1101 1110 1111 レジスタ FR8 FR9 FR10 FR11 FR12 FR13 FR14 FR15 (reglist) 8 ビットのレジスタリストを示します。各ビットに対応する汎用レジスタ (R0 ∼ R15) が指定されます。 表 A.1-5 LDM0,LDM1 命令の reglist のビットと汎用レジスタの対応 LDM0 命令 reglist bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 レジスタ R0 R1 R2 R3 R4 R5 R6 R7 LDM1 命令 reglist bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 レジスタ R8 R9 R10 R11 R12 R13 R14 R15 表 A.1-6 STM0,STM1 命令の reglist のビットと汎用レジスタの対応 STM0 命令 reglist bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 CM71-00105-1 レジスタ R7 R6 R5 R4 R3 R2 R1 R0 STM1 命令 reglist bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 FUJITSU MICROELECTRONICS LIMITED レジスタ R15 R14 R13 R12 R11 R10 R9 R8 409 付録 付録 A 命令一覧 FR81 ファミリ (frlist) 16 ビットのレジスタリストを示します。各ビットに対応する浮動小数点レジスタ (FR0 ∼ FR15) が指定されます。 表 A.1-7 FLDM 命令の frlist のビットと浮動小数点レジスタの対応 frlist bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 レジスタ FR0 FR1 FR2 FR3 FR4 FR5 FR6 FR7 frlist bit8 bit9 bit10 bit11 bit12 bit13 bit14 bit15 レジスタ FR8 FR9 FR10 FR11 FR12 FR13 FR14 FR15 表 A.1-8 FSTM 命令の frlist のビットと浮動小数点レジスタの対応 frlist bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 A.1.2 レジスタ FR15 FR14 FR13 FR12 FR11 FR10 FR9 FR8 frlist bit8 bit9 bit10 bit11 bit12 bit13 bit14 bit15 レジスタ FR7 FR6 FR5 FR4 FR3 FR2 FR1 FR0 動作欄 命令一覧表の動作欄と , 命令細則のオペレーションに使用されている記号です。 extu( ) ゼロ拡張操作を示します。上位ビットの欠けている部分に "0" ビットを補います。 extn( ) マイナス拡張操作を示します。上位ビットの欠けている部分に "1" ビットを補いま す。 exts( ) 符号拡張操作を示します。( ) 内のデータの MSB が "0" ならばゼロ拡張操作をし , MSB が "1" ならばマイナス拡張操作をします。 & ビットごとの論理積 (AND) を示します。 410 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ | ビットごとの論理和 (OR) を示します。 ^ ビットごとの排他的論理和 (EXOR) を示します。 () 間接アドレス指定を示します。( ) 内のレジスタまたは式の示すアドレスのメモリ読 み出し・書き込み値です。 {} 演算の優先順位を明示するための括弧になります。( ) を間接アドレス指定に使用し ているため , { } を使用します。 if ( 条件 ) then { 式 } または if ( 条件 ) then { 式 1} else { 式 2} 条件実行を示します。条件が成立したときに then の次の式を , 成立しなかったと きに else の次の式を実行します。式は { } で囲み複数記述できます。 [m:n] ビット m からビット n までを取り出して , 操作対象とします。 A.1.3 型欄 命令一覧表の型欄に使用されている記号です。 A∼N 命令フォーマットを示します。A ∼ N は TYPE-A ∼ TYPE-N に対応します。 A.1.4 OP 欄 命令一覧表の型欄に使用されている 16 進数です。オペコード (OP) を示します。命令 フォーマットにより , 次のように分かれます。 TYPE-A, TYPE-C, TYPE-D, TYPE-G OP の 8 ビットを 16 進数 2 桁で示します。 TYPE-B OP の 4 ビットを上位 1 桁 , 下位桁を "0" とした 16 進数 2 桁で示します。 TYPE-E, TYPE-H, TYPE-I, TYPE-J, TYPE-K OP の 12 ビットを , 16 進数 3 桁で示します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 411 付録 付録 A 命令一覧 FR81 ファミリ TYPE-F OPの5ビットの下位に, 3ビットの000Bを付加した8ビットを, 16進数2桁で示します。 TYPE-L, TYPE-N OP の 14 ビットの下位に , 2 ビットの 00B を付加した 16 ビットを , 16 進数 4 桁で示 します。 TYPE-M OP の 16 ビットを , 16 進数 4 桁で示します。 A.1.5 CYC 欄 命令一覧表の CYC 欄と , 命令細則の実行サイクル数に使用されている記号です。数 値は CPU クロックのサイクル数です。a ∼ d の最小は 1 サイクルです。 a メモリアクセスサイクルです。アクセス対象によりサイクル数が変化します。最小 値は 1 サイクルです。 b メモリアクセスサイクルです。アクセス対象によりサイクル数が変化します。最小 値は 1 サイクルです。 完了していない LD 命令が 4 命令未満であり , ロード動作の対象となるレジスタが 後続の命令に参照されない間は , 1 サイクルです。 完了していない LD 命令が 4 命令以上となった場合 , その時点から最初の LD 命令 が完了するまでインターロックがかかり , 実行サイクル数が(メモリアクセスサイ クル数−命令発行から最初の LD 命令が完了するまでのサイクル数)だけ増加しま す。 ロード動作の対象となるレジスタが後続の命令に参照される場合 , その時点から インターロックがかかり , 実行サイクル数が(メモリアクセスサイクル数−命令発 行から対象レジスタを参照する命令までのサイクル数+ 1)だけ増加します。 c 直後の命令が乗除算レジスタ (MDH) を参照する場合にインターロックがかかり , 実行サイクル数が 2 に増加します。それ以外は 1 サイクルとなります。 d プリフェッチバッファへの命令先読みが行われていない場合に 2 サイクルになりま す。最小値は 1 サイクルです。 412 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ FLAG 欄 A.1.6 命令一覧表の FLAG 欄と , 命令細則のフラグ変化に使用されている記号です。コンデ ションコードレジスタ (CCR) のネガティブフラグ (N), ゼロフラグ (Z), オーバフロー フラグ (V), キャリフラグ (C) の変化を示します。 C 操作の結果で変化します。 − 変化しません。 0 "0" になります。 1 "1" になります。 RMW 欄 A.1.7 命令一覧表の RMW 欄に使用されている記号です。リードモディファイライト命令か どうかを示しています。 − 命令はリードモディファイライト命令ではありません。 ○ 命令はリードモディファイライト命令です。 参照欄 A.1.8 「第 7 章 命令細則」で説明されている節を示します。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 413 付録 付録 A 命令一覧 A.2 FR81 ファミリ 命令一覧表 FR81 ファミリ CPU の命令一覧を示します。 FR81 ファミリ CPU の命令数は全部で 231 あります。以下の 21 種類に分類しています。 • 加減算命令 (10 命令 ) • 比較演算命令 (3 命令 ) • 論理演算命令 (12 命令 ) • ビット操作演算命令 (8 命令 ) • 乗除算命令 (10 命令 ) • シフト演算命令 (9 命令 ) • 即値データ転送命令 (3 命令 ) • メモリロード命令 (16 命令 ) • メモリストア命令 (16 命令 ) • レジスタ間転送命令 / 専用レジスタ転送命令 (5 命令 ) • 遅延なし分岐命令 (24 命令 ) • 遅延分岐命令 (21 命令 ) • ダイレクトアドレス指定命令 (14 命令 ) • ビットサーチ命令 (3 命令 ) • その他の命令 (16 命令 ) • FPU メモリロード命令 (7 命令 ) • FPU メモリストア命令 (7 命令 ) • FPU 単精度浮動小数点演算命令 (12 命令 ) • FPU レジスタ間転送命令 (3 命令 ) • FPU 遅延なし分岐命令 (16 命令 ) • FPU 遅延分岐命令 (16 命令 ) 414 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-1 加減算命令 (10 命令 ) 型 OP CYC FLAG NZVC RMW ADD Rj, Ri A A6 1 CCCC − Ri+Rj → Ri ADD #i4, Ri C A4 1 CCCC − Ri+extu(i4) → Ri i4 はゼロ拡張 7.1 ニーモニック 動作 備考 参照 7.2 ADD2 #i4, Ri C A5 1 CCCC − Ri+extn(i4) → Ri i4 はマイナス拡張 7.3 ADDC Rj, Ri A A7 1 CCCC − Ri+Rj+C → Ri キャリ付き加算 7.4 ADDN Rj, Ri A A2 1 ---- − Ri+Rj → Ri ADDN #i4, Ri C A0 1 ---- − Ri+extu(i4) → Ri i4 はゼロ拡張 7.5 ADDN2 #i4, Ri C A1 1 ---- − Ri+extn(i4) → Ri i4 はマイナス拡張 7.7 SUB Rj, Ri A AC 1 CCCC − Ri-Rj → Ri SUBC Rj, Ri A AD 1 CCCC − Ri-Rj-C → Ri SUBN Rj, Ri A AE 1 ---- − Ri-Rj → Ri 7.6 7.129 キャリ付き加算 7.130 7.131 表 A.2-2 比較演算命令 (3 命令 ) 型 OP CYC FLAG NZVC RMW CMP Rj, Ri A AA 1 CCCC − Ri-Rj CMP #i4, Ri C A8 1 CCCC − Ri-extu(i4) i4 はゼロ拡張 7.31 CMP2 #i4, Ri C A9 1 CCCC − Ri-extn(i4) i4 はマイナス拡張 7.33 ニーモニック 動作 備考 参照 7.32 表 A.2-3 論理演算命令 (12 命令 ) ニーモニック 型 OP CYC FLAG NZVC RMW 動作 備考 参照 AND Rj, Ri A 82 1 CC-- − Ri & Rj → Ri ワード 7.10 AND Rj, @Ri A 84 1+2a CC-- ○ (Ri) & Rj → (Ri) ワード 7.9 ANDH Rj, @Ri A 85 1+2a CC-- ○ (Ri) & Rj → (Ri) ハーフワード 7.13 ANDB Rj, @Ri A 86 1+2a CC-- ○ (Ri) & Rj → (Ri) バイト 7.11 OR Rj, Ri A 92 1 CC-- − Ri | Rj → Ri ワード 7.139 OR Rj, @Ri A 94 1+2a CC-- ○ (Ri) | Rj → (Ri) ワード 7.138 ORH Rj, @Ri A 95 1+2a CC-- ○ (Ri) | Rj → (Ri) ハーフワード 7.142 ORB Rj, @Ri A 96 1+2a CC-- ○ (Ri) | Rj → (Ri) バイト 7.140 EOR Rj, Ri A 9A 1 CC-- − Ri ^ Rj → Ri ワード 7.56 EOR Rj, @Ri A 9C 1+2a CC-- ○ (Ri) ^ Rj → (Ri) ワード 7.55 EORH Rj, @Ri A 9D 1+2a CC-- ○ (Ri) ^ Rj → (Ri) ハーフワード 7.58 EORB Rj, @Ri A 9E 1+2a CC-- ○ (Ri) ^ Rj → (Ri) バイト 7.57 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 415 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-4 ビット操作演算命令 (8 命令 ) 型 OP CYC FLAG NZVC RMW BANDL #u4, @Ri C 80 1+2a ---- ○ BANDH #u4, @Ri C 81 1+2a ---- ○ ニーモニック 動作 備考 参照 (Ri) & {F0H+u4} → (Ri) 下位 4 ビット 7.18 (Ri) & {u4<<4+0FH} → (Ri) 上位 4 ビット 7.17 BORL #u4, @Ri C 90 1+2a ---- ○ (Ri) | u4 → (Ri) 下位 4 ビット 7.24 BORH #u4, @Ri C 91 1+2a ---- ○ (Ri) | {u4<<4} → (Ri) 上位 4 ビット 7.23 BEORL #u4, @Ri C 98 1+2a ---- ○ (Ri) ^ u4 → (Ri) 下位 4 ビット 7.22 BEORH #u4, @Ri C 99 1+2a ---- ○ (Ri) ^ {u4<<4} → (Ri) 上位 4 ビット 7.21 BTSTL #u4, @Ri C 88 2+a 0C-- − (Ri) & u4 下位 4 ビット 7.26 BTSTH #u4, @Ri C 89 2+a CC-- − (Ri) & {u4<<4} 上位 4 ビット 7.25 表 A.2-5 乗除算命令 (10 命令 ) 型 OP CYC FLAG NZVC RMW 動作 MUL Rj, Ri A AF 5 CCC- − Ri × Rj → MDH,MDL 32 × 32 ビット = 64 ビット 7.133 MULU Rj, Ri A AB 5 CCC- − Ri × Rj → MDH,MDL 符号なし 7.135 7.134 7.136 ニーモニック MULH Rj, Ri A MULUH Rj, Ri A DIV0S Ri DIV0U Ri DIV1 Ri DIV2 Ri E E E E DIV3 E’ DIV4S E’ 備考 参照 3 CC-- − Ri × Rj → MDL 16 × 16 ビット = 32 ビット BB 3 CC-- − Ri × Rj → MDL 符号なし 97-4 97-5 97-6 97-7 1 1 1 c -------C-C -C-C − − − − 9F-6 1 ---- − 9F-7 1 ---- − BF 所定の命令シーケン スにて MDL ÷ Ri → MDL MDL%Ri → MDH ステップ演算 32 ÷ 32 ビット = 32 ビット 7.34 7.35 7.36 7.37 7.38 7.39 表 A.2-6 シフト演算命令 (9 命令 ) 型 OP CYC FLAG NZVC RMW LSL Rj, Ri A B6 1 CC-C − Ri << Rj → Ri LSL #u4, Ri C B4 1 CC-C − Ri << u4 → Ri ニーモニック 動作 備考 参照 7.120 論理シフト 7.121 LSL2 #u4, Ri C B5 1 CC-C − Ri << {u4+16} → Ri 7.122 LSR Rj, Ri A B2 1 CC-C − Ri >> Rj → Ri 7.123 7.124 LSR #u4, Ri C B0 1 CC-C − Ri >> u4 → Ri LSR2 #u4, Ri C B1 1 CC-C − Ri >> {u4+16} → Ri 7.125 ASR Rj, Ri A BA 1 CC-C − Ri >> Rj → Ri 7.14 ASR #u4, Ri C B8 1 CC-C − Ri >> u4 → Ri ASR2 #u4, Ri C B9 1 CC-C − Ri >> {u4+16} → Ri 416 FUJITSU MICROELECTRONICS LIMITED 論理シフト 算術シフト 7.15 7.16 CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-7 即値データ転送命令 (3 命令 ) FLAG NZVC RMW d ---- − i32 → Ri d ------- ニーモニック 型 OP CYC LDI:32 #i32, Ri H 9F-8 LDI:20 #i20, Ri G 9B LDI:8 #i8, Ri B C0 1 動作 備考 参照 − extu(i20) → Ri 上位 12 ビットはゼロ拡張 7.106 − extu(i8) → Ri 上位 24 ビットはゼロ拡張 7.108 動作 参照 7.107 表 A.2-8 メモリロード命令 (16 命令 ) 型 OP CYC FLAG NZVC RMW LD @Rj, Ri A 04 b ---- − (Rj) → Ri 7.98 LD @(R13, Rj), Ri A 00 b ---- − (R13+Rj) → Ri 7.99 ニーモニック 備考 LD @(R14, disp10), Ri B 20 b ---- − (R14+o8 × 4) → Ri 7.100 LD @(R15, udisp6), Ri C 03 b ---- − (R15+u4 × 4) → Ri 7.101 LD @R15+, Ri E 07-0 b ---- − (R15) → Ri, R15+4 → R15 LD @R15+, Rs E 07-8 b ---- − (R15) → Rs, R15+4 → R15 7.104 LD @R15+, PS E 07-9 1+a CCCC − (R15) → PS, R15+4 → R15 7.105 LD @(BP, udisp18), Ri J 07-4 a ---- − (BP+u16 × 4) → Ri 7.103 LDUH @Rj, Ri A 05 b ---- − extu((Rj)) → Ri ワード 7.102 7.115 ハーフ ワード ゼロ拡張 7.116 LDUH @(R13, Rj), Ri A 01 b ---- − extu((R13+Rj)) → Ri LDUH @(R14, disp9), Ri B 40 b ---- − extu((R14+o8 × 2)) → Rj LDUH @(BP, udisp17), Ri J 07-5 a ---- − (BP+u16 × 2) → Ri 7.118 LDUB @Rj, Ri A 06 b ---- − extu((Rj)) → Ri 7.111 LDUB @(R13, Rj), Ri A 02 b ---- − extu((R13+Rj)) → Ri LDUB @(R14, disp8), Ri B 60 b ---- − extu((R14+o8)) → Ri LDUB @(BP, udisp16), Ri J 07-6 a ---- − (BP+u16) → Ri バイト ゼロ拡張 7.117 7.112 7.113 7.114 • 命令フォーマット TYPE-B の o8 フィールドと , アセンブラ記述の disp8 ∼ disp10 の 関係は次のようになっています。 o8 = disp8 o8 = disp9 >> 1 o8 = disp10 >> 2 • 命令フォーマット TYPE-C の u4 フィールドと , アセンブラ記述の udisp6 の関係は次 のようになっています。 u4 = udisp6 >> 2 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 417 付録 付録 A 命令一覧 FR81 ファミリ • 命令フォーマット TYPE-J の u16 フィールドと , アセンブラ記述の udisp16 ∼ udisp18 の関係は次のようになっています。 u16 = udisp16 u16 = udisp17 >> 1 u16 = udisp18 >> 2 表 A.2-9 メモリストア命令 (16 命令 ) 型 OP CYC FLAG NZVC RMW ST Ri, @Rj A 14 a ---- − Ri → (Rj) 7.149 ST Ri, @(R13, Rj) A 10 a ---- − Ri → (R13+Rj) 7.150 ニーモニック 動作 備考 参照 ST Ri, @(R14, disp10) B 30 a ---- − Ri → (R14+o8 × 4) 7.151 ST Ri, @(R15, udisp6) C 13 a ---- − Ri → (R15+u4 × 4) 7.152 ST Ri, @-R15 E 17-0 a ---- − R15-4 → R15, Ri → (R15) ST Rs, @-R15 E 17-8 a ---- − R15-4 → R15, Rs → (R15) 7.155 ST PS, @-R15 E 17-9 a ---- − R15-4 → R15, PS → (R15) 7.156 7.153 ワード ST Ri, @(BP, udisp18) J 17-4 a ---- − Ri → (BP+u16 × 4) 7.154 STH Ri, @Rj A 15 a ---- − Ri → (Rj) 7.161 STH Ri, @(R13, Rj) A 11 a ---- − Ri → (R13+Rj) STH Ri, @(R14, disp9) B 50 a ---- − Ri → (R14+o8 × 2) STH Ri, @(BP, udisp17) J 17-5 a ---- − Ri → (BP+u16 × 2) 7.164 STB Ri, @Rj A 16 a ---- − Ri → (Rj) 7.157 STB Ri, @(R13, Rj) A 12 a ---- − Ri → (R13+Rj) STB Ri, @(R14, disp8) B 70 a ---- − Ri → (R14+o8) STB Ri, @(BP, udisp16) J 17-6 a ---- − Ri → (BP+u16) ハーフワード バイト 7.162 7.163 7.158 7.159 7.160 • 命令フォーマット TYPE-B の o8 フィールドと , アセンブラ記述 disp8 ∼ disp10 の関 係は次のようになっています。 o8 = disp8 o8 = disp9 >> 1 o8 = disp10 >> 2 • 命令フォーマット TYPE-C の u4 フィールドと , アセンブラ記述の udisp6 の関係は次 のようになっています。 u4 = udisp6 >> 2 • 命令フォーマット TYPE-J の u16 フィールドと , アセンブラ記述の udisp16 ∼ udisp18 の関係は次のようになっています。 u16 = udisp16 u16 = udisp17 >> 1 u16 = udisp18 >> 2 418 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-10 レジスタ間転送命令 / 専用レジスタ転送命令 (5 命令 ) ニーモニック 型 OP CYC FLAG NZVC RMW MOV Rj, Ri A 8B 1 ---- − Rj → Ri 汎用レジスタ間転送 7.126 MOV Rs, Ri A B7 1 ---- − Rs → Ri Rs: 専用レジスタ 7.127 動作 備考 参照 MOV Ri, Rs A B3 1 ---- − Ri → Rs Rs: 専用レジスタ 7.129 MOV PS, Ri E 17-1 1 ---- − PS → Ri PS: プログラムステータス 7.128 MOV Ri, PS E 07-1 c CCCC − Ri → PS PS: プログラムステータス 7.130 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 419 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-11 遅延なし分岐命令 (24 命令 ) ニーモニック JMP @Ri 型 OP CYC FLAG NZVC RMW E 97-0 2 ---- − Ri → PC 7.94 7.27 動作 備考 参照 CALL label12 F D0 2 ---- − PC+2 → RP, PC+2+exts(rel11 × 2) → PC CALL @Ri E 97-1 2 ---- − PC+2 → RP, Ri → PC 7.28 LCALL label21 I 07-2 2 ---- − PC+4 → RP PC+4+exts(rel20 × 2) → PC 7.96 E’ 97-2 2 ---- − RP → PC 7.143 − SSP-4 → SSP, PS → (SSP), SSP-4 → SSP, PC+2 → (SSP), 0 → CCR:I, 0 → CCR:S, (TBR+3FC-u8 × 4) → PC 7.92 7.93 7.145 RET INT #u8 D 1F 1+3a ---- INTE E’ 9F-3 1+3a ---- − SSP-4 → SSP, PS → (SSP), SSP-4 → SSP, PC+2 → (SSP), 0 → CCR:S, 4 → ILM, (TBR+3D8) → PC RETI E’ 97-3 1+2b ---- − (SSP) → PC, SSP+4 → SSP, (SSP) → PS, SSP+4 → SSP BNO label9 D E1 1 ---- − BRA label9 D E0 2 ---- − BEQ label9 D E2 2/1 ---- − BNE label9 D E3 2/1 ---- − BC label9 D E4 2/1 ---- − BNC label9 D E5 2/1 ---- − BN label9 D E6 2/1 ---- − BP label9 D E7 2/1 ---- − BV label9 D E8 2/1 ---- − BNV label9 D E9 2/1 ---- − BLT label9 D EA 2/1 ---- − BGE label9 D EB 2/1 ---- − BLE label9 D EC 2/1 ---- − BGT label9 D ED 2/1 ---- − BLS label9 D EE 2/1 ---- − BHI label9 D EF 2/1 ---- − 420 非分岐 PC+2+exts(rel8 × 2) → PC if (Z==1) then PC+2+exts(rel8 × 2) → PC if (Z==0) then PC+2+exts(rel8 × 2) → PC if (C==1) then PC+2+exts(rel8 × 2) → PC if (C==0) then PC+2+exts(rel8 × 2) → PC if (N==1) then PC+2+exts(rel8 × 2) → PC if (N==0) then PC+2+exts(rel8 × 2) → PC if (V==1) then PC+2+exts(rel8 × 2) → PC if (V==0) then PC+2+exts(rel8 × 2) → PC if (V ^ N==1) then PC+2+exts(rel8 × 2) → PC if (V ^ N==0) then PC+2+exts(rel8 × 2) → PC if ({V ^ N} | Z==1) then PC+2+exts(rel8 × 2) → PC if ({V ^ N} | Z==0) then PC+2+exts(rel8 × 2) → PC if (C or Z==1) then PC+2+exts(rel8 × 2) → PC if (C or Z==0) then PC+2+exts(rel8 × 2) → PC FUJITSU MICROELECTRONICS LIMITED 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 7.19 CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ • CYC 欄の "2/1" は , 分岐するときは 2, 分岐しないときは 1 を示します。 • RETI 命令を実行するときはスタックフラグ (S) が "0" である必要があります。 • 命令フォーマット TYPE-D の rel8 および TYPE-F の rel11 フィールドと , アセンブラ 記述の label9, label12 の関係は次のようになっています。 rel8 = (label9-PC-2)/2 rel11 = (label12-PC-2)/2 • 命令フォーマット TYPE-I の rel20 と , アセンブラ記述の label21 の関係は次のように なっています。 rel20 = (labe21-PC-4)/2 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 421 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-12 遅延分岐命令 (21 命令 ) 型 OP CYC FLAG NZVC RMW JMP:D @Ri E 9F-0 1 ---- − Ri → PC 7.95 CALL:D label12 F D8 1 ---- − PC+4 → RP, PC+2+exts(rel11 × 2) → PC 7.29 CALL:D @Ri E 9F-1 1 ---- − PC+4 → RP, Ri → PC 7.30 LCALL:D label21 I 17-2 1 ---- − PC+6 → RP PC+4+exts(rel20 × 2) → PC 7.97 RET:D BNO:D label9 BRA:D label9 E’ 9F-2 D F1 D F0 1 1 1 ---------- − − − BEQ:D label9 D F2 1 ---- − BNE:D label9 D F3 1 ---- − BC:D label9 D F4 1 ---- − BNC:D label9 D F5 1 ---- − BN:D label9 D F6 1 ---- − BP:D label9 D F7 1 ---- − BV:D label9 D F8 1 ---- − BNV:D label9 D F9 1 ---- − BLT:D label9 D FA 1 ---- − BGE:D label9 D FB 1 ---- − BLE:D label9 D FC 1 ---- − BGT:D label9 D FD 1 ---- − BLS:D label9 D FE 1 ---- − BHI:D label9 D FF 1 ---- − ニーモニック 動作 備考 参照 7.144 7.20 7.20 RP → PC 非分岐 PC+2+exts(rel8 × 2) → PC if (Z==1) then PC+2+exts(rel8 × 2) → PC if (Z==0) then PC+2+exts(rel8 × 2) → PC if (C==1) then PC+2+exts(rel8 × 2) → PC if (C==0) then PC+2+exts(rel8 × 2) → PC if (N==1) then PC+2+exts(rel8 × 2) → PC if (N==0) then PC+2+exts(rel8 × 2) → PC if (V==1) then PC+2+exts(rel8 × 2) → PC if (V==0) then PC+2+exts(rel8 × 2) → PC if (V ^ N==1) then PC+2+exts(rel8 × 2) → PC if (V ^ N==0) then PC+2+exts(rel8 × 2) → PC if ({V ^ N} | Z==1) then PC+2+exts(rel8 × 2) → PC if ({V ^ N} | Z==0) then PC+2+exts(rel8 × 2) → PC if (C or Z==1) then PC+2+exts(rel8 × 2) → PC if (C or Z==0) then PC+2+exts(rel8 × 2) → PC 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 7.20 • 遅延分岐命令は必ず次の命令(遅延スロット)を実行してから分岐します。 • 命令フォーマット TYPE-D の rel8 および TYPE-F の rel11 フィールドと , アセンブラ 記述の label9, label12 の関係は次のようになっています。 rel8 = (label9-PC-2)/2 rel11 = (label12-PC-2)/2 422 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ • 命令フォーマット TYPE-I の rel20 と , アセンブラ記述の label21 の関係は次のように なっています。 rel20 = (labe21-PC-4)/2 表 A.2-13 ダイレクトアドレス指定命令 (14 命令 ) ニーモニック 型 OP CYC FLAG NZVC RMW DMOV @dir10, R13 D 08 b ---- − (dir8 × 4) → R13 7.40 DMOV R13, @dir10 D 18 a ---- − R13 → (dir8 × 4) 7.41 7.42 動作 備考 参照 DMOV @dir10, @R13+ D 0C 1+2a ---- − (dir8 × 4) → (R13), R13+4 → (R13) DMOV @R13+, @dir10 D 1C 1+2a ---- − (R13) → (dir8 × 4), R13+4 → (R13) DMOV @dir10, @-R15 D 0B 1+2a ---- − R15-4 → (R15), (dir8 × 4) → (R15) 7.44 DMOV @R15+, @dir10 D 1B 1+2a ---- − (R15) → (dir8 × 4), R15+4 → (R15) 7.45 DMOVH @dir9, R13 D 09 b ---- − (dir8 × 2) → R13 7.50 DMOVH R13, @dir9 D 19 a ---- − R13 → (dir8 × 2) 7.51 DMOVH @dir9, @R13+ D 0D 1+2a ---- − (dir8 × 2) → (R13), R13+2 → (R13) DMOVH @R13+, @dir9 D 1D 1+2a ---- − (R13) → (dir8 × 2), R13+2 → (R13) − (dir8) → R13 7.46 7.47 DMOVB @dir8, R13 D 0A b ---- DMOVB R13, @dir8 D 1A a ---- − R13 → (dir8) DMOVB @dir8, @R13+ D 0E 1+2a ---- − (dir8) → (R13), R13+2 → (R13) DMOVB @R13+, @dir8 D 1E 1+2a ---- − (R13) → (dir8), R13+2 → (R13) ワード ハーフワード 7.43 7.52 7.53 バイト 7.48 7.49 • 命令フォーマット TYPE-D の dir8 フィールドとアセンブラ記述の dir8, dir9, dir10 の 関係は次のようになっています。 dir8 = dir8 dir8 = dir9 >> 1 dir8 = dir10 >> 2 表 A.2-14 ビットサーチ命令 (3 命令 ) ニーモニック 型 OP CYC FLAG NZVC RMW SRCH0 Ri E 97-C 1 ---- − search_zero(Ri) → Ri 最初の 0 ビットを検索 7.110 SRCH1 Ri E 97-D 1 ---- − search_one(Ri) → Ri 最初の 1 ビットを検索 7.111 SRCHC Ri E 97-E 1 ---- − search_change(Ri) → Ri 最初の変化を検索 7.112 CM71-00105-1 動作 備考 FUJITSU MICROELECTRONICS LIMITED 参照 423 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-15 その他の命令 (16 命令 ) 型 OP NOP E’ 9F-A ANDCCR #u8 D 83 ニーモニック FLAG NZVC RMW 1 ---- − 何も変化しない 7.137 1 CCCC − CCR & u8 → CCR 7.12 CYC 動作 備考 参照 7.141 ORCCR #u8 D 93 1 CCCC − CCR | u8 → CCR STILM #u8 D 87 1 ---- − u8 → ILM ADDSP #s10 D A3 1 ---- − R15+s8 × 4 → R15 EXTSB Ri E 97-8 1 ---- − exts(Ri[7:0]) → Ri 符号拡張 8 → 32 7.59 EXTUB Ri E 97-9 1 ---- − extu(Ri[7:0]) → Ri ゼロ拡張 8 → 32 7.61 EXTSH Ri E 97-A 1 ---- − exts(Ri[15:0]) → Ri 符号拡張 16 → 32 7.60 EXTUH Ri E 97-B 1 ---- − extu(Ri[15:0]) → Ri ゼロ拡張 16 → 32 7.62 LDM0 (reglist) D 8C *1 ---- − reglist の Ri に対して (R15) → Ri R15 + 4 → R15 ロードマルチ R0 ∼ R7 7.109 LDM1 (reglist) D 8D *1 ---- − reglist の Ri に対して (R15) → Ri R15 + 4 → R15 ロードマルチ R8 ∼ R15 7.110 STM0 (reglist) D 8E *2 ---- − reglist の Ri に対して R15 - 4 → R15 Ri → (R15) ストアマルチ R0 ∼ R7 7.127 STM1 (reglist) D 8F *2 ---- − reglist の Ri に対して R15 - 4 → R15 Ri → (R15) ストアマルチ R8 ∼ R15 7.128 ENTER #u10 D 0F 1+a ---- − R14 → (R15-4) , R15-4 → R14, R15-extu(u8 × 4) → R15 関数の入口処理 7.54 LEAVE E’ 9F-9 b ---- − R14+4 → R15, (R15-4) → R14 関数の出口処理 7.85 XCHB @Rj, Ri A 8A 2a ---- ○ Ri → TEMP, extu((Rj)) → Ri, TEMP → (Rj) セマフォ管理用 バイトデータ 7.132 ILM 即値セット 7.126 7.8 *1 : LDM0(reglist), LDM1(reglist) の実行サイクル数は , 指定されたレジスタ数が n のとき b × n サイクルとなります。 *2 : STM0(reglist), STM1(reglist) の実行サイクル数は , 指定されたレジスタ数が n のとき a × n サイクルとなります。 • ADDSP 命令において , 命令フォーマット TYPE-D の s8 フィールドとアセンブラ記 述の s10 の関係は次のようになっています。 s8 = s10 >> 2 • ENTER 命令において , 命令フォーマット中の TYPE-D の u8 フィールドとアセンブ ラ記述の u10 の関係は次のようになっています。 u8 = u10 >> 2 424 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-16 FPU メモリロード命令 (7 命令 ) 型 OP CYC FCC ELGU RMW FLD @Rj, FRi K 07-C a ---- − (Rj) → FRi ワード 7.70 FLD @(R13, Rj), FRi K 07-E a ---- − (R13+Rj) → FRi ワード 7.71 FLD @(R14, disp16), FRi L 07-D0 a ---- − (R14+o14 × 4) → FRi ワード 7.72 FLD @(R15, udisp16), FRi L 07-D4 a ---- − (R15+u14 × 4) → FRi ワード 7.73 ワード 7.74 ニーモニック 動作 備考 参照 FLD @R15+, FRi L 07-D8 a ---- − (R15) → FRi R15 + 4 → R15 FLD @(BP, udisp18), FRi J 07-7 a ---- − (BP+u16 × 4) → FRi ワード 7.75 FLDM (frlist) N 07-DC *1 ---- − frlist の FRi に対して (R15) → FRi R15 + 4 → R15 ロードマルチ FR0 ∼ FR15 7.76 *1 : FLDM 命令の実行サイクル数は , 指定されたレジスタ数が n のとき , a × n サイクルになります。 • 命令フォーマットTYPE-Lのo14, u14フィールドと, アセンブラ記述のdisp16, udisp16 の関係は次のようになっています。 o14 = disp16 >> 2 u14 = udisp16 >> 2 • 命令フォーマット TYPE-J の u16 フィールドと , アセンブラ記述の udisp18 の関係は 次のようになっています。 u16 = udisp18 >> 2 表 A.2-17 FPU メモリストア命令 (7 命令 ) 型 OP CYC FCC ELGU RMW FST FRi, @Rj K 17-C a ---- − FRi → (Rj) ワード 7.83 FST FRi, @(R13, Rj) K 17-E a ---- − FRi → (R13+Rj) ワード 7.84 FST FRi, @(R14, disp16) L 17-D0 a ---- − FRi → (R14+o14 × 4) ワード 7.85 FST FRi, @(R15, udisp16) L 17-D4 a ---- − FRi → (R15+u14 × 4) ワード 7.86 ワード 7.87 ニーモニック 動作 備考 参照 FST FRi, @-R15 L 17-D8 a ---- − R15 - 4 → R15 FRi → (R15) FST FRi, @(BP, udisp18) J 17-7 a ---- − FRi → (BP+u16 × 4) ワード 7.88 − frlist の FRi に対して R15 - 4 → R15 FRi → (R15) ストアマルチ FR0 ∼ FR15 7.89 FSTM (frlist) N 17-DC *1 ---- *1 : FSTM 命令の実行サイクル数は , 指定されたレジスタ数が n のとき , a × n サイクルになります。 • 命令フォーマットTYPE-Lのo14, u14フィールドと, アセンブラ記述のdisp16, udisp16 の関係は次のようになっています。 o14 = disp16 >> 2 u14 = udisp16 >> 2 • 命令フォーマット TYPE-J の u16 フィールドと , アセンブラ記述の udisp18 の関係は 次のようになっています。 u16 = udisp18 >> 2 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 425 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-18 FPU 単精度浮動小数点演算命令 (12 命令 ) ニーモニック 型 OP CYC FCC ELGU RMW 動作 備考 参照 FADDs FRk, FRj, FRi M 07-A0 1 ---- − FRk + FRj → FRi 7.64 FSUBs FRk, FRj, FRi M 07-A2 1 ---- − 7.91 7.80 FCMPs FRk, FRj M 07-A4 1 CCCC − FRk - FRj → FRi FRk - FRj FMULs FRk, FRj, FRi M 07-A7 1 ---- − FRk × FRj → FRi FDIVs FRk, FRj, FRi M 07-AA 9 ---- − FRk / FRj → FRi 7.68 FNEGs FRj, FRi M 07-AF 1 ---- − FRj × -1 → FRi 7.81 7.67 FABSs FRj, FRi M 07-AC 1 ---- − |FRj| → FRi 7.63 FMADDs FRk, FRj, FRi M 07-A5 4 ---- − FRk × FRj + FRi → FRi 7.77 FMSUBs FRk, FRj, FRi M 07-A6 4 ---- − FRk × FRj - FRi → FRi 7.79 FSQRTs FRj, FRi M 07-AB 14 ---- − √ FRj → FRi 7.82 FiTOs FRj, FRi M 07-A8 1 ---- − (float)FRj → FRi 7.69 FsTOi FRj, FRi M 07-A9 1 ---- − (int)FRj → FRi 7.90 表 A.2-19 FPU レジスタ間転送命令 (3 命令 ) 型 OP CYC FCC ELGU RMW FMOVs FRj, FRi M 07-AE 1 ---- − FRj → FRi 7.78 MOV Rj, FRi K 07-3 1 ---- − Rj → FRi 7.131 MOV FRj, Ri K 17-3 1 ---- − FRj → Ri 7.132 ニーモニック 426 動作 FUJITSU MICROELECTRONICS LIMITED 備考 参照 CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-20 FPU 遅延なし分岐命令 (16 命令 ) ニーモニック 型 OP CYC FCC ELGU RMW 動作 分岐しない PC+4+exts(rel16 × 2) → PC if ( L || G || U ) then PC+4+exts(rel16 × 2) → PC if ( E ) then PC+4+exts(rel16 × 2) → PC if ( L || G ) then PC+4+exts(rel16 × 2) → PC if ( E || U ) then PC+4+exts(rel16 × 2) → PC if ( L || U ) then PC+4+exts(rel16 × 2) → PC if ( G || E ) then PC+4+exts(rel16 × 2) → PC if ( L ) then PC+4+exts(rel16 × 2) → PC if ( U || G || E ) then PC+4+exts(rel16 × 2) → PC if ( U || G ) then PC+4+exts(rel16 × 2) → PC if ( L || E ) then PC+4+exts(rel16 × 2) → PC if ( G ) then PC+4+exts(rel16 × 2) → PC if ( E || L || U ) then PC+4+exts(rel16 × 2) → PC if ( U ) then PC+4+exts(rel16 × 2) → PC if ( E || L || G ) then PC+4+exts(rel16 × 2) → PC FBN N 07-F0 2 ---- − FBA label17 N 07-FF 2 ---- − FBNE label17 N 07-F7 2 ---- − FBE label17 N 07-F8 2 ---- − FBLG label17 N 07-F6 2 ---- − FBUE label17 N 07-F9 2 ---- − FBUL label17 N 07-F5 2 ---- − FBGE label17 N 07-FA 2 ---- − FBL label17 N 07-F4 2 ---- − FBUGE label17 N 07-FB 2 ---- − FBUG label17 N 07-F3 2 ---- − FBLE label17 N 07-FC 2 ---- − FBG label17 N 07-F2 2 ---- − FBULE label17 N 07-FD 2 ---- − FBU label17 N 07-F1 2 ---- − FBO label17 N 07-FE 2 ---- − 備考 参照 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 7.65 • 命令フォーマット TYPE-N の rel16 と , アセンブラ記述の label17 の関係は次のよう になっています。 rel16 = (label17-PC-4)/2 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 427 付録 付録 A 命令一覧 FR81 ファミリ 表 A.2-21 FPU 遅延分岐命令 (16 命令 ) ニーモニック 型 OP CYC FCC ELGU RMW 動作 分岐しない PC+4+exts(rel16 × 2) → PC if ( L || G || U ) then PC+4+exts(rel16 × 2) → PC if ( E ) then PC+4+exts(rel16 × 2) → PC if ( L || G ) then PC+4+exts(rel16 × 2) → PC if ( E || U ) then PC+4+exts(rel16 × 2) → PC if ( L || U ) then PC+4+exts(rel16 × 2) → PC if ( G || E ) then PC+4+exts(rel16 × 2) → PC if ( L ) then PC+4+exts(rel16 × 2) → PC if ( U || G || E ) then PC+4+exts(rel16 × 2) → PC if ( U || G ) then PC+4+exts(rel16 × 2) → PC if ( L || E ) then PC+4+exts(rel16 × 2) → PC if ( G ) then PC+4+exts(rel16 × 2) → PC if ( E || L || U ) then PC+4+exts(rel16 × 2) → PC if ( U ) then PC+4+exts(rel16 × 2) → PC if ( E || L || G ) then PC+4+exts(rel16 × 2) → PC FBN:D N 17-F0 2 ---- ― FBA:D label17 N 17-FF 2 ---- ― FBNE:D label17 N 17-F7 2 ---- ― FBE:D label17 N 17-F8 2 ---- ― FBLG:D label17 N 17-F6 2 ---- ― FBUE:D label17 N 17-F9 2 ---- ― FBUL:D label17 N 17-F5 2 ---- ― FBGE:D label17 N 17-FA 2 ---- ― FBL:D label17 N 17-F4 2 ---- ― FBUGE:D label17 N 17-FB 2 ---- ― FBUG:D label17 N 17-F3 2 ---- ― FBLE:D label17 N 17-FC 2 ---- ― FBG:D label17 N 17-F2 2 ---- ― FBULE:D label17 N 17-FD 2 ---- ― FBU:D label17 N 17-F1 2 ---- ― FBO:D label17 N 17-FE 2 ---- ― 備考 参照 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 7.66 • 遅延分岐命令は必ず次の命令(遅延スロット)を実行してから分岐します。 • 命令フォーマット TYPE-N の rel16 と , アセンブラ記述の label17 の関係は次のよう になっています。 rel16 = (label17-PC-4)/2 428 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 A 命令一覧 FR81 ファミリ A.3 遅延スロットに配置可能な命令一覧 遅延分岐命令の遅延スロットに配置可能な命令一覧を示します。 ● 加減算命令 ADD Rj, Ri ADD #14, Ri ADD2 #i4, Ri ADDC Rj, Ri ADDN Rj, Ri ADDN #i4, Ri ADDN2 #i4, Ri SUB Rj, Ri SUBC Rj, Ri CMP #i4, Ri CMP2 #i4, Ri OR Rj, Ri EOR Rj, Ri DIV0S Ri DIV0U Ri DIV1 Ri DIV2 Ri DIV3 DIV4S LSL Rj, Ri LSL #u4, Ri LSL2 #u4, Ri LSR Rj, Ri LSR #u4, Ri LSR2 #u4, Ri ASR Rj, Ri ASR #u4, Ri ASR2 #u4, Ri SUBN Rj, Ri ● 比較演算命令 CMP Rj, Ri ● 論理演算命令 AND Rj, Ri ● 乗除算命令 ● シフト演算命令 ● 即値データ転送命令 LDI:8 #i8, Ri ● メモリロード命令 LD @Rj, Ri LD @(R13, Rj), Ri LD @(R14, disp10), Ri LD @(R15, udisp6), Ri LD @R15+, Ri LD @R15+, Rs LDUH @Rj, Ri LDUH @(R13, Rj), Ri LDUH @(R14, disp9), Ri LDUB @Rj, Ri LDUB @(R13, Rj), Ri LDUB @(R14, disp8), Ri ST Ri, @Rj ST Ri, @(R13, Rj) ST Ri, @(R14, disp10) ST Ri, @(R15, udisp6) ST Ri, @-R15 ST Rs, @-R15 ● メモリストア命令 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 429 付録 付録 A 命令一覧 FR81 ファミリ ST PS, @-R15 STH Ri, @Rj STH Ri, @(R13, Rj) STH Ri, @(R14, disp9) STB Ri, @Rj STB Ri, @(R13, Rj) STB Ri, @(R14, disp8) MOV Rj, Ri MOV Rs, Ri MOV Ri, Rs MOV PS, Ri MOV Ri, PS ● レジスタ間転送命令 ● ダイレクトアドレス指定命令 DMOV @dir10, R13 DMOV R13, @dir10 DMOVH @dir9, R13 DMOVH R13, @dir9 DMOVB @dir8, R13 DMOVB R13, @dir8 SRCH1 Ri SRCHC Ri NOP ANDCCR #u8 ORCCR #u8 STILM #u8 ADDSP #s10 EXTSB Ri EXTUB Ri EXTSH Ri EXTUH Ri ● ビットサーチ命令 SRCH0 Ri ● その他の命令 LEAVE 430 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 B 命令マップ FR81 ファミリ 付録 B 命令マップ FR81 ファミリ CPU の命令マップを示します。 B.1 命令マップ B.2 拡張命令マップ CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 431 432 ANDB Rj, @Ri LDUB @Rj, STB Ri, Ri @Rj 6 FUJITSU MICROELECTRONICS LIMITED LDM1 (reglist) STM0 (reglist) DMOV @d10, DMOV @-R15 @R15+, @d10 DMOV @d10, DMOV @R13+ @R13+, @d10 DMOVH DMOVH @d9, @R13+ @R13+, @d9 DMOVB DMOVB @d8, @R13+ @R13+, @d8 B C D E INT #u8 LDM0 (reglist) DMOVB R13, @d8 DMOVB @d8, R13 A ENTER #u10 MOV Rj, Ri DMOVH R13, @d9 DMOVH @d9, R13 9 LSL2 #u4, Ri MOV Rs, Ri ADD Rj, Ri LSL Rj, Ri ADD2 #i4, Ri MOV Ri, Rs LSR Rj, Ri STM1 (reglist) SUBN Rj, Ri SUBC Rj, Ri SUB Rj, Ri MULUH Rj, Ri 付録 B.2 を MUL Rj, Ri MULH Rj, Ri 参照 EORB Rj, @Ri EORH Rj, @Ri EOR Rj, @Ri ASR2 #u4, Ri CMP Rj, Ri ASR Rj, Ri CMP2 #i4, Ri LD:20 #i20, MULU Rj, Ri Ri XCHB @Rj, EOR Rj, Ri Ri BTSTH #u4, BEORH @Ri #u4, @Ri BTSTL #u4, BEORL #u4, CMP #i4, Ri ASR #u4, Ri @Ri @Ri DMOV R13, @d10 DMOV @d10, R13 8 F ORB Rj, @Ri ORH Rj, @Ri ADDSP #s10 ADDN Rj, Ri ADDC Rj, STILM #u8 付録 B.2 を Ri 参照 付録 B.2 を 付録 B.2 を 参照 参照 7 LDUH@(R14 STHRi, @(R LDUB@(R1 STBRi, , disp9), Ri 14, disp9) 4, disp8), Ri @(R14, disp8) ANDH Rj, @Ri STH Ri, @Rj LDUH @ Rj, Ri 5 STRi, @(R 14, disp10) OR Rj, @Ri ADD #i4, Ri LSL #u4, Ri AND Rj, @Ri LD @Rj, Ri ST Ri, @Rj 4 LD@(R14, disp10), Ri ORCCR #u8 ANDCCR #u8 LD @ (R15, ST Ri, udisp6), Ri @(R15, ud6) LSR #u4, Ri B 3 ADDN #i4, Ri A BORH #u4, ADDN2 #i4, LSR2 #u4, @Ri Ri Ri BORL #u4, @Ri 9 AND Rj, Ri OR Rj, Ri 8 LDUB @ STB Ri, R13, Rj), Ri @(R13, Rj) 7 2 6 BANDH #u4, @Ri 5 LDUH @(R13, STH Ri, Rj), Ri @(R13, Rj) 4 1 3 BANDL #u4, @Ri 2 LD @ (R13, ST Ri, Rj), Ri @(R13, Rj) 1 LDI:8 #i8, Ri C CALL:D label12 CALL label12 D BHI label9 BLS label9 BGT label9 BLE label9 BGE label9 BLT label9 BNV label9 BV label9 BP label9 BN label9 BNC label9 BC label9 BNE label9 BEQ label9 BNO label9 BRA label9 E BHI:D label9 BLS:D label9 BGT:D label9 BLE:D label9 BGE:D label9 BLT:D label9 BNV:D label9 BV:D label9 BP:D label9 BN:D label9 BNC:D label9 BC:D label9 BNE:D label9 BEQ:D label9 BNO:D label9 BRA:D label9 F B.1 0 0 上位 4 ビット 付録 付録 B 命令マップ FR81 ファミリ 命令マップ オペコードが 8 ビット以下の命令マップを示します。 命令ごとに 8 ビットのオペコード (OP) を表にしたものを図 B.1-1 に示します。オペコー ド (OP) が 8 ビット未満の命令は MSB 側に詰めて 8 ビットに換算してあります。 図 B.1-1 命令マップ CM71-00105-1 下位 4 ビット 付録 付録 B 命令マップ FR81 ファミリ 拡張命令マップ B.2 オペコードが 12 ビット以上の命令マップを示します。 オペコード (OP) が 12 ビットの命令を , 上位 8 ビットと下位 4 ビットに分けて , 表 B.21 に示します。 表 B.2-1 12 ビットオペコードの命令マップ 上位 8 ビット 下位 4 ビット 07 17 97 9F 0 LD @R15+,Ri ST Ri,@-R15 JMP @Ri JMP:D @Ri 1 MOV Ri,PS MOV PS,Ri CALL @Ri CALL:D @Ri 2 LCALL label21 LCALL:D label21 RET RET:D 3 MOV Rj, FRi MOV FRi, Rj RETI INTE 4 LD @(BP, udisp18), Ri ST Ri, @(BP, udisp18) DIV0S Ri − 5 LDUH @(BP, udisp17), Ri STH Ri, @(BP, udisp17) DIV0U Ri − 6 LDUB @(BP, udisp16), Ri STB Ri, @(BP, udisp16) DIV1 Ri DIV3 7 FLD @(BP, udisp18), FRi FST FRi, @(BP, udisp18) DIV2 Ri DIV4S 8 LD @R15+,Rs ST Rs,@-R15 EXTSB Ri LDI:32 #i32,Ri 9 LD @R15+,PS ST PS,@-R15 EXTUB Ri LEAVE A 表 B.2-2 を参照 表 B.2-2 を参照 EXTSH Ri NOP B − − EXTUH Ri C FLD @Rj, FRi FST FRi, @Rj − SRCH0 D 表 B.2-2 を参照 表 B.2-2 を参照 − SRCH1 E FLD @(R13, Rj), FRi FST FRi, @(R13, Rj) − SRCHC F 表 B.2-3 を参照 表 B.2-3 を参照 − − − −:未定義 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 433 付録 付録 B 命令マップ FR81 ファミリ オペコード (OP) が 16 ビットと 14 ビットの命令を , 上位 8 ビットと下位 8 ビットに分 けて , 表 B.2-2 と表 B.2-3 に示します。オペコードが 14 ビットの命令は , MSB 側に詰 めて 16 ビットに換算しています。 表 B.2-2 16/14 ビットオペコードの命令マップ 上位 8 ビット 07 A0 FADDs FRK, FRj, FRi A1 A2 − − − FSUBs FRK, FRj, FRi A3 下位 8 ビット 17 − − − A4 FCMPs FRk, FRj − A5 FMADDs FRk, FRj, FRi − A6 FMSUBs FRk, FRj, FRi − A7 FMULs FRK, FRj, FRi − A8 FiTOs FRj, FRi − A9 FsTOi FRj, FRi − AA FDIVs FRK, FRj, FRi − AB FSQRTs FRk, FRj − AC FABSs FRj, FRi − AD − − AE FMOVs FRj, FRi − AF FNEGs FRj, FRi − D0* FLD @(R14, disp16), FRi FST FRi, @(R14, disp16) D4* FLD @(R15, udisp16), FRi FST FRi, @(R15, udisp16) D8* FLD @R15+, FRi FST FRi, @-R15 DC* FLDM (frlist) FSTM (frlist) * : 14 ビットオペコードの命令です。 − : 未定義 434 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 B 命令マップ FR81 ファミリ 表 B.2-3 16 ビットオペコードの命令マップ 上位 8 ビット 下位 8 ビット 07 17 F0 FBN FBN:D F1 FBU label17 FBU:D label17 F2 FBG label17 FBG:D label17 F3 FBUG label17 FBUG:D label17 F4 FBL label17 FBL:D label17 F5 FBUL label17 FBUL:D label17 F6 FBLG label17 FBLG:D label17 F7 FBNE label17 FBNE:D label17 F8 FBE label17 FBE:D label17 F9 FBUE label17 FBUE:D label17 FA FBGE label17 FBGE:D label17 FB FBUGE label17 FBUGE:D label17 FC FBLE label17 FBLE:D label17 FD FBULE label17 FBULE:D label17 FE FBO label17 FBO:D label17 FF FBA label17 FBA:D label17 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 435 付録 付録 C FPU 例外処理についての補足 付録 C C.1 FR81 ファミリ FPU 例外処理についての補足 IEEE754-1985 規格準拠 FR81 ファミリ CPU は , 以下の点を除いて IEEE754-1985 規格 ( 以下 IEEE754) に準拠し ています。 ① オーバフロー IEEE754 では , オーバフローが発生した場合 , バイアスされた ( 単精度では +192) 指 数部を結果とするよう規定されていますが , このようにバイアス値を加えることは 行いません。 ② アンダフロー IEEE754 では , アンダフローが発生した場合 , バイアスされた ( 単精度では -192) 指 数部を結果とするよう規定されていますが , このようにバイアス値を減ずることは 行いません。 また , 結果が非正規化数になる場合 , 結果はゼロにフラッシュされます。 ③ 非正規化数 IEEE754 は , 急激なゼロフラッシュを防ぐために非正規化数を規定していますが , 本アーキテクチャでは非正規化数をサポートしません。非正規化数入力例外が禁止 されている場合に非正規化数が入力されると , その数値はゼロとして計算します。 演算結果が非正規化数になる場合も , 結果はゼロとなります。 ④ QNaN 移動 , 符号反転・絶対値命令を除き , QNaN の出力パタンは , 7FFFFFFFH 固定です。 ⑤ 非サポート命令 次の命令はサポートしません。 • 剰余 • 整数丸め (Round Floating-Point Number to Integer Value) • 2 進数⇔ 10 進数変換 ⑥ 浮動小数点演算例外 演算が IEEE754 に対し満足な結果を得られない場合 , 例外が発生します。本アーキ テクチャでは , IEEE754 で定められた 5 つの例外 ( 不正確 , アンダフロー , オーバフ ロー , ゼロ除算 , 無効演算 ) のほかに 1 つの例外 ( 非正規化数入力 ) を付加した 6 つ の例外があります。 IEEE754 では , 浮動小数点演算例外が発生した場合には規定された操作を行いト ラップを発生させることになっていますが , 本アーキテクチャでは例外として実装 していますので浮動小数点演算例外が発生した場合デスティネーションへの書込 みは行いません。 436 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 C FPU 例外処理についての補足 FR81 ファミリ C.2 FPU 例外 FPU 例外には , IEEE754 で定められた不正確 , アンダフロー , オーバフロー , ゼロ除算 , 無効演算の 5 つの例外と非正規化数が入力された場合の例外を追加した 6 つの例外が あります。これらの演算例外はそれぞれ例外を発生させるかどうかを FPU 制御レジス タ (FCR:EEF) で設定可能です。また , 例外条件成立時の出力結果も FCR:EEF の設定に より変化します。 例外が許可されていない場合 , 各演算の出力結果は例外が発生しても演算が進行した 時に要求した結果が得られるように , あるいは無効な演算であったことが結果から分 かる形で出力されます。例外が許可されている場合 , 例外要因のために意味のある演算 結果を求めることができない場合は演算結果を書き込まず , そうでない場合は演算結 果を書き込みます。 ① 無効演算例外 (Invalid Operation) オペランドが演算に対し不正であったために , 正しく演算できない場合に発生しま す。具体的に以下の場合に発生します。 • SNaN が入力された場合 • 結果が不定形 ( ∞−∞ , 0 ×∞ , 0/0, ∞ / ∞ , – 1 など ) • 変換命令で変換もとの値が変換先のフォーマットで表せないとき 例外が発生したときの動作は以下になります。 [FCR:EEF:V=1] 浮動小数点レジスタまたは FCR:FCC への書込みを抑止します。 FCR:CEF:V フラグをセットし , FPU 例外を発生させます。 [FCR:EEF:V=0] 変換・比較命令以外は浮動小数点レジスタへ QNaN (7FFFFFFFH) を格納します。 変換命令は , ± MAX を浮動小数点レジスタへ格納します。 比較命令は , FCR:FCC:U フラグをセットします。 FCR:ECF:V をセットします。 ② 零除算例外 (Division by Zero) 零除算を行う場合に発生します。この例外が発生したときの動作は以下になりま す。 [FCR:EEF:Z=1] 浮動小数点レジスタへの書込みを抑止します。 FCR.CEF.Z フラグをセットし , 例外を発生させます。 [FCR:EEF:Z=0] 浮動小数点レジスタへ無限大を格納します。符号は , 同符号のときに正 , 異符号 のときに負となります。 FCR:ECF:Z フラグをセットします。 CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 437 付録 付録 C FPU 例外処理についての補足 FR81 ファミリ ③ オーバフロー例外 (Overflow) 演算中に指数が定められたフォーマットで表現できる最大値を超えた場合に発生 します。この例外が発生したときの動作は以下になります。 [FCR:EEF:O=1] 浮動小数点レジスタへの書込みを抑止します。 FCR:CEF:O フラグをセットし , 例外を発生させます。 [FCR:EEF:O=0] 表 C.2-1 のように丸めモードに従った値を浮動小数点レジスタへ書き込みます。 FCR:ECF:O フラグをセットします。 表 C.2-1 丸めモードとオーバフロー時の出力結果 出力結果 丸めモード (FCR:RM) 正のオーバフ ロー 負のオーバフ ロー +∞ -∞ 01B ( 零 ) +MAX -MAX 10B (+ ∞ ) +∞ -MAX 11B (- ∞ ) +MAX -∞ 00B ( 最近値 ) ④ アンダフロー例外 (Underflow) 丸め結果が不正確で , 絶対値が指定された形式の最小正規化数より小さくなる場合 に発生します。具体的には , 仮数を正規化する過程で指数部がゼロになる , あるい は乗算・除算の過程で指数部が負になるときに発生します。厳密には , 丸め処理を 行う前の値が非正規化数で , これを丸めた結果最小正規化数になる場合にも発生し ます ( 丸め前規則 )。丸めない結果が正しくかつゼロの場合は発生しません。この 例外が発生したときの動作は以下の通りです。 [FCR:EEF:U=1] 浮動小数点レジスタへの書込みを抑止します。 FCR:CEF:U フラグをセットし , 例外を発生させます。 [FCR:EEF:U=0] 常にゼロを浮動小数点レジスタへ格納します。( ゼロフラッシュ ) FCR:ECF:U フラグをセットします。 ⑤ 不正確例外 (Inexact) 丸め処理の結果が不正確な場合 ( 非正規化数をゼロフラッシュした場合 , FCR:EEF:U=0 のときにアンダフロー例外を検出した場合も含む ), またはオーバフ ロー例外が無効でオーバフローした場合 ( 丸めた結果オーバフローを起こした場合 も含む ) に発生します。この例外が発生したときの動作は以下の通りです。 [FCR:EEF:X=1] 浮動小数点レジスタへの書込みを抑止します。 FCR:CEF:X フラグをセットし , 例外を発生させます。 438 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 付録 付録 C FPU 例外処理についての補足 FR81 ファミリ [FCR:EEF:X=0] 演算結果を浮動小数点レジスタへ格納します。 FCR:ECF:X フラグをセットします。 ⑥ 非正規化数入力例外 (Denormalized Number Input) 入力オペランドに非正規化数がある場合に発生します。この例外が発生したときの 動作は以下の通りです。 [FCR:EEF:D=1] 浮動小数点レジスタへの書込みを抑止します。 FCR:CEF:D フラグをセットし , 例外を発生させます。 [FCR:EEF:D=0] 入力オペランドが非正規化数のものはゼロにして演算を行います。 FCR:ECF:D フラグをセットします。 C.3 丸め処理 丸め処理は , IEEE754 に準拠しています。仮数は 24 ビット ( 単精度 ) で表現されるの で , 演算結果の仮数がそれ以上のビット数で表されている場合 ( 非正規化数を含む ), 24 ビット ( 単精度 ) への近似 , いわゆる丸め処理を行います。以下にその処理について説 明します。 仮数部の演算結果 (S) は図 C.3-1 のようになっています ( ガードビットがない ( 処理済 の ) 場合は次へ )。 図 C.3-1 ガードビットを含む仮数部の演算結果 26 3 仮数 (p) 2 1 0 g r s ここで , g はガード ( 保護 ) ビット , r はランド ( 丸め ) ビット , s はスティッキービットで す。仮数を p としています。 次にこの r と s の or(r ∪ s) を求め , これを新たに s, g を新たに r と再設定します。 図 C.3-2 ガードビットを含まない仮数部の演算結果 25 2 仮数 (p) CM71-00105-1 FUJITSU MICROELECTRONICS LIMITED 1 0 r s 439 付録 付録 C FPU 例外処理についての補足 FR81 ファミリ 次に , 表 C.3-1 に従い丸め作業を行います。ここで , S は仮数部の演算結果 , r はラウン ドビット , s はスティッキービット , LSB は p の LSB ビットをさします。 (!s は s の反転 ) 表 C.3-1 丸めモードと仮数部の丸め作業 丸めモード (FCR:RM) S≧0 S<0 00B ( 最近値 ) r ∧ !s ∧ LSB または r ∧ s が真なら p+1 r ∧ !s ∧ LSB または r ∧ s が真ならば p+1 01B ( ゼロ ) 10B (+ ∞ ) r ∪ s が真なら p+1 11B (- ∞ ) r ∪ s が真なら p+1 空欄は , p をそのまま結果とすることを意味します。 440 FUJITSU MICROELECTRONICS LIMITED CM71-00105-1 索引 索引 Numerics A 20 ビットアドレッシング領域 20 ビットアドレッシング領域と 32 ビット アドレッシング領域 ........................................10 ADD ADD (Add 4bit Immediate Data to Destination Register) ...........................................................109 ADD (Add Word Data of Source Register to Destination Register) ........................................ 111 ADD2 (Add 4bit Immediate Data to Destination Register) ...........................................................113 ADDC ADDC (Add Word Data of Source Register and Carry Bit to Destination Register) ..............................115 ADDN ADDN (Add Immediate Data to Destination Register) ..........................................................................117 ADDN (Add Word Data of Source Register to Destination Register) ........................................ 118 ADDN2 (Add Immediate Data to Destination Register) ..........................................................................120 ADDSP ADDSP (Add Stack Pointer and Immediate Data) ..........................................................................121 AND AND (And Word Data of Source Register to Destination Register) ........................................ 124 AND (And Word Data of Source Register to Data in Memory) ....................................................... 122 ANDB ANDB (And Byte Data of Source Register to Data in Memory) ......................................................126 ANDCCR ANDCCR (And Condition Code Register and Immediate Data) ............................................... 128 ANDH ANDH (And Halfword Data of Source Register to Data in Memory) ....................................................... 130 ASR ASR (Arithmetic shift to the Right Direction) ..................................................................132, 134 ASR2 (Arithmetic shift to the Right Direction) ..........................................................................136 B BANDH BANDH (And 4bit Immediate Data to Higher 4bit of Byte Data in Memory) ...................................... 138 BANDL BANDL (And 4bit Immediate Data to Lower 4bit of Byte Data in Memory) ...................................... 140 Bcc Bcc (Branch relative if Condition satisfied) ........... 142 Bcc:D (Branch relative if Condition satisfied) ....... 144 BEORH BEORH (Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory) ...................................... 146 441 索引 BEORL BEORL (Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory) ......................................148 BORH BORH (Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory) ...............................................150 BORL BORL (Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory) ...............................................152 BTSTH BTSTH (Test Higher 4bit of Byte Data in Memory) ..........................................................................154 BTSTL BTSTL (Test Lower 4bit of Byte Data in Memory) ..........................................................................156 C CALL CALL (Call Subroutine) .................................158, 160 CALL:D (Call Subroutine) .............................161, 163 CCR コンデションコードレジスタ (CCR) ...................23 CMP CMP (Compare Immediate Data and Destination Register) ............................................................165 CMP (Compare Word Data in Source Register and Destination Register) ........................................167 CMP2 (Compare Immediate Data and Destination Register) ............................................................169 CPU FR80 ファミリ CPU の特長 .....................................2 FR80 ファミリ CPU のレジスタ構成 ...................16 D DIV DIV0S (Initial Setting Up for Signed Division) ..........................................................................171 DIV0U (Initial Setting Up for Unsigned Division) ..........................................................................173 DIV1 (Main Process of Division) ...........................175 DIV2 (Correction When Remain is 0) ....................177 DIV3 (Correction When Remain is 0) ....................179 DIV4S (Correction Answer for Signed Division) ..........................................................................181 DMOV DMOV (Move Word Data from Direct Address to Register) ............................................................183 DMOV (Move Word Data from Direct Address to Post Increment Register Indirect Address) ...............187 DMOV (Move Word Data from Direct Address to Pre Decrement Register Indirect Address) ..............191 DMOV (Move Word Data from Post Increment Register Indirect Address to Direct Address) ..................................................................189, 193 DMOV (Move Word Data from Register to Direct Address) ............................................................185 DMOVB DMOVB (Move Byte Data from Direct Address to Post Increment Register Indirect Address) ...............199 442 DMOVB (Move Byte Data from Direct Address to Register) ...........................................................195 DMOVB (Move Byte Data from Post Increment Register Indirect Address to Direct Address) ..........................................................................201 DMOVB (Move Byte Data from Register to Direct Address) ............................................................ 197 DMOVH DMOVH (Move Halford Data from Direct Address to Post Increment Register Indirect Address) ..........................................................................207 DMOVH (Move Halfword Data from Direct Address to Register) ...........................................................203 DMOVH (Move Halfword Data from Post Increment Register Indirect Address to Direct Address) ..........................................................................209 DMOVH (Move Halfword Data from Register to Direct Address) ............................................................ 205 E EIT EIT 処理からの復帰 ...............................................47 EIT 処理シーケンス ...............................................46 EIT 処理の基本動作 ...............................................45 EIT 処理の種類と事前準備 ................................... 45 EIT 要因の優先順位 ...............................................64 多重 EIT 処理 .......................................................... 63 多重 EIT 処理と優先順位 ...................................... 63 ENTER ENTER (Enter Function) ........................................ 211 EOR EOR (Exclusive Or Word Data of Source Register to Data in Memory) .............................................. 213 EOR (Exclusive Or Word Data of Source Register to Destination Register) ........................................ 215 EORB EORB (Exclusive Or Byte Data of Source Register to Data in Memory) .............................................. 217 EORH EORH (Exclusive Or Halfword Data of Source Register to Data in Memory) .......................................... 219 EXTSB EXTSB (Sign Extend from Byte Data to Word Data) ..........................................................................221 EXTSH EXTSH (Sign Extend from Byte Data to Word Data) ..........................................................................222 EXTUB EXTUB (Unsign Extend from Byte Data to Word Data) ..........................................................................223 EXTUH EXTUH (Unsign Extend from Byte Data to Word Data) ..........................................................................224 F FABSs FABSs (Single Precision Floating Point Absolute Value) ...............................................................225 FADDs FADDs (Single Precision Floating Point Add) ....... 226 索引 FBcc FBcc (Floating Point Conditional Branch) .............228 FBcc:D (Floating Point Conditional Branch with Delay Slot) ...................................................................230 FCMPs FCMPs (Single Precision Floating Point Compare) ..........................................................................232 FDIVs FDIVs (Single Precision Floating Point Division) ..........................................................................234 FiTOs FiTOs (Convert from Integer to Single Precision Floating Point) ..................................................236 FLD FLD (Load Word Data in Memory to Floating Register) ..........................................................................242 FLD (Single Precision Floating Point Data Load) ..........................................237, 238, 239, 240, 241 FLDM FLDM (Single Precision Floating Point Data Load to Multiple Register) .............................................243 FMADDs FMADDs (Single Precision Floating Point Multiply and Add) ...........................................................245 FMOVs FMOVs (Single Precision Floating Point Move) ..........................................................................247 FMSUBs FMSUBs (Single Precision Floating Point Multiply and Subtract) ............................................................248 FMULs FMULs (Single Precision Floating Point Multiply) ..........................................................................250 FNEGs FNEGs (Single Precision Floating Point sign reverse) ..........................................................................252 FR80 ファミリ FR80 ファミリ CPU の特長 .....................................2 FR80 ファミリ CPU のレジスタ構成 ...................16 FR ファミリ 従来 FR ファミリとの変更点 ..................................4 FSQRTs FSQRTs (Single Precision Floating Point Square Root) ..........................................................................253 FST FST (Single Precision Floating Point Data Store) ..........................................254, 255, 256, 257, 258 FST (Store Word Data in Floating Point Register to Memory) ...........................................................259 FSTM FSTM (Single Precision Floating Point Data Store from Multiple Register) .............................................260 FsTOi FsTOi (Convert from Single Precision Floating Point to Integer) ..............................................................262 FSUBs FSUBs (Single Precision Floating Point Subtract) ..........................................................................264 I I 割込み許可フラグ (I) の反映タイミング ............66 ILM 割込みレベルマスクレジスタ (ILM) ................... 22 割込みレベルマスクレジスタ (ILM) の反映タイミ ング .................................................................... 66 INT INT (Software Interrupt) .........................................266 INTE INTE (Software Interrupt for Emulator) ................. 268 INTE 命令 INTE 命令 ................................................................ 59 INT 命令 INT 命令 ................................................................... 59 J JMP JMP (Jump) .............................................................270 JMP:D (Jump) .........................................................271 L LCALL LCALL (Long Call Subroutine) ............................. 272 LCALL:D (Long Call Subroutine) .........................273 LD LD (Load Word Data in Memory to Program Status Register) ...........................................................286 LD (Load Word Data in Memory to Register) ..........................274, 275, 277, 279, 281, 283, 284 LDI LDI:20 (Load Immediate 20bit Data to Destination Reginster) .........................................................288 LDI:32 (Load Immediate 32 bit Data to Destination Register) ...........................................................290 LDI:8 (Load Immediate 8bit Data to Destination Register) ...........................................................292 LDM LDM0 (Load Multiple Registers) ........................... 293 LDM1 (Load Multiple Registers) ........................... 295 LDUB LDUB (Load Byte Data in Memory to Register) ..................................................297, 298, 300, 302 LDUH LDUH (Load Halfword Data in Memory to Register) ..................................................303, 304, 306, 308 LEAVE LEAVE (Leave Function) .......................................309 LSL LSL (Logical Shift to the Left Direction) ..................................................................311, 313 LSL2 (Logical Shift to the Left Direction) ............. 315 LSR LSR (Logical Shift to the Right Direction) ....316, 318 LSR2 (Logical Shift to the Right Direction) ..........320 443 索引 M R MDH 乗除算結果レジスタ (MDH,MDL) ........................31 MDL 乗除算結果レジスタ (MDH,MDL) ........................31 MOV MOV (Move Word Data in Floating Point Register to General Purpose Register) ................................329 MOV (Move Word Data in General Purpose Register to Floating Point Register) ....................................328 MOV (Move Word Data in Program Status Register to Destination Register) ........................................323 MOV (Move Word Data in Source Register to Destination Register) ........................321, 322, 324 MOV (Move Word Data in Source Register to Program Status Register) .................................................326 MUL MUL (Multiply Word Data) ...................................330 MULH MULH (Multiply Halfword Data) ..........................332 MULU MULU (Multiply Unsigned Word Data) ................334 MULUH MULUH (Multiply Unsigned Halfword Data) ..........................................................................336 R15 スタックポインタと R15 の関係 .......................... 18 RET RET (Return from Subroutine) ............................... 349 RET:D (Return from Subroutine) ........................... 350 RETI RETI (Return from Interrupt) ................................. 352 RP リターンポインタ (RP) .......................................... 27 S S プログラムカウンタ (PC) ......................................20 スタックフラグ (S) の書換え後のレジスタ参照に よるインターロック ........................................ 77 SCR システムコンデションコードレジスタ (SCR) ............................................................................26 SRCH SRCH0 (Search First Zero bit position distance From MSB) ................................................................ 355 SRCH1 (Search First One bit position distance From MSB) ................................................................ 357 SRCHC SRCHC (Search First bit value change position distance From MSB) ....................................................... 359 SSP システムスタックポインタ (SSP) ........................ 28 ST ST (Store Word Data in Program Status Register to Memory) ...........................................................373 ST (Store Word Data in Register to Memory) ..........................361, 362, 364, 366, 368, 370, 371 STB STB (Store Byte Data in Register to Memory) ..................................................375, 376, 378, 380 STH STH (Store Halfword Data in Register to Memory) ..................................................381, 383, 385, 387 STILM STILM (Set Immediate Data to Interrupt Level Mask Register) ...........................................................388 STM STM0 (Store Multiple Registers) ........................... 390 STM1 (Store Multiple Registers) ........................... 392 SUB SUB (Subtract Word Data in Source Register from Destination Register) ........................................ 394 SUBC SUBC (Subtract Word Data in Source Register and Carry bit from Destination Register) ................ 396 SUBN SUBN (Subtract Word Data in Source Register from Destination Register) ........................................ 398 プログラムステータス (PS) ..................................21 T N NMI ノンマスカブルインタラプト (NMI) ...................57 NOP NOP (No Operation) ...............................................338 O OR OR (Or Word Data of Source Register to Data in Memory) ......................................................339 OR (Or Word Data of Source Register to Destination Register) ............................................................341 ORB ORB (Or Byte Data of Source Register to Data in Memory) ......................................................343 ORCCR ORCCR (Or Condition Code Register and Immediate Data) .................................................................345 ORH ORH (Or Halfword Data of Source Register to Data in Memory) ......................................................347 P PC PS TBR テーブルベースレジスタ (TBR) ...........................30 444 索引 U あ USP ユーザスタックポインタ (USP) ............................29 アドレス空間 アドレス空間 ............................................................ 8 アドレス指定形式 アドレス指定形式 ..................................................89 アドレッシング領域 20 ビットアドレッシング領域と 32 ビット アドレッシング領域 ........................................ 10 X XCHB XCHB (Exchange Byte Data) .................................400 い インターロック インターロック ......................................................77 く 具体例 遅延分岐命令の具体例 ........................................ 101 こ コンデションコードレジスタ コンデションコードレジスタ (CCR) ................... 23 し システムコンデションコードレジスタ システムコンデションコードレジスタ (SCR) ............................................................................26 システムスタックポインタ システムスタックポインタ (SSP) ........................ 28 乗除算結果レジスタ 乗除算結果レジスタ (MDH,MDL) .......................31 除算 ステップ除算命令 ................................................103 符号付き除算 ........................................................ 103 符号なし除算 ........................................................ 104 処理シーケンス EIT 処理シーケンス ...............................................46 処理例 遅延なし分岐命令の処理例 ..................................80 遅延分岐命令の処理例 .......................................... 81 す スタックフラグ スタックフラグ (S) の書換え後のレジスタ参照に よるインターロック ........................................ 77 スタックポインタ スタックポインタと R15 の関係 .......................... 18 ステップ除算命令 ステップ除算命令 ................................................103 ステップトレース ステップトレーストラップ ..................................60 スロット 分岐命令と遅延スロット .................................... 100 445 索引 せ の 前後不一致 前後不一致の防止方法 ...........................................75 割込みの受付けと取消しの前後不一致 ...............75 専用レジスタ 専用レジスタ ...........................................................19 専用レジスタの構成 ...............................................19 ノンブロッキングロード ノンブロッキングロード ...................................... 79 ノンマスカブルインタラプト ノンマスカブルインタラプト (NMI) ................... 57 た ハーフワードデータ ハーフワードデータ .............................................. 12 バイトオーダ バイトオーダ .......................................................... 13 バイトデータ バイトデータ .......................................................... 12 バイパス レジスタバイパス ..................................................76 パイプライン パイプライン動作と割込み処理 .......................... 75 パイプラインによる命令実行 ..............................72 反映タイミング 割込み許可フラグ (I) の反映タイミング ............66 割込みレベルマスクレジスタ (ILM) の反映タイミ ング .................................................................... 66 汎用レジスタ 汎用レジスタ .......................................................... 17 汎用レジスタの構成 .............................................. 17 汎用レジスタの特殊な使い方 ..............................17 タイミング 割込み許可フラグ (I) の反映タイミング .............66 割込みレベルマスクレジスタ (ILM) の反映タイミ ング ....................................................................66 ダイレクトアドレス ダイレクトアドレス領域 .........................................8 多重 EIT 処理 多重 EIT 処理 ..........................................................63 多重 EIT 処理と優先順位 ......................................63 ち 遅延 遅延なし分岐命令 .................................................102 遅延なし分岐命令の処理例 ...................................80 遅延分岐処理 ...........................................................80 遅延分岐命令 .........................................................100 遅延分岐命令の具体例 .........................................101 遅延分岐命令の処理例 ...........................................81 分岐命令と遅延スロット .....................................100 遅延なし分岐命令 遅延なし分岐命令 .................................................102 遅延なし分岐命令の処理例 ...................................80 遅延分岐 遅延分岐処理 ...........................................................80 遅延分岐命令 遅延分岐命令 .........................................................100 遅延分岐命令の具体例 .........................................101 遅延分岐命令の処理例 ...........................................81 て データアクセス データアクセス .......................................................14 データ構造 データ構造 ...............................................................12 テーブルベースレジスタ テーブルベースレジスタ (TBR) ...........................30 と トラップ ステップトレーストラップ ...................................60 トラップ ...................................................................59 トレース ステップトレーストラップ ...................................60 は ふ 符号付き除算 符号付き除算 ........................................................ 103 符号なし除算 符号なし除算 ........................................................ 104 プログラムアクセス プログラムアクセス .............................................. 14 プログラムカウンタ プログラムカウンタ (PC) ...................................... 20 プログラムステータス プログラムステータス (PS) ..................................21 分岐 遅延なし分岐命令 ................................................102 遅延なし分岐命令の処理例 ..................................80 遅延分岐処理 .......................................................... 80 遅延分岐命令 ........................................................ 100 遅延分岐命令の具体例 ........................................ 101 遅延分岐命令の処理例 .......................................... 81 分岐命令と遅延スロット .................................... 100 分岐命令 分岐命令と遅延スロット .................................... 100 へ ベクタテーブル ベクタテーブル領域 ................................................ 9 み 未定義命令 未定義命令例外 ......................................................50 446 索引 め 命令 INTE 命令 .................................................................59 INT 命令 ...................................................................59 ステップ除算命令 .................................................103 遅延なし分岐命令 .................................................102 遅延なし分岐命令の処理例 ...................................80 遅延分岐命令 .........................................................100 遅延分岐命令の具体例 .........................................101 遅延分岐命令の処理例 ...........................................81 パイプラインによる命令実行 ...............................72 分岐命令と遅延スロット .....................................100 命令記述形式 ...........................................................88 命令形式 ...................................................................88 命令体系 ...................................................................84 命令フォーマット ...................................................90 リードモデファイライト系命令 ...........................99 ゆ ユーザスタックポインタ ユーザスタックポインタ (USP) ............................29 ユーザ割込み ユーザ割込み ...........................................................55 ユーザ割込みの使用手順 .......................................68 ユーザ割込みを使用するときの準備 ...................68 ユーザ割込みを使用するときの注意事項 ...........69 優先順位 EIT 要因の優先順位 ...............................................64 多重 EIT 処理と優先順位 ......................................63 り リードモデファイライト系命令 リードモデファイライト系命令 ...........................99 リセット リセット ...................................................................44 リターンポインタ リターンポインタ (RP) ..........................................27 れ 例外 未定義命令例外 .......................................................50 例外 ...........................................................................50 レジスタ コンデションコードレジスタ (CCR) ................... 23 システムコンデションコードレジスタ (SCR) ............................................................................26 乗除算結果レジスタ (MDH,MDL) .......................31 テーブルベースレジスタ (TBR) ...........................30 レジスタ設定の反映されるタイミング ..............66 レジスタバイパス ..................................................76 レジスタハザード ..................................................76 レジスタハザードの発生 ...................................... 76 割込みレベルマスクレジスタ (ILM) ................... 22 割込みレベルマスクレジスタ (ILM) の反映タイミ ング .................................................................... 66 レジスタ構成 FR80 ファミリ CPU のレジスタ構成 ................... 16 レジスタ指定 レジスタ指定フィールド ...................................... 94 レジスタバイパス レジスタバイパス ..................................................76 レジスタハザード レジスタハザード ..................................................76 レジスタハザードの発生 ...................................... 76 わ ワードアライメント ワードアライメント .............................................. 14 ワードデータ ワードデータ .......................................................... 13 割込み パイプライン動作と割込み処理 .......................... 75 ユーザ割込み .......................................................... 55 ユーザ割込みの使用手順 ...................................... 68 ユーザ割込みを使用するときの準備 .................. 68 ユーザ割込みを使用するときの注意事項 ..........69 割込み ......................................................................55 割込み許可フラグ (I) の反映タイミング ............66 割込み処理ルーチンでの処理 ..............................68 割込みの受付けと取消しの前後不一致 ..............75 割込み許可フラグ 割込み許可フラグ (I) の反映タイミング ............66 割込み処理ルーチン 割込み処理ルーチンでの処理 ..............................68 割込みレベルマスクレジスタ 割込みレベルマスクレジスタ (ILM) ................... 22 割込みレベルマスクレジスタ (ILM) の反映タイミ ング .................................................................... 66 447 索引 448 CM71-00105-1 富士通マイクロエレクトロニクス • CONTROLLER MANUAL FR81 ファミリ 32 ビット・マイクロコントローラ プログラミングマニュアル 2009 年 8 月 初版 発行 発行 富士通マイクロエレクトロニクス株式会社 編集 マーケティング統括部 プロモーション推進部