3.7MB

本ドキュメントは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 月 初版 発行
発行
富士通マイクロエレクトロニクス株式会社
編集
マーケティング統括部 プロモーション推進部