5.8MB

本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。
富士通半導体デバイス
CONTROLLER MANUAL
CM71-00101-5
FR ファミリ
32 ビット・マイクロコントローラ
インストラクション
マニュアル
FR ファミリ
32 ビット・マイクロコントローラ
インストラクション
マニュアル
富士通株式会社
はじめに
■ 本書の目的と対象読者
FR* ファミリは , 新しい RISC アーキテクチャの CPU をコアとした 32 ビットシングル
チップマイクロコントローラです。FR ファミリは , 高性能な CPU 処理パワーを要求さ
れる組込み用途に最適な仕様になっています。
本書は , 実際にこの FR ファミリマイクロコントローラを使用して , 製品を開発される
技術者の方 , 特に FR ファミリ用アセンブラのアセンブリ言語を用いてプログラムを制
作されるプログラマの方を対象に, FRファミリの各種命令について解説したものです。
本書をご一読ください。
なお , コプロセッサ命令の実装・未実装および各コプロセッサの仕様は , その機能を内
蔵する品種に依存して決まります。このため , コプロセッサ部分の仕様は各品種のハー
ドウェアマニュアルを参照してください。また , アセンブリ言語の文法規約およびアセ
ンブラプログラムの使用方法については ,『FR ファミリ アセンブラマニュアル』を参
照してください。
* : FR は , FUJITSU RISC controller の略で , 富士通株式会社の製品です。
■ 商標
その他の記載されている社名および製品名などの固有名詞は , 各社の商標または登録
商標です。
■ 本書の全体構成
本書は , 以下に示す 7 つの章と付録から構成されます。
第 1 章 FR ファミリの概要
FR ファミリ CPU コアの特長と構成例について説明します。
第 2 章 メモリアーキテクチャ
FR ファミリ CPU の持つメモリアーキテクチャについて説明します。
第 3 章 レジスタ説明
FR ファミリ CPU 内に存在するレジスタについて説明します。
第 4 章 リセット , EIT 処理
FR ファミリ CPU のリセットと EIT 処理について説明します。
第 5 章 FR ファミリ CPU の注意事項
FR ファミリ CPU の使用上の注意事項について説明します。
第 6 章 命令概要
FR ファミリ CPU の命令の概要について説明します。
第 7 章 実行命令細則
アセンブラで使用する各実行命令について , リファレンス形式で説明します。
付録
FR ファミリ CPU の命令一覧と命令マップを示します。
i
•
•
•
•
•
•
•
本資料の記載内容は , 予告なしに変更することがありますので , ご用命の際は営業部門にご確認くださ
い。
本資料に記載された動作概要や応用回路例は , 半導体デバイスの標準的な動作や使い方を示したもので ,
実際に使用する機器での動作を保証するものではありません。したがいまして , これらを使用するにあ
たってはお客様の責任において機器の設計を行ってください。これらの使用に起因する損害などについ
ては , 当社はその責任を負いません。
本資料に記載された動作概要・回路図を含む技術情報は , 当社もしくは第三者の特許権 , 著作権等の知的
財産権やその他の権利の使用権または実施権の許諾を意味するものではありません。また , これらの使用
について , 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。し
たがって , これらの使用に起因する第三者の知的財産権やその他の権利の侵害について , 当社はその責任
を負いません。
本資料に記載された製品は , 通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途に使用
されることを意図して設計・製造されています。極めて高度な安全性が要求され , 仮に当該安全性が確保
されない場合 , 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途(原子力
施設における核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生
命維持のための医療機器 , 兵器システムにおけるミサイル発射制御をいう), ならびに極めて高い信頼性
が要求される用途(海底中継器 , 宇宙衛星をいう)に使用されるよう設計・製造されたものではありませ
ん。したがって , これらの用途にご使用をお考えのお客様は , 必ず事前に営業部門までご相談ください。
ご相談なく使用されたことにより発生した損害などについては , 責任を負いかねますのでご了承くださ
い。
半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても , 結果的に人身事故 ,
火災事故 , 社会的な損害を生じさせないよう , お客様は , 装置の冗長設計 , 延焼対策設計 , 過電流防止対策
設計 , 誤動作防止設計などの安全設計をお願いします。
本資料に記載された製品を輸出または提供する場合は , 外国為替及び外国貿易法および米国輸出管理関
連法規等の規制をご確認の上 , 必要な手続きをおとりください。
本書に記載されている社名および製品名などの固有名詞は , 各社の商標または登録商標です。
Copyright ©1996-2007 FUJITSU LIMITED All rights reserved.
ii
目次
第1章
1.1
1.2
1.3
第2章
FR ファミリの概要 .................................................................................... 1
FR ファミリ CPU コアの特長 ................................................................................................ 2
FR ファミリの構成例 ............................................................................................................. 3
FR ファミリ CPU の構成例.................................................................................................... 4
メモリアーキテクチャ ............................................................................... 5
2.1 FR ファミリのメモリ空間 ...................................................................................................... 6
2.1.1
ダイレクトアドレス領域 .............................................................................................. 7
2.1.2
ベクタテーブル領域 ..................................................................................................... 8
2.2 ビットの順序とバイトの順序 ............................................................................................... 10
2.3 ワードアライメント ............................................................................................................. 11
第3章
レジスタ説明............................................................................................ 13
3.1 FR ファミリのレジスタ構成 ................................................................................................ 14
3.2 汎用レジスタ ........................................................................................................................ 15
3.3 専用レジスタ ........................................................................................................................ 17
3.3.1
プログラムカウンタ (PC)........................................................................................... 18
3.3.2
プログラムステータス (PS) ....................................................................................... 19
3.3.3
テーブルベースレジスタ (TBR) ................................................................................. 23
3.3.4
リターンポインタ (RP) .............................................................................................. 25
3.3.5
システムスタックポインタ (SSP), ユーザスタックポインタ (USP).......................... 27
3.3.6
乗除算レジスタ (MD) ................................................................................................. 29
第4章
リセット , EIT 処理 .................................................................................. 31
4.1 リセット ............................................................................................................................... 32
4.2 EIT 処理の基本動作 .............................................................................................................. 33
4.3 割込み ................................................................................................................................... 36
4.3.1
ユーザ割込み .............................................................................................................. 37
4.3.2
ノンマスカブルインタラプト (NMI)........................................................................... 39
4.4 例外処理 ............................................................................................................................... 41
4.4.1
未定義命令例外 ......................................................................................................... 42
4.5 トラップ ............................................................................................................................... 43
4.5.1
INT 命令...................................................................................................................... 44
4.5.2
INTE 命令 ................................................................................................................... 45
4.5.3
ステップトレーストラップ ........................................................................................ 46
4.5.4
コプロセッサ不在トラップ ........................................................................................ 48
4.5.5
コプロセッサエラートラップ..................................................................................... 49
4.6 優先順位 ............................................................................................................................... 51
第5章
5.1
5.2
5.3
5.4
FR ファミリ CPU の注意事項.................................................................. 53
パイプライン動作 ................................................................................................................. 54
パイプライン動作と割込み処理 ........................................................................................... 55
レジスタハザード ................................................................................................................. 56
遅延分岐処理 ........................................................................................................................ 58
iii
5.4.1
5.4.2
第6章
6.1
6.2
第7章
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
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
遅延なし分岐命令の処理例 ........................................................................................ 60
遅延分岐命令の処理例 ............................................................................................... 61
命令概要................................................................................................... 63
命令フォーマット ................................................................................................................. 64
命令記述形式 ........................................................................................................................ 67
実行命令細則............................................................................................ 69
ADD(Add Word Data of Source Register to Destination Register) ....................................... 74
ADD(Add 4bit Immediate Data to Destination Register)....................................................... 75
ADD2(Add 4bit Immediate Data to Destination Register)..................................................... 76
ADDC(Add Word Data of Source Register and Carry Bit to Destination Register) .............. 77
ADDN(Add Word Data of Source Register to Destination Register) .................................... 78
ADDN(Add Immediate Data to Destination Register) ........................................................... 79
ADDN2(Add Immediate Data to Destination Register) ......................................................... 80
SUB(Subtract Word Data in Source Register from Destination Register) ............................ 81
SUBC(Subtract Word Data in Source Register and Carry bit from Destination Register)
............................................................................................................................................. 82
SUBN(Subtract Word Data in Source Register from Destination Register).......................... 83
CMP(Compare Word Data in Source Register and Destination Register) ........................... 84
CMP(Compare Immediate Data of Source Register and Destination Register) ................... 85
CMP2(Compare Immediate Data and Destination Register)................................................ 86
AND(And Word Data of Source Register to Destination Register) ....................................... 87
AND(And Word Data of Source Register to Data in Memory) .............................................. 88
ANDH(And Halfword Data of Source Register to Data in Memory)...................................... 89
ANDB(And Byte Data of Source Register to Data in Memory) ............................................. 91
OR(Or Word Data of Source Register to Destination Register)............................................ 93
OR(Or Word Data of Source Register to Data in Memory)................................................... 94
ORH(Or Halfword Data of Source Register to Data in Memory) .......................................... 96
ORB(Or Byte Data of Source Register to Data in Memory).................................................. 98
EOR(Exclusive Or Word Data of Source Register to Destination Register) ....................... 100
EOR(Exclusive Or Word Data of Source Register to Data in Memory) .............................. 101
EORH(Exclusive Or Halfword Data of Source Register to Data in Memory)...................... 103
EORB(Exclusive Or Byte Data of Source Register to Data in Memory) ............................. 105
BANDL(And 4bit Immediate Data to Lower 4bit of Byte Data in Memory).......................... 107
BANDH(And 4bit Immediate Data to Higher 4bit of Byte Data in Memory) ........................ 108
BORL(Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory) .............................. 109
BORH(Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory)............................. 110
BEORL(Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory) .......................... 111
BEORH(Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory)......................... 112
BTSTL(Test Lower 4bit of Byte Data in Memory) ............................................................... 113
BTSTH(Test Higher 4bit of Byte Data in Memory).............................................................. 114
MUL(Multiply Word Data) ................................................................................................... 115
MULU(Multiply Unsigned Word Data)................................................................................. 116
MULH(Multiply Halfword Data) ........................................................................................... 117
MULUH(Multiply Unsigned Halfword Data) ........................................................................ 118
DIV0S(Initial Setting Up for Signed Division)...................................................................... 119
DIV0U(Initial Setting Up for Unsigned Division).................................................................. 121
DIV1(Main Process of Division) .......................................................................................... 123
iv
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
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
DIV2(Correction When Remain is 0) .................................................................................. 125
DIV3(Correction When Remain is 0) .................................................................................. 127
DIV4S(Correction Answer for Signed Division) .................................................................. 128
LSL(Logical Shift to the Left Direction) ............................................................................... 129
LSL(Logical Shift to the Left Direction) ............................................................................... 130
LSL2(Logical Shift to the Left Direction) ............................................................................. 131
LSR(Logical Shift to the Right Direction) ............................................................................ 132
LSR(Logical Shift to the Right Direction) ............................................................................ 133
LSR2(Logical Shift to the Right Direction) .......................................................................... 134
ASR(Arithmetic shift to the Right Direction)........................................................................ 135
ASR(Arithmetic shift to the Right Direction)........................................................................ 136
ASR2(Arithmetic shift to the Right Direction)...................................................................... 137
LDI:32(Load Immediate 32 bit Data to Destination Register) ............................................. 138
LDI:20(Load Immediate 20bit Data to Destination Register) .............................................. 139
LDI:8(Load Immediate 8bit Data to Destination Register) .................................................. 140
LD(Load Word Data in Memory to Register) ...................................................................... 141
LD(Load Word Data in Memory to Register) ...................................................................... 142
LD(Load Word Data in Memory to Register) ...................................................................... 143
LD(Load Word Data in Memory to Register) ...................................................................... 144
LD(Load Word Data in Memory to Register) ...................................................................... 145
LD(Load Word Data in Memory to Register) ...................................................................... 146
LD(Load Word Data in Memory to Program Status Register) ............................................ 148
LDUH(Load Halfword Data in Memory to Register)............................................................ 150
LDUH(Load Halfword Data in Memory to Register)............................................................ 151
LDUH(Load Halfword Data in Memory to Register)............................................................ 152
LDUB(Load Byte Data in Memory to Register)................................................................... 153
LDUB(Load Byte Data in Memory to Register)................................................................... 154
LDUB(Load Byte Data in Memory to Register)................................................................... 155
ST(Store Word Data in Register to Memory)...................................................................... 156
ST(Store Word Data in Register to Memory)...................................................................... 157
ST(Store Word Data in Register to Memory)...................................................................... 158
ST(Store Word Data in Register to Memory)...................................................................... 159
ST(Store Word Data in Register to Memory)...................................................................... 160
ST(Store Word Data in Register to Memory)...................................................................... 161
ST(Store Word Data in Program Status Register to Memory)............................................ 162
STH(Store Halfword Data in Register to Memory).............................................................. 163
STH(Store Halfword Data in Register to Memory).............................................................. 164
STH(Store Halfword Data in Register to Memory).............................................................. 165
STB(Store Byte Data in Register to Memory)..................................................................... 166
STB(Store Byte Data in Register to Memory)..................................................................... 167
STB(Store Byte Data in Register to Memory)..................................................................... 168
MOV(Move Word Data in Source Register to Destination Register) .................................. 169
MOV(Move Word Data in Source Register to Destination Register) .................................. 170
MOV(Move Word Data in Program Status Register to Destination Register)..................... 171
MOV(Move Word Data in Source Register to Destination Register) .................................. 172
MOV(Move Word Data in Source Register to Program Status Register) ........................... 173
JMP(Jump) ......................................................................................................................... 174
CALL(Call Subroutine)........................................................................................................ 175
CALL(Call Subroutine)........................................................................................................ 176
v
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
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
RET(Return from Subroutine)............................................................................................. 177
INT(Software Interrupt) ....................................................................................................... 178
INTE(Software Interrupt for Emulator) ................................................................................ 180
RETI(Return from Interrupt)................................................................................................ 182
Bcc(Branch relative if Condition satisfied) .......................................................................... 184
JMP:D(Jump)...................................................................................................................... 186
CALL:D(Call Subroutine) .................................................................................................... 187
CALL:D(Call Subroutine) .................................................................................................... 188
RET:D(Return from Subroutine) ......................................................................................... 189
Bcc:D(Branch relative if Condition satisfied)....................................................................... 190
DMOV(Move Word Data from Direct Address to Register) ................................................ 192
DMOV(Move Word Data from Register to Direct Address) ................................................ 193
DMOV(Move Word Data from Direct Address to Post Increment Register Indirect Address)
............................................................................................................................................ 194
DMOV(Move Word Data from Post Increment Register Indirect Address to Direct Address)
............................................................................................................................................ 195
DMOV(Move Word Data from Direct Address to Pre Decrement Register Indirect Address)
............................................................................................................................................ 196
DMOV(Move Word Data from Post Increment Register Indirect Address to Direct Address)
............................................................................................................................................ 197
DMOVH(Move Halfword Data from Direct Address to Register) ........................................ 198
DMOVH(Move Halfword Data from Register to Direct Address) ........................................ 199
DMOVH(Move Halfword Data from Direct Address to Post Increment Register Indirect
Address) ............................................................................................................................. 200
DMOVH(Move Halfword Data from Post Increment Register Indirect Address to Direct
Address) ............................................................................................................................. 201
DMOVB(Move Byte Data from Direct Address to Register) ............................................... 202
DMOVB(Move Byte Data from Register to Direct Address) ............................................... 203
DMOVB(Move Byte Data from Direct Address to Post Increment Register Indirect Address)
............................................................................................................................................ 204
DMOVB(Move Byte Data from Post Increment Register Indirect Address to Direct Address)
............................................................................................................................................ 205
LDRES(Load Word Data in Memory to Resource) ............................................................. 206
STRES(Store Word Data in Resource to Memory) ............................................................ 207
COPOP(Co-Processor Opetation)...................................................................................... 208
COPLD(Load 32bit Data from Register to Co-processor Register) .................................... 210
COPST(Store 32bit Data from Co-processor Register to Register) ................................... 212
COPSV(Save 32bit Data from Co-processor Register to Register).................................... 214
NOP(No Operation) ............................................................................................................ 216
ANDCCR(And Condition Code Register and Immediate Data) .......................................... 217
ORCCR(Or Condition Code Register and Immediate Data)............................................... 218
STILM(Set Immediate Data to Interrupt Level Mask Register) ........................................... 219
ADDSP(Add Stack Pointer and Immediate Data)............................................................... 220
EXTSB(Sign Extend from Byte Data to Word Data) ........................................................... 221
EXTUB(Unsign Extend from Byte Data to Word Data)....................................................... 222
EXTSH(Sign Extend from Byte Data to Word Data)........................................................... 223
EXTUH(Unsign Extend from Byte Data to Word Data)....................................................... 224
LDM0(Load Multiple Registers) .......................................................................................... 225
LDM1(Load Multiple Registers) .......................................................................................... 227
STM0(Store Multiple Registers).......................................................................................... 229
STM1(Store Multiple Registers).......................................................................................... 231
vi
7.133 ENTER(Enter Function)...................................................................................................... 233
7.134 LEAVE(Leave Function) ..................................................................................................... 235
7.135 XCHB(Exchange Byte Data)............................................................................................... 236
付録
付録 A
A.1
A.2
付録 B
B.1
B.2
............................................................................................................... 237
命令一覧 ........................................................................................................................ 238
命令一覧表の記号の意味 ............................................................................................ 239
命令一覧表 .................................................................................................................. 242
命令マップ..................................................................................................................... 252
命令マップ .................................................................................................................. 253
E フォーマット ........................................................................................................... 254
vii
viii
本版での主な変更内容
ページ
-
i
変更内容(詳細は本文を参照してください。)
...『Check Sheet』を参照してください。の記述を削除
「■本書の目的と対象読者」を変更
(FR → FR*, FR は→ *:FR は )
(「■商標」の記述を追加 )
「表 2.1-1 ベクタテーブル領域の構造 (2 / 2)」の 3E0H を変更
( "#0FF" → "#007" )
9
「表 2.1-1 ベクタテーブル領域の構造 (2 / 2)」の 3F8H を変更
( " なし " → " あり " )
19
「図 3.3-3 ILM のビット構成」を変更
( "ILIM" → "ILM" )
20
「図 3.3-4 ILM の機能」を変更
( ILM から Comp への線を追加 )
「■ PS レジスタに関する注意事項」の命令名を変更
( " ● DIVOU/DIVOS" → " ● DIV0U/DIV0S" )
22
「● ユーザ割込み・NMI 要因が発生している状態で , 割込みを許可するために ORCCR/
STILM/MOV Ri, PS の各命令が実行されると , 以下のような動作を行います。」を変更
( "1") → "1." )
23
「図 3.3-7 テーブルベースレジスタ (TBR) の動作例」を変更
( "31" → "bit31" )
28
「■ EIT ハンドラからの復帰」を変更
( "「4.2 EIT 処理の基本動作 ■ EIT ハンドラからの復帰」" →
"「4.2 EIT 処理の基本動作」の「■ EIT ハンドラからの復帰」")
「3.3.6 乗除算レジスタ (MD)」を変更
( " 除数 " → " 被除数 " )
29
「■ 乗除算レジスタの概要」を変更
( " 除数 " → " 被除数 (2 箇所 )" ), ( " 被乗算 " → " 乗算 " )
「4.3 割込み」を変更
( " 外部割込み " → " ユーザ割込み " )
36
「■ 割込みを発生する要因」を変更
( " 外部割込み " → " ユーザ割込み " )
ix
ページ
変更内容(詳細は本文を参照してください。)
「4.3.1 ユーザ割込み」を変更
( " 外部割込み " → " ユーザ割込み " )
「4.3.1 ユーザ割込み」を変更
( " 外部割込みとは ," → " ユーザ割込みとは ,"),
( " 外部割込みの受付け条件 " → " ユーザ割込みの受付け条件 " )
「■ ユーザ割込みの概要」を変更
( " 外部割込みの概要 " → " ユーザ割込みの概要 " )
「■ ユーザ割込みの概要」を変更
( " 外部割込みとは " → " ユーザ割込みとは " )
37
「■ ユーザ割込みの概要」を変更
( " 割込み要求が CPU の外側から発生するという意味で " 外部 " とよんでいます。ただし ,"
の記述を削除 )
「■ ユーザ割込み要求受付け条件」を変更
( " 外部割込み要求受付け条件 " → " ユーザ割込み要求受付け条件 " )
「■ ユーザ割込み要求受付け条件 」を変更
( "CPU は外部割込みを受け付けます。" → "CPU はユーザ割込みを受け付けます。" )
「■ ユーザ割込み受付け時の動作」を変更
( " 外部割込み受付け時の動作 " → " ユーザ割込み受付け時の動作 " )
「■ ユーザ割込み受付け時の動作 」を変更
( " 外部割込みが受け付けられると " → " ユーザ割込みが受け付けられると " )
「■ ユーザ割込みの使い方」を変更
( " 外部割込みの使い方 " → " ユーザ割込みの使い方 " )
「■ ユーザ割込みの使い方 」を変更
( " 外部割込みを使用する場合には " → " ユーザ割込みを使用する場合には " )
38
「■ ユーザ割込みの使い方」を変更
( " 図 4.3-1 に外部割込みの使い方を示します。" → " 図 4.3-1 にユーザ割込みの使い方を
示します。" )
「図 4.3-1 ユーザ割込みの使い方」を変更
( " 図 4.3-1 外部割込みの使い方 " → " 図 4.3-1 ユーザ割込みの使い方 " )
47
「■ ステップトレーストラップの使用上の注意事項」を変更
( "INTE 命令よる EIT 機能 " → "INTE 命令による EIT 機能 " )
51
「表 4.6-1 EIT 要因の受付けの優先順位」を変更
( " 他の要因に対するマスク " → " ほかの要因に対するマスク " )
( " 他の要因を破棄 " → " ほかの要因を破棄 " )
( " 他の要因を取消し " → " ほかの要因を取消し " )
「表 4.6-1 EIT 要因の受付けの優先順位」を変更
( 仕切り線追加 )
51
「表 4.6-1 EIT 要因の受付けの優先順位」を変更
( " 外部割込み " → " ユーザ割込み " ), ( "INT 命令 " → "INTE 命令 " )
x
ページ
52
変更内容(詳細は本文を参照してください。)
「表 4.6-2 EIT ハンドラの実行順序」を変更
( " 他の要因に対するマスク " → " ほかの要因に対するマスク " )
( " 他の要因を破棄 " → " ほかの要因を破棄 " )
( " 他の要因を取消し " → " ほかの要因を取消し " )
( " 外部割込み " → " ユーザ割込み " )
「■ 遅延スロットで使用できない命令」を変更
( "LDI:32 #i32, RiLDI:20 #i20, Ri" → "LDI:32 #i32, Ri LDI:20 #i20, Ri" )
「■ 遅延スロットで使用できない命令」を変更
( "COPOP #u4, #CC, CRj, CRiCOPLD #u4, #CC, Rj, CRiCOPST #u4, #CC, CRj, RiCOPSV
#u4, #CC, CRj, Ri" →
"COPOP #u4, #CC, CRj, CRi
COPLD #u4, #CC, Rj, Cri
COPST #u4, #CC, CRj, Ri
COPSV #u4, #CC, CRj, Ri" )
58
「■ 遅延スロットで使用できない命令」を変更
( "JMP @RiCALL label12CALL @RiRET 条件付き分岐命令およびこれらの遅延分岐付
き命令 " →
"JMP @Ri
CALL label12
CALL @Ri
RET
条件付き分岐命令およびこれらの遅延分岐付き命令 " )
「■ 遅延スロットで使用できない命令」を変更
( "INT #u8RETIINTE" →
"INT #u8
RETI
INTE")
59
「■ 遅延スロットで使用できない命令」を変更
( "AND Rj,@Ri ANDH Rj,@RiANDB Rj,@RiOR Rj,@RiORH Rj,@RiORB Rj,@RiEOR
Rj,@RiEORH Rj,@RiEORB Rj,@Ri" →
"AND Rj,@Ri
ANDH Rj,@Ri
ANDB Rj,@Ri
OR Rj,@Ri
ORH Rj,@Ri
ORB Rj,@Ri
EOR Rj,@Ri
EORH Rj,@Ri
EORB Rj,@Ri" )
xi
ページ
変更内容(詳細は本文を参照してください。)
「■ 遅延スロットで使用できない命令」を変更
( "BANDH #u4,@RiBANDL #u4,@RiBORH #u4,@RiBORL #u4,@RiBEORH
#u4,@RiBEORL #u4,@RiBTSTH #u4,@RiBTSTL #u4,@Ri" →
"BANDH #u4,@Ri
BANDL #u4,@Ri
BORH #u4,@Ri
BORL #u4,@Ri
BEORH #u4,@Ri
BEORL #u4,@Ri
BTSTH #u4,@Ri
BTSTL #u4,@Ri" )
「■ 遅延スロットで使用できない命令」を変更
( "MUL Rj, RiMULU Rj, RiMULH Rj, RiMULUH Rj, Ri" →
"MUL Rj, Ri
MULU Rj, Ri
MULH Rj, Ri
MULUH Rj, Ri" )
59
「■ 遅延スロットで使用できない命令」を変更
( "LDM0 (reglist)LDM1(reglist)STM0 (reglist)STM1(reglist)ENTER #u10XCHB @Rj, Ri" →
"LDM0 (reglist)
LDM1(reglist)
STM0 (reglist)
STM1(reglist)
ENTER #u10
XCHB @Rj, Ri" )
「■ 遅延スロットで使用できない命令」を変更
( "DMOV @dir10,@R13+DMOV @R13+,@dir10DMOV @dir10,@-R15DMOV
@R15+,@dir10DMOVH @dir9,@R13+DMOVH @R13+,@dir9DMOVB
@dir8,@R13+DMOVB @R13+,@dir8" →
"DMOV @dir10,@R13+
DMOV @R13+,@dir10
DMOV @dir10,@-R15
DMOV @R15+,@dir10
DMOVH @dir9,@R13+
DMOVH @R13+,@dir9
DMOVB @dir8,@R13+
DMOVB @R13+,@dir8" )
74
「7.1 ADD(Add Word Data of Source Register to Destination Register) の実行例」を変更
( " 命令のビットパターン :1010 0110 0010 0011" の記述を追加 )
76
「7.3 ADD2(Add 4bit Immediate Data to Destination Register) の実行例」を変更
( "ADD2 #-2, R3 \ " → "ADD2 #-2, R3" )
77
「7.4 ADDC(Add Word Data of Source Register and Carry Bit to Destination Register) 」を変更
( " 命令のビットパターン:1010 0111 0010 0011" の記述を追加 )
78
「7.5 ADDN(Add Word Data of Source Register to Destination Register) 」を変更
( " 命令のビットパターン:1010 0010 0010 0011" の記述を追加 )
xii
ページ
変更内容(詳細は本文を参照してください。)
81
「7.8 SUB(Subtract Word Data in Source Register from Destination Register) 」を変更
( " 命令のビットパターン :1010 1100 0010 0011" の記述を追加 )
82
「7.9 SUBC(Subtract Word Data in Source Register and Carry bit from Destination Register) 」を
変更
( " 命令のビットパターン:1010 1101 0010 0011" の記述を追加 )
83
「7.10 SUBN(Subtract Word Data in Source Register from Destination Register) 」を変更
( " 命令のビットパターン:1010 1110 0010 0011" の記述を追加 )
84
「7.11 CMP(Compare Word Data in Source Register and Destination Register) 」を変更
( " 命令のビットパターン:1010 1010 0010 0011" の記述を追加 )
87
「7.14 AND(And Word Data of Source Register to Destination Register)」を変更
( " 命令のビットパターン:1000 0010 0010 0011" の記述を追加 )
88
「7.15 AND(And Word Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1000 0100 0010 0011" の記述を追加 )
90
「7.16 ANDH(And Halfword Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1000 0101 0010 0011" の記述を追加 )
92
「7.17 ANDB(And Byte Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1000 0110 0010 0011" の記述を追加 )
93
「7.18 OR(Or Word Data of Source Register to Destination Register) 」を変更
( 命令のビットパターン:1001 0010 0010 0011 の記述を追加 )
95
「7.19 OR(Or Word Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1001 0100 0010 0011" の記述を追加 )
97
「7.20 ORH(Or Halfword Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1001 0101 0010 0011" の記述を追加 )
99
「7.21 ORB(Or Byte Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1001 0110 0010 0011" の記述を追加 )
100
「7.22 EOR(Exclusive Or Word Data of Source Register to Destination Register) 」を変更
( " 命令のビットパターン:1001 1010 0010 0011" の記述を追加 )
102
「7.23 EOR(Exclusive Or Word Data of Source Register to Data in Memory)」を変更
( " 命令のビットパターン:1001 1100 0010 0011" の記述を追加 )
104
「7.24 EORH(Exclusive Or Halfword Data of Source Register to Data in Memory) 」を変更
( 命令のビットパターン:1001 1101 0010 0011 の記述を追加 )
106
「7.25 EORB(Exclusive Or Byte Data of Source Register to Data in Memory) 」を変更
( " 命令のビットパターン:1001 1110 0010 0011" の記述を追加 )
115
「7.34 MUL(Multiply Word Data) 」を変更
( " 命令のビットパターン:1010 1111 0010 0011" の記述を追加 )
116
「7.35 MULU(Multiply Unsigned Word Data)」を変更
( " 命令のビットパターン:1010 1011 0010 0011" の記述を追加 )
117
「7.36 MULH(Multiply Halfword Data)」を変更
( " 命令のビットパターン:1011 1111 0010 0011" の記述を追加 )
xiii
ページ
変更内容(詳細は本文を参照してください。)
118
「7.37 MULUH(Multiply Unsigned Halfword Data) 」を変更
( " 命令のビットパターン:1011 1011 0010 0011" の記述を追加 )
120
「7.38 DIV0S(Initial Setting Up for Signed Division) 」を変更
( 命令のビットパターン:1001 0111 0100 0010 の記述を追加 )
121
「7.39 DIV0U(Initial Setting Up for Unsigned Division) 」を変更
( " 命令のビットパターン:1001 0111 0101 0010" の記述を追加 )
124
「7.40 DIV1(Main Process of Division) 」を変更
( " 命令のビットパターン:1001 0111 0110 0010" の記述を追加 )
126
「7.41 DIV2(Correction When Remain is 0) 」を変更
( " 命令のビットパターン:1001 0111 0111 0010" の記述を追加 )
「7.42 DIV3(Correction When Remain is 0) 」を変更
( "DIVOS" → "DIV0S" )
127
「7.42 DIV3(Correction When Remain is 0) 」を変更
( " 命令のビットパターン:1001 1111 0110 0000" の記述を追加 )
「7.43 DIV4S(Correction Answer for Signed Division)」を変更
(DIVOS → DIV0S)
128
「7.43 DIV4S(Correction Answer for Signed Division)」を変更
( " 命令のビットパターン:1001 1111 0111 0000" の記述を追加 )
「7.44 LSL(Logical Shift to the Left Direction)」を変更
( "< <" → "<<" )
129
「7.44 LSL(Logical Shift to the Left Direction)」を変更
( " 命令のビットパターン:1011 0110 0010 0011" の記述を追加 )
「7.47 LSR(Logical Shift to the Right Direction)」を変更
( "> >" → ">>" )
132
「7.47 LSR(Logical Shift to the Right Direction)」を変更
( " 命令のビットパターン:1011 0010 0010 0011" の記述を追加 )
133
「7.48 LSR(Logical Shift to the Right Direction)」を変更
(> > → >>)
134
「7.49 LSR2(Logical Shift to the Right Direction)」を変更
( "(u4+16)" → "{u4+16}" )
「7.50 ASR(Arithmetic shift to the Right Direction)」を変更
( "> >" → ">>" )
135
「7.50 ASR(Arithmetic shift to the Right Direction)」を変更
( " 命令のビットパターン:1011 1010 0010 0011" の記述を追加 )
136
「7.51 ASR(Arithmetic shift to the Right Direction)」を変更
( "> >" → ">>" )
137
「7.52 ASR2(Arithmetic shift to the Right Direction)」を変更
( "> >" → ">>" )
xiv
ページ
変更内容(詳細は本文を参照してください。)
138
「7.53 LDI:32(Load Immediate 32 bit Data to Destination Register)」を変更
( " 命令のビットパターン :1001 1111 1000 0011
:1000 0111 0110 0101
:0100 0011 0010 0001"
の記述を追加 )
139
「7.54 LDI:20(Load Immediate 20bit Data to Destination Register)」を変更
( 命令のビットパターン :1001 1011 0101 0011
:0100 0011 0010 0001
の記述を追加 )
140
「7.55 LDI:8(Load Immediate 8bit Data to Destination Register)」を変更
( " 命令のビットパターン:1100 0010 0001 0011" の記述を追加 )
141
「7.56 LD(Load Word Data in Memory to Register)」を変更
( " 命令のビットパターン:0000 0100 0010 0011" の記述を追加 )
142
「7.57 LD(Load Word Data in Memory to Register)」を変更
( 命令のビットパターン:0000 0000 0010 0011 の記述を追加 )
144
「7.59 LD(Load Word Data in Memory to Register)」を変更
( (R15+o4 × 4) → (R15+u4 × 4) ,o4 → u4)
145
「7.60 LD(Load Word Data in Memory to Register)」を変更
( " 命令のビットパターン:0000 0111 0000 0011" の記述を追加 )
147
「7.61 LD(Load Word Data in Memory to Register)」を変更
( " 命令のビットパターン:0000 0111 1000 0100" の記述を追加 )
149
「7.62 LD(Load Word Data in Memory to Program Status Register)」を変更
( " 命令のビットパターン:0000 0111 1001 0000" の記述を追加 )
150
「7.63 LDUH(Load Halfword Data in Memory to Register)」を変更
( " 命令のビットパターン:0000 0101 0010 0011" の記述を追加 )
151
「7.64 LDUH(Load Halfword Data in Memory to Register)」を変更
( " 命令のビットパターン:0000 0001 0010 0011" の記述を追加 )
153
「7.66 LDUB(Load Byte Data in Memory to Register)」を変更
( 命令のビットパターン:0000 0110 0010 0011 の記述を追加 )
154
「7.67 LDUB(Load Byte Data in Memory to Register)」を変更
( " 命令のビットパターン:0000 0010 0010 0011" の記述を追加 )
156
「7.69 ST(Store Word Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0100 0010 0011" の記述を追加 )
157
「7.70 ST(Store Word Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0000 0010 0011" の記述を追加 )
159
「7.72 ST(Store Word Data in Register to Memory)」を変更
( "(R15+o4 × 4)" → "(R15+u4 × 4)" ), ( "o4" → "u4" )
160
「7.73 ST(Store Word Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0111 0000 0011" の記述を追加 )
xv
ページ
変更内容(詳細は本文を参照してください。)
161
「7.74 ST(Store Word Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0111 1000 0100" の記述を追加 )
162
「7.75 ST(Store Word Data in Program Status Register to Memory)」を変更
( " 命令のビットパターン:0001 0111 1001 0000" の記述を追加 )
163
「7.76 STH(Store Halfword Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0101 0010 0011" の記述を追加 )
164
「7.77 STH(Store Halfword Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0001 0010 0011" の記述を追加 )
166
「7.79 STB(Store Byte Data in Register to Memory) 」を変更
( " 命令のビットパターン:0001 0110 0010 0011" の記述を追加 )
167
「7.80 STB(Store Byte Data in Register to Memory)」を変更
( " 命令のビットパターン:0001 0010 0010 0011" の記述を追加 )
169
「7.82 MOV(Move Word Data in Source Register to Destination Register)」を変更
( " 命令のビットパターン:1000 1011 0010 0011" の記述を追加 )
170
「7.83 MOV(Move Word Data in Source Register to Destination Register)」を変更
( " 命令のビットパターン:1011 0111 0101 0011" の記述を追加 )
171
「7.84 MOV(Move Word Data in Program Status Register to Destination Register)」を変更
( " 命令のビットパターン:0001 0111 0001 0011" の記述を追加 )
172
「7.85 MOV(Move Word Data in Source Register to Destination Register)」を変更
( " 命令のビットパターン:1011 0011 0101 0011" の記述を追加 )
173
「7.86 MOV(Move Word Data in Source Register to Program Status Register)」を変更
( " 命令のビットパターン:0000 0111 0001 0011" の記述を追加 )
174
「7.87 JMP(Jump)」を変更
( " 命令のビットパターン:1001 0111 0000 0001" の記述を追加 )
175
「7.88 CALL(Call Subroutine)」を変更
( "CALL 120H" →
"CALL label
・・・
label: ; CALL 命令のアドレス+ 122H" )
「7.88 CALL(Call Subroutine)」を変更
( " 命令のビットパターン:1101 0000 1001 0000" の記述を追加 )
176
「7.89 CALL(Call Subroutine)」を変更
( " 命令のビットパターン:1001 0111 0001 0001" の記述を追加 )
177
「7.90 RET(Return from Subroutine)」を変更
( " 命令のビットパターン:1001 0111 0010 0000" の記述を追加 )
178
「7.91 INT(Software Interrupt)」を変更
( "INT#9 ∼ #13, #64, #65" → "INT#9 ∼ INT#13, INT#64, INT#65" )
179
「7.91 INT(Software Interrupt)」を変更
( " 命令のビットパターン:0001 1111 0010 0000" の記述を追加 )
xvi
ページ
変更内容(詳細は本文を参照してください。)
181
「7.92 INTE(Software Interrupt for Emulator)」を変更
( 命令のビットパターン:1001 1111 0011 0000 の記述を追加 )
183
「7.93 RETI(Return from Interrupt)」を変更
( " 命令のビットパターン:1001 0111 0011 0000" の記述を追加 )
「7.94 Bcc(Branch relative if Condition satisfied)」を変更
( " 符号拡張され , 分岐先アドレスとなります " → " 符号拡張されます " )
184
185
「7.94 Bcc(Branch relative if Condition satisfied)」を変更
( "BRA label9BV label9" → "BRA label9 BV label9" )
( "BNO label9BNV label9" → "BNO label9 BNV label9" )
( "BEQ label9BLT label9" → "BEQ label9 BLT label9" )
( "BNE label9BGE label9" → "BNE label9 BGE label9" )
( "BC label9BLE label9" → "BC label9 BLE label9" )
( "BNC label9BGT label9" → "BNC label9 BGT label9" )
( "BN label9BLS label9" → "BN label9 BLS label9" )
( "BP label9BHI label9" → "BP label9 BHI label9" )
「7.94 Bcc(Branch relative if Condition satisfied)」を変更
( "BHI 50H" →
"BHI label
・・・
label: ; BHI 命令のアドレス+ 50H" )
「7.94 Bcc(Branch relative if Condition satisfied)」を変更
( " 命令のビットパターン:1110 1111 0010 1000" の記述を追加 )
186
187
「7.95 JMP:D(Jump)」を変更
( " 命令のビットパターン:1001 1111 0000 0001" の記述を追加 )
「7.96 CALL:D(Call Subroutine)」を変更
( "CALL:D 120H
LDI:8 #0, R2 ; 遅延スロットに置かれた命令
…"
→
"CALL:D label
LDI:8 #0, R2 ; 遅延スロットに置かれた命令
・・・
label: ; CALL:D 命令のアドレス+ 122H" )
「7.96 CALL:D(Call Subroutine)」を変更
( " 命令のビットパターン:1101 1000 1001 0000" の記述を追加 )
188
「7.97 CALL:D(Call Subroutine)」を変更
( " 命令のビットパターン:1001 1111 0001 0001" の記述を追加 )
189
「7.98 RET:D(Return from Subroutine)」を変更
( " 命令のビットパターン:1001 1111 0010 0000" の記述を追加 )
xvii
ページ
変更内容(詳細は本文を参照してください。)
「7.99 Bcc:D(Branch relative if Condition satisfied)」を変更
( " 符号拡張され , 分岐先アドレスとなります " → " 符号拡張されます " )
190
191
「7.99 Bcc:D(Branch relative if Condition satisfied)」を変更
( "BRA:D label9BV:D label9" → "BRA:D label9 BV:D label9" )
( "BNO:D label9BNV:D label9" → "BNO:D label9 BNV:D label9" )
( "BEQ:D label9BLT:D label9" → "BEQ:D label9 BLT:D label9" )
( "BNE:D label9BGE:D label9" → "BNE:D label9 BGE:D label9" )
( "BC:D label9BLE:D label9" → "BC:D label9 BLE:D label9" )
( "BNC:D label9BGT:D label9" → "BNC:D label9 BGT:D label9" )
( "BN:D label9BLS:D label9" → "BN:D label9 BLS:D label9" )
( "BP:D label9BHI:D label9" → "BP:D label9 BHI:D label9" )
「7.99 Bcc:D(Branch relative if Condition satisfied) 」を変更
( "BHI:D 50H
LDI:8 #255, R1 ; 遅延スロットに置かれた
…"
→
"BHI:D label
LDI:8 #255, R1 ; 遅延スロットに置かれた命令
・・・
label: ; BHI:D 命令のアドレス+ 50H" )
「7.99 Bcc:D(Branch relative if Condition satisfied)」を変更
( " 命令のビットパターン:1111 1111 0010 1000" の記述を追加 )
206
「7.114 LDRES(Load Word Data in Memory to Resource)」を変更
( " 命令のビットパターン:1011 1100 1000 0010" の記述を追加 )
208
「7.116 COPOP(Co-Processor Opetation)」を変更
( " リソース " → " コプロセッサ " )
210
「7.117 COPLD(Load 32bit Data from Register to Co-processor Register)」を変更
( " リソース " → " コプロセッサ " )
212
「7.118 COPST(Store 32bit Data from Co-processor Register to Register)」を変更
( " リソース " → " コプロセッサ " )
214
「7.119 COPSV(Save 32bit Data from Co-processor Register to Register)」を変更
( " リソース " → " コプロセッサ " )
216
「7.120 NOP(No Operation) 」を変更
( " 命令のビットパターン:1001 1111 1010 0000" をの追加 )
217
「7.121 ANDCCR(And Condition Code Register and Immediate Data)」を変更
( " 命令のビットパターン:1000 0011 1111 1110" を追加 )
218
「7.122 ORCCR(Or Condition Code Register and Immediate Data)」を変更
( " 命令のビットパターン:1001 0011 0001 0000" を追加 )
「7.123 STILM(Set Immediate Data to Interrupt Level Mask Register)」を変更
( "i8" → "u8" )
219
「7.123 STILM(Set Immediate Data to Interrupt Level Mask Register)」を変更
( " 命令のビットパターン:1000 0111 0001 0100" を追加 )
xviii
ページ
変更内容(詳細は本文を参照してください。)
221
「7.125 EXTSB(Sign Extend from Byte Data to Word Data)」を変更
( " 命令のビットパターン:1001 0111 1000 0001" を追加 )
222
「7.126 EXTUB(Unsign Extend from Byte Data to Word Data) 」を変更
( " 命令のビットパターン:1001 0111 1001 0001" を追加 )
223
「7.127 EXTSH(Sign Extend from Byte Data to Word Data)」を変更
( " 命令のビットパターン:1001 0111 1010 0001" を追加 )
224
「7.128 EXTUH(Unsign Extend from Byte Data to Word Data) 」を変更
( " 命令のビットパターン:1001 0111 1011 0001" を追加 )
225
「7.129 LDM0(Load Multiple Registers)」を変更
( a(n:1)+b+1 → :a(n-1)+b+1 )
234
「7.133 ENTER(Enter Function) 」を変更
( " 命令のビットパターン :XXXX XXXX 0000 0011" → " 命令のビットパターン :0000 1111
0000 0011" )
235
「7.134 LEAVE(Leave Function) 」を変更
( " 命令のビットパターン:1001 1111 1001 0000" を追加 )
236
「7.135 XCHB(Exchange Byte Data)」を変更
( " 命令のビットパターン:1000 1010 0001 0000" を追加 )
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( "-128 ∼ 255" → "0 ∼ 255" )
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( " <注意事項> -128 ∼ -1 は 128 ∼ 255 として扱います。" を削除 )
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( "-0x80000H ∼ 0xFFFFFH" → "00000H ∼ FFFFFH" )
239
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( " <注意事項> -0x80000H ∼ -1 は 0x80000H ∼ 0xFFFFFH として扱います。" を削除 )
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( "-0x80000000H ∼ 0xFFFFFFFFH" → "00000000H ∼ FFFFFFFFH" )
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( " <注意事項> -0x80000000H ∼ -1 は , 0x80000000H ∼ 0xFFFFFFFFH として扱います。"
を削除 )
240
「A.1 命令一覧表の記号の意味」
「● ニーモニック欄および動作欄」を変更
( "Ri" → "Ri, Rj" )
xix
ページ
変更内容(詳細は本文を参照してください。)
「A.1 命令一覧表の記号の意味」
「● 動作欄」を変更
( "( ) 間接アドレッシングを示します。( ) 内のレジスタまたは式の示すアドレスのメモリ
読出し・書込み値です。" を追加 )
240
「A.1 命令一覧表の記号を意味」
「● 動作欄 」の変更
( "{ } 演算の優先順位を明示するための括弧になります。( ) を間接アドレス指定に使用し
ているため , { } を使用します。" を追加 )
「A.2 命令一覧表」
「表 A.2-13 ダイレクトアドレス指定命令 (14 命令 )」
「<注意事項>」を変更
( "disp8 ∼ disp10" → "dir8 ∼ dir10" )
249
「A.2 命令一覧表」
「表 A.2-13 ダイレクトアドレス指定命令 (14 命令 )」
「<注意事項>」を変更
( "disp8 → dir=disp8" → "dir8 → dir=dir8" )
( "disp9 → dir=disp9 > >1" → "dir9 → dir=dir9 >>1" )
( "disp10 → dir=disp10 > >2" → "dir10 → dir=dir10 >>2" )
250
「A.2 命令一覧表」
「表 A.2-16 その他の命令 (16 命令 )」を変更
( "i8" → "u8" )
253
「B.1 命令マップ」
「図 B.1-1 命令マップ 」を変更
( R → Ri )
254
「B.2 E フォーマット」
「表 B.2-1 E フォーマット」を変更
( CRl → CRj ), ( "Ri" → "Rj" )
xx
第1章
FR ファミリの概要
FR ファミリ CPU コアの特長と構成例について説
明します。
1.1 FR ファミリ CPU コアの特長
1.2 FR ファミリの構成例
1.3 FR ファミリ CPU の構成例
1
第 1 章 FR ファミリの概要
1.1
FR ファミリ CPU コアの特長
FR ファミリ CPU は富士通オリジナルのアーキテクチャをもつ , 32 ビット RISC
ベースのコントローラ向け CPU コアです。特に高速制御を行う必要がある組込み制
御向けのマイクロコントローラの CPU コアとして最適なアーキテクチャとなってい
ます。
■ FR ファミリ CPU コアの特長
• 汎用レジスタアーキテクチャ
• 32 ビットアドレス (4G バイト ) 指定のリニア空間
• 16 ビット固定命令長 ( 即値データ , コプロセッサ命令を除く )
• 5 段パイプライン構造による基本命令 , 1 命令 1 サイクルの高速処理
• 32 ビット× 32 ビットの演算を 5 サイクルで完了する乗算命令
• ステップ除算命令による 32 ビット÷ 32 ビットの除算の実行
• 周辺アクセスのためのダイレクトアドレッシング命令
• ペリフェラルアクセラレータを直接指定するコプロセッサ命令
• 6 サイクルで完了する高速割込み処理
2
第 1 章 FR ファミリの概要
1.2
FR ファミリの構成例
FR ファミリのデバイスは , 各モジュールがバスによって接続されるブロック構成に
なっています。この構成にすることによって , 必要に応じて各モジュールを容易に組
み換えられ , 多様な機能構成に容易に対応できます。
図 1.2-1 に , FR ファミリのデバイスの構成例を示します。
■ FR ファミリの構成例
図 1.2-1 FR ファミリのデバイスの構成例
FRファミリCPU
低速周辺
低速周辺
周辺バス
RAM
命令バス
データバス
データ
キャッシュ
命令キャッシュ
DMAC
低速周辺
高速周辺
内部バスインタフェース
ROM
統合
バス
低速周辺
ユーザバスインタフェース
必須
汎用ポート
:品種によらず必ずあり
オプション :品種により存在しない場合あり
3
第 1 章 FR ファミリの概要
1.3
FR ファミリ CPU の構成例
FR ファミリ CPU は汎用レジスタを中心として , 用途別の特殊機能を果たす専用レ
ジスタと ALU および乗算器などからブロックを構成しています。
図 1.3-1 に , FR ファミリ CPU の構成例を示します。
■ FR ファミリ CPU の構成例
図 1.3-1 FR ファミリ CPU の構成例
命令
データ
命令
デコーダ
バイパス
インターロック
命令
シーケンサ
制御信号
パイプライン
例外処理
ウェイト
キャンセル
制御
ウェイト
バス制御
データ
内部バス
内部バス
バレル
シフタ
乗算器
ALU
32×8
ビット
データ
アドレス
命令
アドレス
4
バイパス
レジスタ
ファイル
割込み
NMI
PC
adder/
inc
PC
内部バス
第2章
メモリアーキテクチャ
FR ファミリ CPU の持つメモリアーキテクチャに
ついて説明します。メモリアーキテクチャとは , メ
モリ空間の割当て , メモリへアクセスするときの方
式などのことです。
2.1 FR ファミリのメモリ空間
2.2 ビットの順序とバイトの順序
2.3 ワードアライメント
5
第 2 章 メモリアーキテクチャ
2.1
FR ファミリのメモリ空間
FR ファミリはメモリ空間をバイト単位で管理し , 32 ビットの空間をリニアに指定し
ます。さらに , 命令効率の向上のために , ダイレクトアドレス領域とベクタテーブル
領域が決められた領域に割り当ててあります。
■ メモリ空間
図 2.1-1 に , FR ファミリのメモリ空間を示します。
なお , ダイレクトアドレス領域の詳細は「2.1.1 ダイレクトアドレス領域」, ベクタテー
ブル領域の詳細は「2.1.2 ベクタテーブル領域」で説明します。
図 2.1-1 FR ファミリのメモリ空間
ダイレクトアドレス領域
一般のアドレッシング
0000 0000H
バイトデータ
0000 0100H
ハーフワードデータ
0000 0200H
ワードデータ
0000 0400H
~
~
000F FC00H
0010 0000H
~
FFFF FFFFH
000F FC00H
ベクタテーブル
初期領域
プログラムまたは
データ領域
TBR
↑TBRの初期値
~
■ 未使用ベクタテーブル領域
未使用ベクタテーブル領域は , プログラムまたはデータ領域として使用できます。
6
第 2 章 メモリアーキテクチャ
2.1.1
ダイレクトアドレス領域
アドレス空間の下位アドレスにダイレクトアドレス領域があります。ダイレクトア
ドレス指定命令の中でアドレスを直接指定することにより , 汎用レジスタを使用せず
に命令中のオペランド情報だけでこの領域へのアクセスを行うことができます。ダ
イレクトアドレス指定可能なアドレス領域の大きさは , 転送するデータ長に依存して
変化します。
■ ダイレクトアドレス領域
転送するデータ長に依存して変化するダイレクトアドレス指定可能領域を以下に示し
ます。
• 転送がバイトデータの場合…… 0000 0000H ∼ 0000 00FFH
• 転送がハーフワードデータの場合…… 0000 0000H ∼ 0000 01FFH
• 転送がワードデータの場合…… 0000 0000H ∼ 0000 03FFH
■ 命令中のオペランド情報の使い方
命令内で指定する 8 ビットのアドレス情報を以下に示します。
• バイトデータの場合……そのままアドレスの下位 8 ビットとして使用
• ハーフワードデータの場合……2 倍してアドレスの下位 9 ビットとして使用
• ワードデータの場合……4 倍してアドレスの下位 10 ビットとして使用
図 2.1-2 に , ダイレクトアドレス指定の使用データ長とメモリアドレスの関係を示しま
す。
図 2.1-2 ダイレクトアドレス指定の使用データ長とメモリアドレスの関係
〔例1〕バイトデータの場合:DMOVB R13,@58H
オブジェクトコード:1A58H ⇒ シフトなし ⇒⇒⇒⇒⇒58H
メモリ空間
~
~
⇒
R13
12345678
0000 0058H
〔例2〕ハーフワードデータの場合:DMOVH R13,@58H
右1ビットシフト
オブジェクトコード:192CH ⇒ 左1ビットシフト ⇒⇒⇒58H
78
~
~
メモリ空間
~
~
⇒
R13
12345678
0000 0058H
〔例3〕ワードデータの場合:DMOV R13,@58H
右2ビットシフト
オブジェクトコード:1816H ⇒ 左2ビットシフト ⇒⇒⇒58H
5678
~
~
メモリ空間
~
~
⇒
R13
12345678
1345678
0000 0058H
~
~
7
第 2 章 メモリアーキテクチャ
2.1.2
ベクタテーブル領域
テーブルベースレジスタ (TBR) の内容が示すアドレスから 1K バイトの領域は , EIT
のベクタアドレスを格納する領域です。
■ ベクタテーブル領域の概要
テーブルベースレジスタ (TBR) の内容が示すアドレスから 1K バイトの領域は EIT の
ベクタアドレスを格納する領域です。この領域に例外処理 , 割込み処理 , トラップ処理
のエントリアドレスを記述します。
テーブルベースレジスタ (TBR) の書換えにより , この領域はワードアライメントの制
約内で任意の領域に割り当てることができます。図 2.1-3 に , ベクタテーブルの構造を
示します。
図 2.1-3 テーブルベースレジスタ (TBR) とベクタテーブルアドレスの関係
メモリ空間
番号
TBRからの
オフセット
FFH
000H
INT命令のエントリアドレス
FEH
004H
INT命令のエントリアドレス
FDH
008H
INT命令のエントリアドレス
FCH
00CH
INT命令のエントリアドレス
00H
3FCH
リセット処理のエントリアドレス
0000 0000H
~
TBR
~
ベクタ
テーブル
領域
1Kバイト
FFFF FFFFH
~
EIT要因
~
■ ベクタテーブル領域の内容
ベクタテーブルは各 EIT 処理プログラムのエントリアドレスにより構成されます。各
テーブルは , CPU のアーキテクチャにより固定されて使用されるものと , 内蔵周辺の種
類により変化するものがあります。表 2.1-1 にベクタテーブル領域の構造を示します。
表 2.1-1 ベクタテーブル領域の構造 (1 / 2)
8
TBR からの
オフセット
番号
HEX
品種
依存
000H
FFH
なし
INT #0FFH
004H
FEH
なし
INT #0FEH
…
…
…
2F8H
41H
なし
システム予約
2FCH
40H
なし
システム予約
…
…
…
EIT 内容
備考
…
…
使用しないでください
…
…
第 2 章 メモリアーキテクチャ
表 2.1-1 ベクタテーブル領域の構造 (2 / 2)
TBR からの
オフセット
番号
HEX
品種
依存
33CH
30H
なし
INT #030H
340H
2FH
あり
INT #02FH または IR31
344H
2EH
あり
INT #02EH または IR30
…
…
…
3BCH
10H
あり
INT #010H または IR00
3C0H
0FH
なし
INT #00FH または NMI
3C4H
0EH
なし
未定義命令例外
3C8H
0DH
なし
エミュレータ用例外
3CCH
0CH
なし
ステップトレースブレークトラップ
3D0H
0BH
なし
オペランドブレークトラップ
3D4H
0AH
なし
命令ブレークトラップ
3D8H
09H
なし
エミュレータ用例外
3DCH
08H
なし
3E0H
07H
なし
3E4H
06H
なし
…
…
…
3F8H
01H
あり
システム予約またはモードベクタ
各品種のハードウェアマ
ニュアルを参照のこと
3FCH
00H
なし
リセット
*
EIT 内容
…
備考
この例は 32 要因
拡張時は番号が
大きい方へ延びる
各品種のハードウェアマ
ニュアルを参照のこと
INT #008H または
コプロセッサエラートラップ
INT #007H または
コプロセッサ不在トラップ
システム予約
使用しないでください
…
* : TBR の値を変更しても , リセットベクタは常に固定アドレス "000FFFFCH" が使用されます。
■ ベクタテーブル領域の初期値
リセットにより , テーブルベースレジスタ (TBR) が "000FFC00H" になりますので , ベ
クタテーブル領域は "000FFC00H" から "000FFFFFH" になります。
9
第 2 章 メモリアーキテクチャ
2.2
ビットの順序とバイトの順序
FR ファミリのもつデータタイプには 8, 16, 32 ビットの 3 種類があり , これらをメ
モリへ配置する際の順序について説明します。
FR ファミリのビットの順序は MSB に近いほど番号が大きくなり , バイトの順序は
アドレスが小さいほど番号が大きい構成です。
■ ビットの順序とバイトの順序
ビットの順序の並びは汎用レジスタに転送したときに , MSB に近い方が大きい番号 ,
LSB に近い方が小さい番号となります。また , バイトの順序の並びは上位データをメモ
リアドレスの小さい方に配置し , 下位データを大きい方に配置する構成です。
図 2.2-1 に , ビットの順序とバイトの順序を示します。
図 2.2-1 ビットの順序とバイトの順序
0000 0000H
ビット位置 ⇒ 31
24 23
1615
87
0
R0
H
34
H
56
H
78
H
12
メモリ空間
~
~
1234 5678H
12H
1234 5679H
34H
1234 567AH
56H
1234 567BH
78H
FFFF FFFFH
~
LD @R10,R0
~
R10
10
12345678H
第 2 章 メモリアーキテクチャ
ワードアライメント
2.3
FR ファミリには , 使用するデータ長により指定するメモリアドレス ( ワードアライ
メント ) に制約があります。
■ プログラムにおけるワードアライメントに対する制約
命令長はハーフワードであり , 2 の倍数のアドレスに配置する必要があります。分岐命
令などで , 結果として PC に奇数値を格納するような状況になったとしても , PC の最下
位ビットを "0" と見なします。したがって , 分岐先の命令をフェッチしようとして発生
するアドレスは , 常に偶数扱いになります。
■ データにおけるワードアライメントに対する制約
● ワードデータ
4 の倍数のアドレスに配置する必要があります。オペランドの値が 4 の倍数以外であっ
た場合でも , メモリアドレスの最下位 2 ビットは強制的に "0" と見なします。
● ハーフワードデータ
2 の倍数のアドレスに配置する必要があります。オペランドの値が 2 の倍数以外であっ
た場合でも , メモリアドレスの最下位ビットは強制的に "0" と見なします。
● バイトデータ
配置するアドレスに制約はありません。
ワードデータおよびハーフワードデータのアクセス時に一部のビットを強制的に "0" に
する対象は , 実行アドレスの計算後の結果です。アドレス情報の供給元ではありません。
図 2.3-1 に , プログラムワードバウンダリとデータワードバウンダリの例を示します。
図 2.3-1 プログラムワードバウンダリとデータワードバウンダリの例
R10
12345679H
JMP @R10;0ビット目=0
12345678H
R1
43215679H
4321567BH
~ R14
~
1234 5678H
ST R13,@(R14,4)
1234 567AH
STH R13,@R2
1234 567CH
STB R13,@R1
EFH
89ABCDEFH 1,0ビット目
=0
4321567CH
CDEFH
4321 567CH
89ABH
4321 567EH
CDEFH
FFFF FFFFH
4321567FH
~ R13
~
4321567BH
+
00000004H
⇒
そのまま
4321 5678H
0ビット目=0 4321 567AH
4321567BH
⇒
R2
メモリ空間
⇒
PC
0000 0000H
~
~
11
第 2 章 メモリアーキテクチャ
12
第3章
レジスタ説明
FR ファミリ CPU 内に存在するレジスタについて
説明します。
3.1 FR ファミリのレジスタ構成
3.2 汎用レジスタ
3.3 専用レジスタ
13
第 3 章 レジスタ説明
3.1
FR ファミリのレジスタ構成
FR ファミリには , 汎用レジスタと専用レジスタの 2 種類のレジスタがあります。
• 汎用レジスタ : 演算データやアドレス情報を保持
• 専用レジスタ : 用途別の情報を保持
図 3.1-1 に , FR ファミリのレジスタ構成を示します。
■ FR ファミリのレジスタ構成
図 3.1-1 FR ファミリのレジスタ構成
初期値
32ビット
汎用レジスタ
R0
不定
R1
不定
R2
不定
R3
不定
R12
不定
R13
アキュムレータ(AC)
不定
R14
フレームポインタ(FP)
不定
R15
00000000H
SSPまたはUSP
PC
リセットエントリアドレス
専用レジスタ
PS
- ILM
SCR
CCR
ILM=01111B
SCR=XX0B
CCR=XX00XXXXB
TBR
000FFC00H
RP
不定
SSP
00000000H
USP
不定
MD
不定
64ビット
14
-
第 3 章 レジスタ説明
3.2
汎用レジスタ
FR ファミリ CPU は , 各種演算の結果の保持 , メモリアクセスのポインタとしてのア
ドレス情報の保持などに使用します。また , ある種の命令においては特別な用途があ
ります。
■ 汎用レジスタの概要
FR ファミリ CPU には , 32 ビット長の汎用レジスタが 16 本あります。一般的な命令で
は , これら 16 本の汎用レジスタは区別なく使用することができます。
図 3.2-1 に汎用レジスタの構成を示します。
図 3.2-1 汎用レジスタの構成
初期値
32ビット
R0
不定
R1
不定
R2
不定
R3
不定
R12
不定
R13
アキュムレータ(AC)
不定
R14
フレームポインタ(FP)
不定
R15
SSPまたはUSP
00000000H
15
第 3 章 レジスタ説明
■ 汎用レジスタの特殊な使い方
R13, R14, R15 は一般的な汎用レジスタの使用方法のほかに , ある種の命令においては
以下に示すような特別な使用方法があります。
● 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]
■ R15 とスタックポインタの関係
R15は物理的には専用レジスタのシステムスタックポインタ(SSP)またはユーザスタッ
クポインタ (USP) のいずれかになります。命令記述で R15 を指定した場合 , プログラ
ムステータス (PS) の中にあるコンディションコードレジスタ (CCR) の S フラグの値が
"1" のときは USP, "0" のときは SSP として使用します。
なお , RETI 命令で EIT ハンドラから復帰してくるときは S フラグの値が必ず "0" になっ
ている必要があります。
■ 汎用レジスタの初期値
リセットで , R00 ∼ R14 は不定 , R15 は "00000000H " となります。
16
第 3 章 レジスタ説明
専用レジスタ
3.3
FR ファミリには , 各種用途専用の 32 ビット長専用レジスタが 6 本と , 乗除算用の
64 ビット長専用レジスタが 1 本あります。
■ 専用レジスタ
以下に 7 種類の専用レジスタを示します。詳細は 「
, 3.3.1 プログラムカウンタ (PC)」∼
「3.3.6 乗除算レジスタ (MD)」で説明します。
● 32 ビット専用レジスタ
• プログラムカウンタ (PC)
• プログラムステータス (PS)
• テーブルベースレジスタ (TBR)
• リターンポインタ (RP)
• システムスタックポインタ (SSP)
• ユーザスタックポインタ (USP)
● 64 ビット専用レジスタ
• 乗除算レジスタ (MD)
図 3.3-1 に , 専用レジスタの構成を示します。
図 3.3-1 専用レジスタの構成
PC
PS
リセットエントリアドレス
- ILM
-
SCR
CCR
ILM=01111B
SCR=XX0B
CCR=XX00XXXXB
TBR
000FFC00H
RP
不定
SSP
00000000H
USP
不定
MD
不定
64ビット
17
第 3 章 レジスタ説明
3.3.1
プログラムカウンタ (PC)
現在実行中の命令を格納しているアドレスを指すレジスタです。リセットで PC の
内容はベクタテーブルに記述したリセットエントリアドレスになります。
■ プログラムカウンタの概要
現在実行中の命令を格納してあるアドレスを指すレジスタです。最下位の 1 ビットは
"0"として扱います。
このため,各命令は2の倍数のアドレスに記述する必要があります。
■ プログラムカウンタの機能
● プログラムカウンタの最下位の 1 ビット
最下位の 1 ビットはデバイス内部の回路で "0" として扱います。このため , 最下位ビッ
トへ "1" を書き込んでも , アドレスとしては "0" と同じように扱われます。セル自体は
存在しますが , プログラムアドレスの更新の際に , 最下位ビットが "1" であった場合は
"0" になるので , 分岐直後以外は必ず "0" になります。
最下位の 1 ビットはデバイス内部の回路で "0" と扱う設計になっていますので , 各命令
は 2 の倍数のアドレスに記述する必要があります。
● プログラムカウンタの初期値
リセットで , ベクタテーブルに記述したリセットエントリアドレスになります。テーブ
ルベースレジスタ (TBR) の初期化の方を先に行うため , リセットベクタのアドレスは
"000FFFFCH " となります。
18
第 3 章 レジスタ説明
3.3.2
プログラムステータス (PS)
プログラムステータス (PS) は , プログラム実行の状態を示すレジスタで , 以下の 3
つのパートがあります。
• インタラプトレベルマスクレジスタ (ILM)
• システムコンディションコードレジスタ (SCR)
• コンディションコードレジスタ (CCR)
■ プログラムステータスの概要
プログラムステータスは , 割込み許可レベルの設定 , CPU 内のプログラムトレースブ
レーク機能の制御 , 命令実行状況の状態表示をする各レジスタがあります。
■ プログラムステータスの構成
図 3.3-2 に , プログラムステータスの構成を示します。
図 3.3-2 プログラムステータスの構成
bit No ⇒
31
21 20
PS
空き
16 15
ILM
1110
空き
08 07
SCR
00
CCR
■ プログラムステータスの空きビット
空きビットはすべて将来の拡張用として予約済みです。書込み値は "0" としてくださ
い。読出し値は常に "0" です。
■ インタラプトレベルマスクレジスタ (ILM: bit20 ∼ bit16)
● ILM のビット構成
図 3.3-3 ILM のビット構成
20
ILM
19
18
17
16
ILM4 ILM3 ILM2 ILM1 ILM0 初期値 01111B
● ILM の機能
ILM は , 割込み受付けを行うレベルを規定するレジスタです。CCR 中の I フラグが "1"
のときは , 本レジスタの内容と現在要求中の割込みに対応する割込みレベルを比較し ,
本レジスタの値の方が大きいときに割込み処理を起動します。割込みレベルの強弱は ,
0 に近いほど強く , 31 に近いほど弱くなります。ただし , ILM4 はそのほかのビットと
異なり , 設定可能な値に制約があります。
図 3.3-4 に , ILM の機能を示します。
19
第 3 章 レジスタ説明
図 3.3-4 ILM の機能
FRファミリCPU
周辺
割込みコントローラ
ILM
ICR
29
割込み要求
Iフラグ
1
25
comp
29>25
A
N
D
割込み起動
起動OK
● ILM のプログラムで設定可能な値
元の値が 16 ∼ 31 のとき , 新たな値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設
定する命令を実行すると , ( 設定した値 +16) という値が転送されます。
元の値が 0 ∼ 15 のときは , 0 ∼ 31 の任意の値を設定できます。
● リセットによる ILM の初期値
リセットで "01111B" になります。
■ システムコンディションコードレジスタ (SCR: bit10 ∼ bit08)
● SCR のビット構成
図 3.3-5 SCR のビット構成
SCR
10
09
08
D1
D0
T
初期値 XXOB
● SCR の機能
• D1, D0 ビット
D1, D0 ビットはステップ除算実行時の中間データです。ステップ除算プログラム実行
中に , 割込みが発生した場合の再開を保証するためのレジスタです。除算処理実行途中
にこのレジスタの内容を変更すると , 除算結果は保証されません。
• T ビット
T ビットはステップトレーストラップフラグです。このビットを "1" にすることでス
テップトレーストラップの動作が有効になります。
<注意事項>
ステップトレーストラップ処理ルーチンのデバッグをエミュレータで行うことはできま
せん。
● リセットによる SCR の初期値
D1, D0 は不定 , T ビットは "0" になります。
20
第 3 章 レジスタ説明
■ コンディションコードレジスタ (CCR: bit07 ∼ bit00)
● CCR のビット構成
図 3.3-6 CCR のビット構成
CCR
07
06
05
04
03
02
01
00
-
-
S
I
N
Z
V
C
初期値 --00XXXXB
● CCR の機能
• S フラグ
使用するスタックポインタを選択します。"0" でシステムスタックポインタ (SSP), "1"
でユーザスタックポインタ (USP) を指定します。
なお , RETI 命令は "0" のときのみ実行可能です。
• I フラグ
マスク可能割込みの許可 / 禁止を制御します。"0" で禁止 , "1" で許可となります。
• N フラグ
演算の結果を 2 の補数として扱ったときの結果の正負を示します。"0" で正 , "1" で負
を示します。
• Z フラグ
演算の結果が "0" であったかどうかを示します。"0" で演算結果が "0" でないこと , "1"
で演算結果が "0" であることを示します。
• V フラグ
演算の結果を 2 の補数として扱ったときの結果にオーバフローがあったかどうかを示
します。"0" でオーバフローなし , "1" でオーバフローありを示します。
• C フラグ
演算の結果に最上位ビットからのキャリまたはボローがあったかどうかを示します。
"0" でキャリまたはボローなし , "1" でキャリまたはボローありを示します。また , シフ
ト命令の場合は , 最後にシフトアウトしたビットの値になります。
● リセットによる CCR の初期値
S, I フラグは "0" になります。N, Z, V, C フラグは不定です。
21
第 3 章 レジスタ説明
■ PS レジスタに関する注意事項
一部の命令で PS レジスタを先行処理しているため , 下記の例外動作により , デバッガ
ご使用時に割込み処理ルーチンでブレークしたり , PS レジスタ内のフラグの表示内容
が更新されたりする場合があります。いずれの場合も , EIT から復帰後以降に , 正しく
再処理を行うように設計されていますので , EIT 前後の動作は仕様どおりの処理を行い
ます。
● DIV0U/DIV0S 命令の直前の命令で , a) ユーザ割込み・NMI を受けた場合 , b) ステップ実行を
行った場合 , c) データイベントまたはエミュレータメニューにてブレークした場合 , 以下
のような動作を行う場合があります。
1. D0, D1 フラグが先行して更新されます。
2. EIT 処理ルーチン ( ユーザ割込み・NMI またはエミュレータ ) を実行します。
3. EIT から復帰後 , DIV0U/DIV0S 命令が実行され , D0, D1 フラグが "1.") と同じ値に更
新されます。
● ユーザ割込み・NMI 要因が発生している状態で , 割込みを許可するために ORCCR/STILM/
MOV Ri, PS の各命令が実行されると , 以下のような動作を行います。
1. PS レジスタが先行して更新されます。
2. EIT 処理ルーチン ( ユーザ割込み・NMI) を実行します。
3. EIT から復帰後 , 上記命令が実行され , PS レジスタが "1." と同じ値に更新されます。
22
第 3 章 レジスタ説明
テーブルベースレジスタ (TBR)
3.3.3
テーブルベースレジスタ (TBR) は , EIT 発生時のエントリアドレスを格納するテー
ブルを指すレジスタです。
■ テーブルベースレジスタの概要
テーブルベースレジスタ (TBR) は , EIT 発生時のエントリアドレスを格納するテーブル
を指すレジスタです。このレジスタの内容と発生した EIT に対応したベクタオフセッ
トの加算値が参照するベクタのアドレスになります。
図 3.3-7 に , テーブルベースレジスタの動作例を示します。
図 3.3-7 テーブルベースレジスタ (TBR) の動作例
ベクタ対応表
ベクタ
ベクタ番号 オフセット
~
タイマ
割込み
~
11H
~
bit31
0
Eaddr0 Eaddr1
Eaddr2 Eaddr3
PC
~
TBR
87654123H
3B8H
~
~
加算器
ベクタテーブル
+0
⇒
87654123H+000003B8H
876544DBH
~
876544D8H
~
+1
~
+2
~
+3
~
~
EAddr0 EAddr1
EAddr2 EAddr3
~
~
~
~
<注意事項>
ベクタテーブルの参照では , ワードアクセスによるアドレスアライメント操作が適用され
ます。
23
第 3 章 レジスタ説明
■ テーブルベースレジスタの構成
図 3.3-8 に , テーブルベースレジスタのビット構成を示します。
図 3.3-8 テーブルベースレジスタのビット構成
bit No ⇒
31
00
TBR
■ テーブルベースレジスタの機能
● ベクタテーブル参照アドレス
ベクタ参照のためのアドレスは , TBR の内容と各種割込みで決まっているベクタオフ
セット値の加算値より生成されます。ベクタへのアクセスはワード単位で行いますの
で , 生成アドレスの下位 2 ビットは強制的に "0" になります。
● ベクタテーブルの配置
ベクタテーブルの配置はワード単位で行うことができます。
● テーブルベースレジスタの初期値
リセットで , "000FFC00H" となります。
■ テーブルベースレジスタの注意事項
TBR には , "FFFFFC00H" 以上の値を設定しないでください。これを超えた値を設定す
ると , オフセット値を加算した結果がオーバフローする場合があります。加算結果が
オーバフローした場合 , "00000000H" ∼ "000003FFH" の領域に対してベクタアクセスを
行うことになり暴走の原因となります。
24
第 3 章 レジスタ説明
リターンポインタ (RP)
3.3.4
リターンポインタ (RP) は , CALL 命令の実行後の戻りアドレスを保証するために ,
CALL 命令実行時のプログラムカウンタ (PC) の値を保持するレジスタです。
■ リターンポインタの概要
リターンポインタ (RP) の内容は , 遅延スロットあり CALL 命令であればその命令が格
納されているアドレス +4 に , 遅延スロットなし CALL 命令であればその命令が格納さ
れているアドレス +2 になります。RET 命令の実行により , RP から退避データを PC に
戻します。
図 3.3-9 に遅延スロットなし CALL 命令実行時の RP の動作例を , 図 3.3-10 に RET 命令
実行時の RP の動作例を示します。
図 3.3-9 遅延スロットなし CALL 命令実行時の RP の動作例
メモリ空間
実行前
~
PC
12345678H
RP
????????H
メモリ空間
実行後
~
~
CALL SUB1
~
~
PC
SUB1
RP
1234567AH
RET
SUB1
~
~
CALL SUB1
~
RET
SUB1
~
~
~
~
図 3.3-10 RET 命令実行時の RP の動作例
メモリ空間
~
実行前
メモリ空間
~
~
実行後
CALL SUB1
PC
SUB1
RP
1234567AH
CALL:D SUB
ADD #1,R00
~
~
RET
SUB1
~
~
PC
1234567AH
RP
1234567AH
ADD #1,R00
~
RET
SUB1
~
~
~
~
25
第 3 章 レジスタ説明
■ リターンポインタの構成
図 3.3-11 にリターンポインタのビット構成を示します。
図 3.3-11 リターンポインタのビット構成
bit No ⇒
31
00
RP
■ リターンポインタの機能
● 多重 CALL 命令時のリターンポインタ
RP はスタック構造ではないので , サブルーチンから別のサブルーチンを呼び出す場合
には , あらかじめ退避しておく必要があります。
● リターンポインタの初期値
初期値は不定です。
26
第 3 章 レジスタ説明
3.3.5
システムスタックポインタ (SSP), ユーザスタックポ
インタ (USP)
システムスタックポインタ (SSP) とユーザスタックポインタ (USP) は , スタック領
域を示すレジスタです。CCR 中の S フラグの値により , SSP か USP のいずれを使
用するかが決まります。また , EIT 発生時にプログラムカウンタ (PC) とプログラム
ステータス (PS) を退避するスタックは , S フラグの設定値とは関係なく SSP に設定
された領域になります。
■ システムスタックポインタ , ユーザスタックポインタの概要
システムスタックポインタ (SSP) とユーザスタックポインタ (USP) は , スタック領域を
示すポインタです。スタック領域は , 汎用レジスタの R15 を間接レジスタとする命令
およびレジスタマルチ転送命令でアクセスします。R15 を間接レジスタとして使用す
るレジスタは , コンディションコードレジスタ (CCR) の S フラグが "0" のときに SSP,
S フラグが "1" のときに USP となります。また , S フラグの値によらず EIT 発生時に
PC と PS を退避するスタックは , SSP が示す領域になります。
図 3.3-12 に , S フラグが "0", 図 3.3-13 に , S フラグが "1" のときに ST R13,@-R15 を実
行したときのスタックポインタの動作例を示します。
図 3.3-12 S フラグが "0" のときに ST R13,@-R15 を実行したときのスタックポインタの動作例
ST R13,@-R15実行前
SSP
12345678H
USP
76543210H
R13
17263540H
メモリ空間
00000000H
~
~
????????
????????
~
SSP
12345674H
USP
76543210H
R13
17263540H
FFFFFFFFH
S
CCR
~
ST R13,@-R15実行後
メモリ空間
00000000H
~
~
17263540H
????????
~
CCR
0
~
FFFFFFFFH
S
0
図 3.3-13 S フラグが "1" のときに ST R13,@-R15 を実行したときのスタックポインタの動作例
ST R13,@-R15実行前
SSP
12345678H
USP
76543210H
R13
17263540H
S
CCR
1
メモリ空間
00000000H
~
~
????????
????????
~
~
ST R13,@-R15実行後
SSP
12345678H
USP
7654320CH
R13
17263540H
FFFFFFFFH
S
CCR
メモリ空間
00000000H
~
~
17263540H
????????
~
~
FFFFFFFFH
1
27
第 3 章 レジスタ説明
■ スタックポインタの構成
図 3.3-14 に , スタックポインタのビット構成を示します。
図 3.3-14 スタックポインタのビット構成
bit No ⇒
31
00
SSP
USP
■ システムスタックポインタとユーザスタックポインタの機能
● スタックポインタの自動増減
スタックポインタはプリデクリメント / ポストインクリメントです。
● スタックポインタの初期値
SSP は "00000000H", USP は不定です。
■ EIT ハンドラからの復帰
RETI 命令で EIT ハンドラから復帰するときは , S フラグを "0" に設定し , スタックとし
てシステムスタックを選択しておく必要があります。詳しくは「4.2 EIT 処理の基本動
作 」の「■ EIT ハンドラからの復帰」中の同項目を参照してください。
28
第 3 章 レジスタ説明
乗除算レジスタ (MD)
3.3.6
乗除算レジスタ (MD) は , 乗算の結果を格納 , 除算の被除数設定と結果を格納する 64
ビットのレジスタです。
■ 乗除算レジスタの概要
乗除算レジスタ (MD) は , 乗算の結果を格納 , 除算の被除数設定と結果を格納するレジ
スタです。乗算の結果は 64 ビットとして MD へ格納されます。除算は , 除算開始前に
MD の下位 32 ビットに被除数を設定する必要があります。その後 , 除算を実行すると ,
最終的に MD の上位 32 ビットに剰余が , 下位 32 ビットに商が得られます。
図 3.3-15 に , 乗除算レジスタの乗算動作例を , 図 3.3-16 に , 乗除算レジスタの除算動作
例を示します。
図 3.3-15 乗除算レジスタの乗算動作例
MUL ROO,R01 実行後
MUL ROO,R01 実行前
R00
12345678H
R00
12345678H
R01
76543210H
R01
76543210H
MD
MD
????????????????H
086A1C970B88D780H
図 3.3-16 乗除算レジスタの除算動作例
ステップ除算実行後
ステップ除算実行前
R00
R00
12345678H
12345678H
R00を使用
MD
????????76543210H
MD
091A264000000006H
29
第 3 章 レジスタ説明
■ 乗除算レジスタの構成
図 3.3-17 に , 乗除算レジスタのビット構成を示します。
図 3.3-17 乗除算レジスタのビット構成
bit No ⇒
31
00
MDH
MDL
■ 乗除算レジスタの機能
● 乗除算結果の格納
乗算の結果は MDH に上位 32 ビット , MDL に下位 32 ビットを格納します。
除算の商は 32 ビット長として MDL に , 剰余は 32 ビット長として MDH に , それぞれ
格納します。
● 乗除算レジスタ (MD) の初期値
初期値は不定です。
30
第4章
リセット , EIT 処理
FR ファミリ CPU のリセットと EIT 処理について
説明します。
リセットは , 現在実行中の処理を強制的に中断し ,
デバイス全体を初期化して , プログラムを先頭から
再起動させるための方法です。これに対して EIT
は , 現在実行中の処理を中断し , 再開できる情報を
メモリへ退避した後に , 決められた処理プログラム
へ制御を移す方法です。EIT 処理プログラムは ,
RETI 命令により元のプログラムへ復帰させること
ができます。
EIT 処理動作は , 例外 , 割込み , トラップともほぼ
同じで , 以下に示す若干の違いによりそれぞれを区
別しています。
• 割込みとは命令シーケンスとは無関係に発生す
るものです。割込み受付け直後の命令から再実
行できるようになっています。
• 例外とは命令シーケンスに関連して発生し , 例外
を発生した命令から再実行できるようになって
いるものです。
• トラップとは命令シーケンスに関連して発生し ,
トラップを発生した命令の次の命令から再実行
できるようになっているものです。
4.1 リセット
4.2 EIT 処理の基本動作
4.3 割込み
4.4 例外処理
4.5 トラップ
4.6 優先順位
31
第 4 章 リセット , EIT 処理
4.1
リセット
リセットは , 現在実行中の処理を強制的に中断し , デバイス全体を初期化して , プロ
グラムを先頭から再起動させるための方法です。リセットは , LSI を最初に動かし始
めるときや不具合状況に陥ったときの復帰方法として使用します。
■ リセットの動作
リセットが発生すると , CPU はそれまで行っていた命令動作を中断し , リセットが解除
されるまで停止状態となります。リセットが解除されると , CPU は内部レジスタを初
期化し , 新しいプログラムカウンタ (PC) の値からプログラムを取り込んで実行を再開
します。
■ リセットによる CPU 内レジスタの初期化値
リセットが発生すると , FR ファミリ CPU は各レジスタを以下に示す状態に初期化しま
す。
• PC……"000FFFFCH" に格納したワードデータ
• ILM ……"01111B"
• T フラグ……"0"( トレース OFF)
• I フラグ……"0"( 割込み禁止 )
• S フラグ……"0"(SSP 使用 )
• TBR ……"000FFC00H"
• SSP ……"00000000H"
• R00 ∼ R14 ……不定
• R15 ……SSP
リセットが発生したときの内蔵機能の動作に関しては , 各デバイスのハードウェアマ
ニュアルを参照してください。
■ リセットの優先順位
リセットの方が EIT の各動作より優先順位が高くなっています。
32
第 4 章 リセット , EIT 処理
4.2
EIT 処理の基本動作
割込み , 例外 , トラップは , 一部の条件以外は同一の動作で , 命令実行を中断 , 復帰
させるための情報の退避および処理プログラムへの分岐を行います。
■ EIT 処理の基本動作
FR ファミリは , EIT が発生すると以下の処理を行います。
1. テーブルベースレジスタ (TBR) が示すベクタテーブルと発生した EIT に対応する番
号のオフセット値から , 発生した EIT の処理プログラムのエントリアドレスを求め
ます。
2. 復帰のために , 旧プログラムカウンタ (PC) と旧プログラムステータス (PS) の内容を
システムスタックポインタ (SSP) が示すスタック領域へ格納します。
3. 処理フローの最後に新たな EIT 要因発生の有無を検出します。
図 4.2-1 に , EIT シーケンスの動作手順を示します。
図 4.2-1 EIT シーケンスの動作
EITを検出した命令⇒
キャンセルされる命令⇒
IF
キャンセルされる命令⇒
ID
IF
EX MA WB
ID xxxx xxxx xxxx
IF xxxx xxxx xxxx xxxx
①ベクタアドレス計算と新PC設定
EITシーケンス
②SSP更新とPS退避⇒
③SSP更新とPC退避⇒
④新規EIT発生の検出⇒
EITハンドラ先頭命令(分岐先命令)⇒
ID(1) EX(1)MA(1)WB(1)
ID(2)EX(2)MA(2) WB(2)
ID(3)EX(3) MA(3)WB(3)
ID(4)EX(4)MA(4)WB(4)
IF
ID
EX
MA
PC
<注意事項>
パイプライン動作については ,「5.1 パイプライン動作」を参照してください。
33
第 4 章 リセット , EIT 処理
■ ベクタテーブルの構造
ベクタテーブルは主記憶メモリ内にあり , TBR で示されるアドレスから 1K バイトの領
域を占めます。この領域は EIT 用エントリアドレスのためのテーブル領域として使用
しますが,この用途で使用しない場合には通常の命令またはデータ領域として使用する
こともできます。
図 4.2-2 に , ベクタテーブルの構造を示します ( この例は 32 要因 ) 。
図 4.2-2 ベクタテーブルの構造
TBR
オフセット ベクタ番号
メモリ空間
00000000H
~
~
~
000H
FFH
INT #0FFH
004H
FEH
INT #0FEH
008H
FDH
INT
~
1K
バイト
~
FFFFFFFFH
~
#0FDH ~
~
33CH
30H
INT #030H
340H
2FH
INT #02FH または IR31
344H
2EH
INT
~
~
#02EH または IR30 ~
~
3BCH
10H
INT #010H または IR00
3C0H
0FH
INT
3C4H
0EH
未定義命令例外
3C8H
0DH
エミュレータ例外
3CCH
0CH
ステップトレーストラップ
3D0H
~
34
内容
オペランドブレークトラップ
0BH
~
#00FH または NMI ~
3F8H
01H
3FCH
00H
~
システム予約またはモードベクタ
リセット
第 4 章 リセット , EIT 処理
■ 退避するレジスタ
リセット以外は PS と PC を以下のように , CCR 中の S フラグの値によらず SSP が指す
スタックへ退避します。リセットでは , 退避操作を行いません。
図 4.2-3 に , EIT 発生時の PC, PS の退避を示します。
図 4.2-3 EIT 発生時の PC, PS の退避図
メモリ空間
割込み直前
00000000H
メモリ空間
割込み直後
~
~
SSP
7FFFFFF8H
7FFFFFFCH
割込み
SSP
80000000H
TBR
000FFC00H
12345678H
PS
000C0010H
7FFFFFF8H
~
12345678H
000C0010H
7FFFFFFCH
~
PC
~
80000000H
IL=9
オフセット:000003B8H
00000000H
~
~
TBR
56781234H
+
オフセット:000003B8H
~
PC
56781234H
PS
00090010H
56781234H
+
~
FFFFFFFFH
~
000FFC00H
~
~
FFFFFFFFH
■ EIT ハンドラからの復帰
EIT ハンドラからの復帰には RETI 命令を使用します。
このとき , 復帰後のプログラム実行結果を保証するためには CPU の全レジスタ内容が
保存されていることが必要です。
なお , PC と PS については EIT 発生時にスタックに退避した値を RETI 命令による復帰
シーケンス中にスタックから復帰しますので , スタック内の PC, PS の値は必要がない
限り書き換えないでください。また , RETI 命令実行時の S フラグの値は必ず "0" にし
てください。
35
第 4 章 リセット , EIT 処理
4.3
割込み
割込みは , 命令シーケンスとは無関係に発生し , それまで実行していた一連の命令
シーケンス処理を再開するために必要な情報を退避し , その後 , 発生した割込みに対
応した処理ルーチンを起動するものです。
割込みを発生する要因には以下の 2 つがあります。
• ユーザ割込み
• ノンマスカブルインタラプト (NMI)
■ 割込みの概要
割込みとは命令シーケンスとは無関係に発生し,それまで実行していた一連の命令シー
ケンス処理を再開するために必要な情報を退避し , その後 , 発生した割込みに対応した
処理ルーチンを起動するものです。
割込みが発生するより前に CPU に取り込まれ実行中の命令はそのまま継続して実行し
ますが , 割込み受付け後にパイプライン動作で取り込んだ命令はキャンセルされます。
このため , 割込み処理完了後に戻る命令は割込み受付け直後の命令からとなります。
■ 割込みを発生する要因
割込みを発生する要因には以下の 2 つがあります。
• ユーザ割込み ( 詳細は「4.3.1 ユーザ割込み」参照 )
• ノンマスカブルインタラプト (NMI)( 詳細は「4.3.2
ノンマスカブルインタラプト
(NMI)」参照 )
■ ステップ除算プログラム中の割込みの発生
ステップ除算プログラム中で割込みが発生した場合 , 再開を行えるようにするためにプ
ログラムステータス (PS) 中に中間データを格納し , スタックへ退避します。このため ,
スタック内の PS の内容を割込み処理プログラムで書き換えると , 処理再開後の命令動
作は通常と同じように実行しますが , 除算結果が誤った値になります。
36
第 4 章 リセット , EIT 処理
4.3.1
ユーザ割込み
ユーザ割込みとは , 各種周辺回路から要求が発生する割込みです。割込み要求ごとに
割込みレベルが設定されており , レベル値に応じて要求をマスクすることができま
す。
以下に , ユーザ割込みの受付け条件 , 動作および使い方などについて説明します。
■ ユーザ割込みの概要
ユーザ割込みとは , 各種周辺回路から要求が発生する割込みです。
割込み要求ごとに割込みレベルが設定されており,レベル値に応じて要求をマスクする
ことができます。また , プログラムステータス (PS) のコンディションコードレジスタ
(CCR) の I フラグの操作により , 一括して割込みを禁止することも可能です。
端子入力により発生する割込み要求もありますが , ほとんどの割込み要求は , このマイ
クロコントローラに内蔵された周辺回路から発生します。
■ ユーザ割込み要求受付け条件
以下の条件が成立したとき , CPU はユーザ割込みを受け付けます。
• 周辺回路が動作して割込み要求を発生
• 周辺回路の制御レジスタ内にある割込み許可ビットが"許可"状態に設定されている
• 発生した割込み要求 (ICR *1) のレベルより ILM *2 のレベルの方が高い場合
• I フラグが "1" の場合
*1:インタラプトコントロールレジスタ ( マイクロコントローラ内にある割込みコント
ローラ内のレジスタ )
*2:インタラプトレベルマスクレジスタ (CPU のプログラムステータス (PS) 内のレジス
タ)
■ ユーザ割込み受付け時の動作
ユーザ割込みが受け付けられると , 以下の動作を行います。
• PS の内容をシステムスタックに退避
• 次の命令のアドレスをシステムスタックに退避
• システムスタックポインタ (SSP) の値から 8 を減算
• 受け付けた割込み要求の値 ( レベル ) を ILM に格納
• PS のコンディションコードレジスタ (CCR) 内の S フラグに "0" を格納
• プログラムカウンタ (PC) に " 受け付けた割込み要求のベクタアドレス " の値を格納
37
第 4 章 リセット , EIT 処理
■ 割込み処理を起動するまでの時間
割込み処理を起動するまでの時間は,割込み要求発生時に実行していた命令の実行サイ
クル数を n とすると , この命令の実行開始時点より最大 (n+6) サイクルです。
命令中でメモリアクセスを含む場合または命令供給が不足した場合は,その分のウェイ
トサイクルが上記の値に加算されます。
■ 割込み発生時に退避する PC の値
割込みを受け付けると , パイプラインで処理している命令のうち , 動作の中断が間に合
わないものはそのまま実行し,中断が間に合うものは割込み受付け以降の処理をキャン
セルします。EIT シーケンスでは , 実行をキャンセルした命令のアドレスを PC として
システムスタックに退避します。
■ ユーザ割込みの使い方
ユーザ割込みを使用する場合には,プログラムにより次の手順で設定を行う必要があり
ます。
図 4.3-1 にユーザ割込みの使い方を示します。
図 4.3-1 ユーザ割込みの使い方
FRファミリCPU
PS
I
SSP
AND
割込み
コントローラ
USP
ILM
⑦
INT
OK
②
S
⑥
②
周辺
ICR#n
割込み
許可
ビット
④
⑤
比較
内部バス
① 割込みベクタテーブルの値を設定 ( データとして定義 )
② SSP の値を設定
③ テーブルベースレジスタ (TBR) の値を設定
④ 割込みコントローラ内の , 割込みを発生させようとしている周辺の割込みに対応
する ICR に適切なレベル設定
⑤ 割込み要求を発生する周辺機能の初期化と割込みの許可
⑥ PS 内の ILM に適切な値を設定
⑦ I フラグを "1" に設定
38
第 4 章 リセット , EIT 処理
4.3.2
ノンマスカブルインタラプト (NMI)
ノンマスカブルインタラプト (NMI) はノンマスカブルな割込みです。マイクロコン
トローラの外部端子 NMI がアクティブになると NMI 要求が発生します。
以下に , NMI の受付け条件 , 動作および使い方などについて説明します。
■ ノンマスカブルインタラプトの概要
NMI はノンマスカブルな割込みです。マイクロコントローラの外部端子 NMI がアク
ティブになると NMI 要求が発生します。
プログラムステータス (PS) のコンディションコードレジスタ (CCR) 内の I フラグによ
り割込みを禁止することはできません。
PS のインタラプトレベルマスクレジスタ (ILM) の値によるマスクは有効です。ただし ,
ソフトウェアからは NMI を抑止する値を ILM に設定することはできないため , プログ
ラムから NMI をマスクすることはできません。
■ ノンマスカブルインタラプト要求受付け条件
以下の条件が成立したとき , CPU は NMI 要求を受け付けます。
● NMI 端子入力がアクティブ
• 通常の動作中
: ネガティブエッジの検出
• ストップモード時 : "L" レベルの検出
● ILM >15
■ ノンマスカブルインタラプト受付け時の動作
NMI が受け付けられると , 以下の動作を行います。
1. PS の内容をシステムスタックに退避
2. 次の命令のアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. ILM に 15 を格納
5. PS の CCR 内の S フラグに "0" を格納
6. プログラムカウンタ (PC) に (TBR+3C0H) の値を格納
■ ノンマスカブルインタラプト処理を起動するまでの時間
NMI 処理を起動するまでの時間は , NMI 要求発生時に実行していた命令の実行サイク
ル数を n とすると , この命令の実行開始時点より最大 (n+6) サイクルです。
命令中でメモリアクセスを含む場合または命令供給が不足した場合は,その分のウェイ
トサイクルが上記の値に加算されます。
39
第 4 章 リセット , EIT 処理
■ ノンマスカブルインタラプト発生時に退避する PC の値
NMI を受け付けると , パイプラインで処理している命令のうち , 動作の中断が間に合わ
ないものはそのまま実行し , 中断が間に合うものは NMI を受付け以降の処理をキャン
セルします。EIT シーケンスでは , 実行をキャンセルした命令のアドレスを PC として
システムスタックに退避します。
■ ノンマスカブルインタラプトの使い方
NMI を使用する場合には , プログラムの中で次の手順で設定する必要があります。
1. 割込みベクタテーブルの値を設定 ( データとして定義 )
2. SSP の値を設定
3. TBR の値を設定
4. PS 内の ILM に適切な値を設定
40
第 4 章 リセット , EIT 処理
4.4
例外処理
例外処理は命令シーケンスに関連して発生し , そのときに実行しようとした命令から
シーケンス処理を再開するために必要な情報を退避し , その後 , 発生した例外処理に
対応した処理ルーチンを起動するものです。
■ 例外処理の概要
例外処理は命令シーケンスに関連して発生し , そのときに実行しようとした命令から
シーケンス処理を再開するために必要な情報を退避し , その後 , 発生した例外に対応し
た処理ルーチンを起動するものです。
処理ルーチンへの分岐は , 例外処理の原因となった命令が実行される前に起こります。
例外発生時にスタックへ退避するプログラムカウンタ (PC) は , 例外を発生した命令の
アドレスとなります。
■ 例外処理を発生する要因
例外処理を発生する要因は未定義命令例外(詳細は
「4.4.1 未定義命令例外」参照)です。
41
第 4 章 リセット , EIT 処理
4.4.1
未定義命令例外
未定義命令例外とは , 定義されていない命令コードを実行しようとしたときに発生す
る例外です。
以下に , 未定義命令例外の動作 , 起動するまでの時間 , 使い方などについて説明し
ます。
■ 未定義命令例外の概要
未定義命令例外とは,定義されていない命令コードを実行しようとしたときに発生する
例外です。
■ 未定義命令例外の動作
外部割込みを受け付けると , 以下の動作を行います。
1. プログラムステータス (PS) の内容をシステムスタックに退避
2. 未定義命令例外が発生したアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. PS のコンディションコードレジスタ (CCR) 内の S フラグに "0" を格納
5. プログラムカウンタ (PC) に (TBR+3C4H) の値を格納
■ 未定義命令例外処理が起動するまでの時間
例外処理を起動するまでの時間は , 7 サイクルです。
■ 未定義命令例外発生時に退避する PC の値
PC の値としてシステムスタックに退避されるアドレスは , 未定義命令例外を発生した
命令自身を示しています。RETI 命令を実行したときに , 未定義命令例外を発生した命
令の次のアドレスやしかるべき処理ルーチンから実行を再開するよう,システムスタッ
クの内容を例外処理ルーチンで書き換えてください。
■ 未定義命令例外の使い方
未定義命令例外を使用する場合には,プログラムの中で次の手順で設定する必要があり
ます。
1. 割込みベクタテーブルの値を設定 ( データとして定義 )
2. SSP の値を設定
3. TBR の値を設定
■ 遅延スロットに置かれた未定義命令
遅延スロットに置かれた未定義命令は , 未定義命令例外を発生しません。このとき , 未
定義命令は NOP 命令と同じ動作になります。
42
第 4 章 リセット , EIT 処理
4.5
トラップ
トラップとは命令シーケンスに関連して発生し , そのとき実行した命令の次の命令か
らシーケンス処理を再開するために必要な情報を退避し , その後 , 発生したトラップ
に対応した処理ルーチンを起動するものです。
トラップを発生する要因には以下のものがあります。
• INT 命令
• INTE 命令
• ステップトレーストラップ
• コプロセッサ不在トラップ
• コプロセッサエラートラップ
■ トラップの概要
トラップとは命令シーケンスに関連して発生し,そのとき実行した命令の次の命令から
シーケンス処理を再開するために必要な情報を退避し , その後 , 発生したトラップに対
応した処理ルーチンを起動するものです。
処理ルーチンへの分岐は , トラップの原因となった命令が実行された後に起こります。
トラップ発生時にスタックへ退避する PC は , トラップを発生した命令のアドレスとな
ります。
■ トラップを発生する要因
トラップを発生する要因には以下のものがあります。
• INT 命令 ( 詳細は「4.5.1 INT 命令」を参照 )
• INTE 命令 ( 詳細は「4.5.2 INTE 命令」を参照 )
• ステップトレーストラップ ( 詳細は「4.5.3 ステップトレーストラップ」を参照 )
• コプロセッサ不在トラップ ( 詳細は「4.5.4 コプロセッサ不在トラップ」を参照 )
• コプロセッサエラートラップ ( 詳細は「4.5.5 コプロセッサエラートラップ」を参照 )
43
第 4 章 リセット , EIT 処理
4.5.1
INT 命令
INT 命令は , ソフトウェアでトラップを発生する命令です。
以下に , INT 命令の動作 , 起動するまでの時間および退避するプログラムカウンタ
(PC) の値などについて説明します。
■ INT 命令の概要
INT #u8 命令は , ソフトウェアでトラップを発生する命令です。
オペランドで指定された割込み番号のトラップを発生します。
■ INT 命令実行時の動作
INT #u8 命令を実行すると , 以下の動作を行います。
1. プログラムステータス (PS) の内容をシステムスタックに退避
2. 次の命令のアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. PS のコンディションコードレジスタ (CCR) 内の I フラグに "0" を格納
5. PS の CCR 内の S フラグに "0" を格納
6. PC に (TBR+3FCH-4 × u8) の値を格納
■ INT 命令のトラップ処理を起動するまでの時間
トラップ処理を起動するまでの時間は 6 サイクルです。
■ INT 命令実行時に退避する PC の値
INT 命令の次のアドレスを PC としてシステムスタックに退避します。
■ INT 命令使用上の注意事項
INTE 命令ハンドラ , ステップトレーストラップハンドラの中では , INT 命令を使用し
ないでください。RETI 命令による復帰後 , 正常に動作しません。
44
第 4 章 リセット , EIT 処理
4.5.2
INTE 命令
INTE 命令は , デバッグ用にソフトウェアでトラップを発生する命令です。
以下に , INTE 命令の動作 , 起動するまでの時間および退避するプログラムカウンタ
(PC) の値などについて説明します。
■ INTE 命令の概要
INTE 命令は , エミュレータが使用します。
エミュレータでデバッグを行わないシステムの場合は,ユーザが使用することもできま
す。
■ INTE 命令実行時の動作
INTE 命令を実行すると , 以下の結果が得られます。
1. プログラムステータス (PS) の内容をシステムスタックに退避
2. 次の命令のアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. PS のインタラプトレベルマスクレジスタ (ILM) に 4 を格納
5. PS のコンディションコードレジスタ (CCR) 内の S フラグに "0" を格納
6. PC に (TBR+3D8H) の値を格納
■ INTE 命令のトラップ処理を起動するまでの時間
トラップ処理を起動するまでの時間は 6 サイクルです。
■ INTE 命令実行時に退避する PC の値
INTE 命令の次のアドレスを PC としてシステムスタックに退避します。
■ INTE 命令使用上の注意事項
エミュレータを使ってデバッグを行う場合は , ユーザプログラム中で INTE 命令を使う
ことはできません。また , INTE 命令ハンドラ , ステップトレーストラップハンドラの
中では , INTE 命令を使用しないでください。RETI 命令による復帰後 , 正常に動作しま
せん。また , ステップ実行中は INTE 命令による EIT の発生はありません。
45
第 4 章 リセット , EIT 処理
4.5.3
ステップトレーストラップ
ステップトレーストラップはデバッグ用のトラップです。プログラムステータス
(PS) のシステムコンディションコードレジスタ (SCR) 内の T フラグをセットするこ
とにより , 1 命令実行ごとに発生します。
以下に , ステップトレーストラップの発生条件 , 動作および退避するプログラムカウ
ンタ (PC) の値などについて説明します。
■ ステップトレーストラップの概要
ステップトレーストラップは PS の SCR 内の T フラグをセットすることにより , 1 命令
実行ごとに発生します。
ステップトレーストラップは,遅延分岐命令実行時の分岐命令実行直後には発生しませ
ん。遅延スロット内の命令を実行した後に発生します。
エミュレータでデバッグを行わないシステムの場合は,ユーザが使用することもできま
す。
■ ステップトレーストラップ発生の条件
以下の条件が成立したとき , ステップトレーストラップが発生します。
• PS の SCR 内の T フラグが "1" の場合
• 実行している命令が遅延分岐命令以外の場合
• INTE 命令およびステップトレーストラップの処理ルーチン内以外の場合
■ ステップトレーストラップ発生時の動作
ステップトレーストラップが発生すると , 以下の動作を行います。
1. PS の内容をシステムスタックに退避
2. 次の命令のアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. PS のコンディションコードレジスタ (CCR) 内の S フラグに "0" を格納
5. PC に (TBR+3C4H) の値を格納
■ ステップトレーストラップ発生時に退避する PC の値
アドレスを PC としてシステムスタックに退避します。
■ ステップトレーストラップと NMI およびユーザ割込みの関係
T フラグを設定してステップトレーストラップを許可すると , NMI とユーザ割込みは
禁止状態となります。
46
第 4 章 リセット , EIT 処理
■ ステップトレーストラップの使用上の注意事項
エミュレータを使ってデバッグを行う場合は,ユーザプログラム中でステップトレース
トラップ機能を使うことはできません。また , ステップトレーストラップ機能を使用す
ると INTE 命令による EIT 機能は使用できなくなります。
47
第 4 章 リセット , EIT 処理
4.5.4
コプロセッサ不在トラップ
コプロセッサ不在トラップは , 実装されていないコプロセッサ命令を使用するコプロ
セッサ命令を実行すると発生します。
以下に , コプロセッサ不在トラップ発生の条件 , 動作および退避するプログラムカウ
ンタ (PC) の値について説明します。
■ コプロセッサ不在トラップの概要
コプロセッサ不在トラップは , 実装されていないコプロセッサ命令を使用するコプロ
セッサ命令を実行すると発生します。
■ コプロセッサ不在トラップ発生の条件
以下の条件が成立したとき , コプロセッサ不在トラップが発生します。
• COPOP/COPLD/COPST/COPSV 命令を実行した場合
• 上記命令のオペランド #u4 に該当するコプロセッサが実装されていない場合
■ コプロセッサ不在トラップ発生時の動作
コプロセッサ不在トラップが発生すると , 以下の動作を行います。
1. プログラムステータス (PS) の内容をシステムスタックに退避
2. 次の命令のアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. PS のコンディションコードレジスタ (CCR) 内の S フラグに "0" を格納
5. PC に (TBR+3E0H) の値を格納
■ コプロセッサ不在トラップ発生時に退避する PC の値
トラップの原因となったコプロセッサ命令の次の命令のアドレスをPCとしてシステム
スタックに退避します。
■ COPST/COPSV 命令実行時の汎用レジスタ
COPST/COPSV 命令実行時に , 実装されていないコプロセッサを指定した場合 , オペラ
ンドとして指定された汎用レジスタ (R0 ∼ R14) には不定の値が転送されます。コプロ
セッサ不在トラップは,オペランドとして指定された汎用レジスタが更新された後に起
動されます。
48
第 4 章 リセット , EIT 処理
4.5.5
コプロセッサエラートラップ
コプロセッサの動作中にエラーが発生した場合 , 次に CPU が該当するコプロセッサ
を操作するコプロセッサ命令を実行した時点で , コプロセッサエラートラップが発生
します。
以下に , コプロセッサエラートラップの発生条件 , 動作 , 退避するプログラムカウン
タ (PC) の値について説明します。
■ コプロセッサエラートラップの概要
コプロセッサの動作中にエラーが発生した場合 , 次に CPU が該当するコプロセッサを
操作するコプロセッサ命令を実行した時点で,コプロセッサエラートラップが発生しま
す。ただし , COPSV 命令の実行ではコプロセッサエラートラップは発生しません。
■ コプロセッサエラートラップ発生の条件
以下の条件が成立したとき , コプロセッサエラートラップが発生します。
• コプロセッサの動作中にエラーが発生
• 該当するコプロセッサを操作する COPOP/COPLD/COPST 命令を実行
■ コプロセッサエラートラップ発生時の動作
コプロセッサエラートラップが発生すると , 以下の動作を行います。
1. プログラムステータス (PS) の内容をシステムスタックに退避
2. 次の命令のアドレスをシステムスタックに退避
3. システムスタックポインタ (SSP) の値から 8 を減算
4. PS のコンディションコードレジスタ (CCR) 内の S フラグに "0" を格納
5. PC に (TBR+3DCH) の値を格納
■ コプロセッサエラートラップ時に退避する PC の値
トラップの原因となったコプロセッサ命令の次の命令のアドレスをPCとしてシステム
スタックに退避します。
■ コプロセッサエラートラップ発生時のコプロセッサ命令の動作結果
コプロセッサエラートラップが発生した場合でも,実行したコプロセッサ命令(COPOP/
COPLD/COPST 命令 ) は有効で , 各命令に応じた結果が残ります。ただし , コプロセッ
サのエラーが影響する動作については , 正しい結果は得られません。
49
第 4 章 リセット , EIT 処理
■ コプロセッサエラー情報の退避と復帰
マルチタスク環境でコプロセッサを使用する場合には,コプロセッサ内部の資源がコン
テキストとなります。そのため , コンテキストスイッチ切換え時点においてそれらの退
避 , もしくは復帰を行う必要があります。コプロセッサエラー情報の退避 , もしくは復
帰を行った場合に問題となるのは , コンテキストスイッチ切換え時点で , 旧タスクにお
いてコプロセッサエラーが潜在的に発生していた場合です。
この場合 , ディスパッチャでのコプロセッサコンテキスト退避命令で例外を検出すると ,
旧タスクにその情報を返せなくなります。これを回避するために , コプロセッサエラー
の通知を行わない COPSV 命令を実行させます。COPSV 命令を実行するとコプロセッサ
はエラーを通知せず , さらに内部的なエラー情報をクリアします。ただし , 退避するス
テータス情報にはエラー情報を残します。旧タスクへの再ディスパッチ時点で退避ス
テータスがコプロセッサ内部に復帰されると , 潜在的なエラー状態は回復され , 次のコプ
ロセッサ命令を実行したとき CPU に通知します。
図 4.5-1 にコプロセッサエラーの通知がうまくいかない例を , 図 4.5-2 に COPSV 命令に
よるエラー情報の退避・復帰を示します。
図 4.5-1 コプロセッサエラーの通知がうまくいかない例
潜在的エラー状態
コプロセッサ
通知
CPU(メイン)
COPOP
割込み
CPU(ディスパッチャ)
COPST
図 4.5-2 COPSV 命令によるエラー情報の退避・復帰
潜在的エラー状態
コプロセッサ
CPU
(メイン)
潜在的エラー状態
× 通知しない
COPOP
COPST
割込み
RETI
CPU(ディスパッチャ)
COPSV
50
COPLD
第 4 章 リセット , EIT 処理
4.6
優先順位
複数の EIT 要求が同時に発生している場合 , 優先順位に従って 1 つの要因を選択し ,
EIT シーケンスを実行します。EIT シーケンスの最後に , 再度 EIT 要求の検出を行う
ことにより , 多重の EIT 要求を処理します。
1 つの EIT 要因を受理すると , 要因の種類に応じて , ほかの要因をマスクする機能が
あります。そのため , EIT 処理ハンドラが実行される順序は必ずしも受理の優先順位
とは一致しません。
■ 同時発生の優先順位
FR ファミリの EIT 要因受理の優先順位はハードウェアで決まっています。
表 4.6-1 に , EIT 要因の受付けの優先順位を示します。
表 4.6-1 EIT 要因の受付けの優先順位
優先順位
要因
ほかの要因に対するマスク
1
リセット
ほかの要因を破棄
2
未定義命令例外
ほかの要因を取消し
INT 命令
I フラグ =0
コプロセッサ不在トラップ
コプロセッサエラートラップ
なし
4
ユーザ割込み
ILM = 受理した要因のレベル
5
NMI
ILM =15
6
ステップトレーストラップ
ILM =4
7
INTE 命令
ILM =4
3
51
第 4 章 リセット , EIT 処理
■ 多重処理の優先順位
EIT 要因を受理した後のほかの要因に対するマスクの処理を考慮すると , 同時に発生し
た EIT 要因の各ハンドラの実行順序を表 4.6-2 に示します。
表 4.6-2 EIT ハンドラの実行順序
優先順位
要因
ほかの要因に対するマスク
1
リセット
ほかの要因を破棄
2
未定義命令例外
ほかの要因を取消し
3
ステップトレーストラップ
ILM =4 *
4
INTE 命令
ILM =4 *
5
NMI
ILM =15
6
INT 命令
I フラグ =0
7
ユーザ割込み
ILM = 受理した要因のレベル
8
コプロセッサ不在トラップ
コプロセッサエラートラップ
なし
*: INTE 命令をステップ実行した場合は , ステップトレースの EIT のみ発生します。
INTE 命令による要因は無視されます。
52
第5章
FR ファミリ CPU の注意事項
FR ファミリ CPU の使用上の注意事項について説
明します。
5.1 パイプライン動作
5.2 パイプライン動作と割込み処理
5.3 レジスタハザード
5.4 遅延分岐処理
53
第 5 章 FR ファミリ CPU の注意事項
5.1
パイプライン動作
FR ファミリ CPU はすべての命令処理を 5 段のパイプライン動作で行っています。
このため , ほとんどの命令の実行を 1 サイクルで処理できます。
■ パイプライン動作の概要
パイプライン動作とは , CPU の命令の解釈と実行を行う各種ステップを数種類のサイ
クルに分割し , 各命令の異なったサイクルを同時に実行することにより , ほかの処理方
法では複数サイクルかかる命令実行を見かけ上 1 サイクルで行うものです。FR ファミ
リ CPU では図 5.1-1 に示すように , 5 種類のサイクル (IF, ID, EX, MA, WB) を同時に実
行させる 5 段パイプライン処理を採用しています。
• IF: 命令取込み
• ID: 命令解釈
• EX: 命令実行
• MA: メモリアクセス
• WB: レジスタ書込み
図 5.1-1 FR ファミリのパイプライン動作例
1サイクル
LD @R10, R1
LD @R11, R2
ADD R1, R3
BNE:D TestOK
①
②
③
④
⑤
IF
ID
EX
MA
WB
IF
ID
EX
MA
WB
IF
ID
EX
MA
WB
IF
ID
EX
MA
WB
IF
ID
EX
MA
ST R2, @R12
WB
● 上記例での 1 サイクル当たりに行っている処理
① LD @R10, R1 の命令取込み
② LD @R10, R1 の命令解釈 LD, @R11, R2 の命令取込み
③ LD @R10, R1 の命令実行 LD, @R11, R2 の命令解釈 , ADD R1, R3 の命令取込み
④ LD @R10, R1 のメモリアクセス LD, @R11, R2 の命令実行 , ADD R1, R3 の命令解釈 ,
BNE:D TestOK の命令取込み
⑤ LD @R10, R1 のレジスタ書込み LD, @R11, R2 のメモリアクセス , ADD R1, R3 の命
令実行 , BNE:D TestOK の命令解釈 ST R2,@R12 の命令取込み
54
第 5 章 FR ファミリ CPU の注意事項
5.2
パイプライン動作と割込み処理
FR ファミリ CPU はすべての命令処理において , パイプライン動作を行っています。
このため , 特に命令によりハードウェア起因のイベントを起動するときに , 命令の前
後関係が食い違うように見えることがあります。
■ パイプライン動作と割込み処理に関する注意事項
FR ファミリ CPU はパイプライン処理を行っているため , 割込み発生を認知したときに
は既に数命令のパイプライン処理を実行しています。このため , パイプラインで実行中
の命令の中で該当する割込みを取り消すような処理を行った場合,該当する割込み処理
プログラムへの分岐は正常に行われるようになっていますが,割込み処理プログラムに
制御が移行したときには , 割込み要求がなくなっている場合があります。
なお , 例外およびトラップにはこのような条件はありません。
図 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
-- :キャンセルしたステージ
■ 実際に発生する条件
以下のような処理を行うと,割込み要求が受け付けられた後で要求がなくなることがあ
ります。
• 割込み許可状態で割込み要因のクリアを行うプログラム
• 割込み許可状態で周辺機能内にある割込み許可ビットの書込み
■ 前後不一致の回避方法
割込み要求が受け付けられたにもかかわらず,要求がなくなってしまうことを避けたい
場合には , プログラムステータス (PS) のコンディションコードレジスタ (CCR) 内の I
フラグを用いて割込みを禁止してから割込み要因を制御するようなプログラムにして
ください。
55
第 5 章 FR ファミリ CPU の注意事項
5.3
レジスタハザード
FR ファミリ CPU はプログラム列の順序どおりの処理を行うためにレジスタハザー
ドの発生を検出し , 必要があればパイプライン処理を停止する機能を内蔵していま
す。このため , レジスタの使用する順序を気にせずプログラムを記述することができ
ます。
■ レジスタハザードの概要
パイプライン動作を行っている CPU では , 連続する命令列の前の命令で書き込んだレ
ジスタの値を次の命令で参照しようとすると,参照時にまだ書込みが完了していない状
況が発生する場合があります。これがレジスタハザードです。
図 5.3-1 の例では , アドレスとして使用する R1 の読出しは直前の命令の R1 への書込み
より前になり , このままであれば変更前の値になります。
図 5.3-1 レジスタハザードの例
IF
ADD R0, R1
SUB R1, R2
ID
EX
MA
WB
IF
ID
EX
MA
: R1への書込みサイクル
WB
: R1からの読出しサイクル
■ レジスタバイパス
レジスタハザードが発生した場合でも,命令が参照しようとしているレジスタを前の命
令の処理途中から取り出すことができれば,命令の動作を遅らせることなく処理を実現
できる場合があります。このようなデータ転送処理がレジスタバイパスで , FR ファミ
リ CPU にはレジスタバイパス機構が搭載されています。
図 5.3-2 の例では , SUB 命令の ID ステージで R1 レジスタから読み出す代わりに , ADD
命令の EX ステージで生成される計算結果 ( レジスタへの格納前 ) を使用することで ,
遅延なく命令を実行できます。
図 5.3-2 バイパスの例
ADD R0, R1
SUB R1, R2
56
IF
ID
EX
MA
WB
IF
ID
EX
MA
: R1へのデータを計算するサイクル
WB
: R1からの読出しサイクル
第 5 章 FR ファミリ CPU の注意事項
■ インターロック
データが CPU 内部に取り込まれるタイミングが遅い命令では , レジスタバイパスでは
対応できないレジスタハザードが生じる場合があります。
図 5.3-3 の例では , SUB 命令の ID ステージで必要とするデータを LD 命令の MA ステー
ジで CPU 内部に取り込むため , バイパス機構では対処できません。
図 5.3-3 レジスタバイパスで対応できないレジスタハザードの例
LD
@R0, R1
IF
SUB R1, R2
ID
EX
MA
WB
IF
ID
EX
MA
: R0へのデータの読出しサイクル
WB
: R1からの読出しサイクル
このような場合 , FR ファミリ CPU では後続の命令の動作を待たせることで , 命令を正
しく動作させます。この機構がインターロックです。
図 5.3-4 の例では , SUB 命令の ID ステージを遅らせることで , LD 命令の MA ステージ
からデータを取り込みます。
図 5.3-4 インターロックの例
LD @R0, R1
SUB R1, R2
IF
ID
EX
MA
WB
IF
ID
ID
EX
: R0へのデータの読出しサイクル
MA
WB
: R1からの読出しサイクル
■ S フラグ書換え後の R15 および汎用レジスタの参照によるインターロックの発生
汎用レジスタの R15 の実体はシステムスタックポインタ (SSP) かユーザスタックポイ
ンタ (USP) になっています。このため , プログラムステータス (PS) のコンディション
コードレジスタ (CCR) 内の S フラグを更新する命令の直後に R15 を参照する命令を配
置すると , CPU はプログラムに記述された順序で SSP または USP を参照できるように
インターロックを自動的に生成します。ハードウェアの都合上 , S フラグを更新する命
令の直後に命令フォーマットが TYPE-A の命令を配置した場合も同様にインターロッ
クを生成します。
なお , 命令フォーマットの TYPE については ,「6.1 命令フォーマット」を参照してく
ださい。
57
第 5 章 FR ファミリ CPU の注意事項
5.4
遅延分岐処理
FR ファミリ CPU はパイプライン動作のため , 分岐命令を実行したときは既にその
命令の取込みを完了しています。遅延分岐処理は , この取り込んだ命令を実行させる
機能で , 使用することにより処理速度を向上できます。
■ 遅延なし分岐命令の概要
パイプライン動作を行うと , CPU の命令解釈後に分岐命令であることが判明した段階
で既に次の命令を取り込んでしまっています。プログラムの記述どおりに実行させる
のであれば,この分岐命令の後に取り込んだ命令を実行途中でキャンセルさせる必要が
あります。このような処理を行う分岐命令が遅延なし分岐命令です。
遅延なし分岐命令 ( 分岐条件が成立した場合と成立しない場合 ) の処理例を「5.4.1 遅
延なし分岐命令の処理例」で説明します。
■ 遅延分岐命令の概要
分岐命令の直後に置かれた命令は,分岐命令実行時には既に取り込まれてしまっていま
す。このような分岐命令の直後の位置を遅延スロットとよびます。
分岐条件の成立・不成立にかかわらず , 遅延スロットに置かれた命令を実行する分岐命
令が遅延分岐命令です。
遅延分岐命令 ( 分岐条件が成立した場合と成立しない場合 ) の処理例を「5.4.2 遅延分
岐命令の処理例」で説明します。
■ 遅延スロットで使用できない命令
FR ファミリ CPU で遅延分岐処理に使用できない命令を以下に示します。
• LDI:32 #i32, Ri LDI:20 #i20, Ri
• COPOP #u4, #CC, CRj, CRi
COPLD #u4, #CC, Rj, CRi
COPST #u4, #CC, CRj, Ri
COPSV #u4, #CC, CRj, Ri
• JMP @Ri
CALL label12
CALL @Ri
RET
条件付き分岐命令およびこれらの遅延分岐付き命令
• INT #u8
RETI
INTE
58
第 5 章 FR ファミリ CPU の注意事項
• AND
ANDH
ANDB
OR
ORH
ORB
EOR
EORH
EORB
Rj,@Ri
Rj,@Ri
Rj,@Ri
Rj,@Ri
Rj,@Ri
Rj,@Ri
Rj,@Ri
Rj,@Ri
Rj,@Ri
• BANDH
BANDL
BORH
BORL
BEORH
BEORL
BTSTH
BTSTL
#u4,@Ri
#u4,@Ri
#u4,@Ri
#u4,@Ri
#u4,@Ri
#u4,@Ri
#u4,@Ri
#u4,@Ri
• MUL
MULU
MULH
MULUH
Rj, Ri
Rj, Ri
Rj, Ri
Rj, Ri
• LD
@R15+, PS
• LDM0
LDM1
STM0
STM1
ENTER
XCHB
(reglist)
(reglist)
(reglist)
(reglist)
#u10
@Rj, Ri
• DMOV
DMOV
DMOV
DMOV
DMOVH
DMOVH
DMOVB
DMOVB
@dir10,@R13+
@R13+,@dir10
@dir10,@-R15
@R15+,@dir10
@dir9,@R13+
@R13+,@dir9
@dir8,@R13+
@R13+,@dir8
■ 遅延分岐命令実行中の割込みに関する制限
遅延分岐命令と遅延分岐処理で実行する命令の間では , EIT 処理の受付けは行いませ
ん。
59
第 5 章 FR ファミリ CPU の注意事項
遅延なし分岐命令の処理例
5.4.1
遅延なし分岐命令はプログラムの記述の順序に命令を実行しますが , 分岐する場合に
は実行速度が 1 サイクル遅くなります。
■ 遅延なし分岐命令の処理例
図 5.4-1 に , 分岐条件が成立した場合の遅延なし分岐命令の処理例を示します。
この例では , 分岐先の命令をフェッチする前にパイプラインが動作し始めていた ST
R2,@R12 命令 ( 分岐命令の直後に置かれた命令 ) の実行を途中でキャンセルします。
このため , プログラム処理はプログラマが記述したとおりの順序になります。その代わ
り分岐命令は見かけ上 2 サイクルかかることになります。
図 5.4-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.4-2 に , 分岐条件が成立しない場合の遅延なし分岐命令の処理例を示します。
この例では , 分岐先の命令をフェッチする前にパイプラインが動作し始めていた ST
R2,@R12 命令 ( 分岐命令の直後に置かれた命令 ) をキャンセルせずに実行します。
分岐せずに順序に命令を実行していくので,プログラム処理はプログラマが記述したと
おりの順序になります。分岐命令の実行速度は見かけ上 1 サイクルです。
図 5.4-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(その次の命令)
60
第 5 章 FR ファミリ CPU の注意事項
遅延分岐命令の処理例
5.4.2
遅延分岐命令は分岐条件の成立 , 不成立にかかわらず , 見かけ上の実行速度は 1 サイ
クルとなり , 遅延なし分岐命令で分岐する場合より処理が速くなります。
しかし , 分岐する場合 , 見かけ上 , 命令実行の順序が反転したように見えます。
■ 遅延分岐命令の処理例
図 5.4-3 に , 分岐条件が成立した場合の遅延分岐命令の処理例を示します。
この例では , 遅延スロットの ST R2,@R12 命令を実行した後に分岐先の ST R2,@R13 命
令を実行します。このため , 分岐命令の見かけ上の実行速度は 1 サイクルとなります。
しかし , 分岐先の ST R2,@R13 命令の実行前に遅延スロットの ST R2,@R12 命令が実行
されるため , 見かけ上は処理の順序が反転したように見えます。
図 5.4-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.4-4 に , 分岐条件が成立しない場合の遅延分岐命令の処理例を示します。
この例では , 遅延スロットの ST R2,@R12 命令をキャンセルせずに実行します。このた
め , プログラム処理はプログラマが記述したとおりの順序になります。分岐命令の実行
速度は見かけ上 1 サイクルです。
図 5.4-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
61
第 5 章 FR ファミリ CPU の注意事項
■ 遅延分岐命令のプログラム例
遅延分岐命令のプログラム例を示します。
・
・
LD @R10, R1
LD @R11, R2
ADD R1, R3
BNE:D TestOK
ST R2, @R12
ADD #4, R12 ( 条件不成立時 )
・
・
TestOK: ( 条件成立時 )
ST R2, @R13
62
第6章
命令概要
FR ファミリ CPU の命令の概要について説明しま
す。
FR ファミリ CPU の命令は 16 ビットを超える即値
データ転送命令を除いて , すべて 16 ビット固定長
のフォーマットになっています。この形式により ,
パイプライン動作を乱さずに , よりコンパクトなオ
ブジェクトにすることができます。
6.1 命令フォーマット
6.2 命令記述形式
63
第 6 章 命令概要
6.1
命令フォーマット
FR ファミリ CPU の命令フォーマットには , TYPE-A ∼ TYPE-F の 6 種類があります。
■ 命令フォーマット
FR ファミリ CPU のすべての命令は , 図 6.1-1 の 6 種類のフォーマットになります。
図 6.1-1 命令フォーマット
MSB
16ビット
4ビット
8ビット
OP
TYPE-A
TYPE-B
Ri
Rj
8ビット
4ビット
OP
i8/o8
Ri
8ビット
4ビット
4ビット
OP
u4/m4/i4
Ri
8ビット
8ビット
OP
TYPE-D
TYPE-E
64
4ビット
4ビット
TYPE-C
TYPE-F
LSB
u8/rel8/dir/rlist
12ビット
4ビット
OP
Ri/Rs
5ビット
11ビット
OP
rel11
第 6 章 命令概要
■ Ri および Rj と数値の関係
4 ビットのフィールドの数値と Ri および Rj の関係を , 表 6.1-1 に示します。
表 6.1-1 汎用レジスタ番号とフィールドのビットパターンの関係
Ri/Rj
レジスタ
0000
R0
0001
R1
0010
R2
0011
R3
0100
R4
0101
R5
0110
R6
0111
R7
1000
R8
1001
R9
1010
R10
1011
R11
1100
R12
1101
R13
1110
R14
1111
R15
65
第 6 章 命令概要
■ Rs と数値の関係
4 ビットのフィールドの数値と Rs の関係を , 表 6.1-2 に示します。
表 6.1-2 専用レジスタ番号とフィールドのビットパターンの関係
Rs
レジスタ
000
TBR
0001
RP
0010
SSP
0011
USP
0100
MDH
0101
MDL
0110
reserved
0111
reserved
1000
reserved
1001
reserved
1010
reserved
1011
reserved
1100
reserved
1101
reserved
1110
reserved
1111
reserved
<注意事項>
reserved はシステムの予約パターンで , 指定した場合の動作は保証できません。
66
第 6 章 命令概要
6.2
命令記述形式
FR ファミリ CPU の命令には以下の 3 種類の記述形式があります。
• オペランド 1 とオペランド 2 の間でニーモニックの演算を行い , オペランド 2 へ
格納する場合
• オペランド 1 を用いてニーモニックの操作を行う場合
• ニーモニックの操作を行う場合
■ 命令記述形式
FR ファミリ CPU の命令記述は以下の形式になっています。
● オペランド1とオペランド2の間でニーモニックの演算を行い,オペランド2へ格納する場合
< ニーモニック > < オペランド 1 > < オペランド 2 >
【例】 ADD
R1,
R2
; R1+R2 → R2
● オペランド 1 を用いてニーモニックの操作を行う場合
< ニーモニック > < オペランド 1 >
【例】 JMP
@R1
; R1 → PC
● ニーモニックの操作を行う場合
< ニーモニック >
【例】 NOP
; No operation
67
第 6 章 命令概要
68
第7章
実行命令細則
アセンブラで使用する各実行命令について , リファ
レンス形式で説明します。
FR ファミリの実行命令は , 以下の分類順に掲載し
ています。
• 加減算命令
• 比較演算命令
• 論理演算命令
• ビット操作演算命令
• 乗除算命令
• シフト演算命令
• 即値データ転送命令
• メモリロード命令
• メモリストア命令
• レジスタ間転送命令 / 専用レジスタ転送命令
• 遅延なし分岐命令
• 遅延分岐命令
• ダイレクトアドレス指定命令
• リソース命令
• コプロセッサ命令
• その他の命令
7.1 ADD(Add Word Data of Source Register to Destination
Register)
7.2 ADD(Add 4bit Immediate Data to Destination Register)
7.3 ADD2(Add 4bit Immediate Data to Destination Register)
7.4 ADDC(Add Word Data of Source Register and Carry Bit
to Destination Register)
7.5 ADDN(Add Word Data of Source Register to Destination
Register)
69
第 7 章 実行命令細則
7.6 ADDN(Add Immediate Data to Destination Register)
7.7 ADDN2(Add Immediate Data to Destination Register)
7.8 SUB(Subtract Word Data in Source Register from Destination Register)
7.9 SUBC(Subtract Word Data in Source Register and Carry bit from Destination
Register)
7.10 SUBN(Subtract Word Data in Source Register from Destination Register)
7.11 CMP(Compare Word Data in Source Register and Destination Register)
7.12 CMP(Compare Immediate Data of Source Register and Destination Register)
7.13 CMP2(Compare Immediate Data and Destination Register)
7.14 AND(And Word Data of Source Register to Destination Register)
7.15 AND(And Word Data of Source Register to Data in Memory)
7.16 ANDH(And Halfword Data of Source Register to Data in Memory)
7.17 ANDB(And Byte Data of Source Register to Data in Memory)
7.18 OR(Or Word Data of Source Register to Destination Register)
7.19 OR(Or Word Data of Source Register to Data in Memory)
7.20 ORH(Or Halfword Data of Source Register to Data in Memory)
7.21 ORB(Or Byte Data of Source Register to Data in Memory)
7.22 EOR(Exclusive Or Word Data of Source Register to Destination Register)
7.23 EOR(Exclusive Or Word Data of Source Register to Data in Memory)
7.24 EORH(Exclusive Or Halfword Data of Source Register to Data in Memory)
7.25 EORB(Exclusive Or Byte Data of Source Register to Data in Memory)
7.26 BANDL(And 4bit Immediate Data to Lower 4bit of Byte Data in Memory)
7.27 BANDH(And 4bit Immediate Data to Higher 4bit of Byte Data in Memory)
7.28 BORL(Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory)
7.29 BORH(Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory)
7.30 BEORL(Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory)
7.31 BEORH(Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory)
7.32 BTSTL(Test Lower 4bit of Byte Data in Memory)
7.33 BTSTH(Test Higher 4bit of Byte Data in Memory)
7.34 MUL(Multiply Word Data)
7.35 MULU(Multiply Unsigned Word Data)
7.36 MULH(Multiply Halfword Data)
7.37 MULUH(Multiply Unsigned Halfword Data)
7.38 DIV0S(Initial Setting Up for Signed Division)
7.39 DIV0U(Initial Setting Up for Unsigned Division)
7.40 DIV1(Main Process of Division)
7.41 DIV2(Correction When Remain is 0)
7.42 DIV3(Correction When Remain is 0)
7.43 DIV4S(Correction Answer for Signed Division)
70
第 7 章 実行命令細則
7.44 LSL(Logical Shift to the Left Direction)
7.45 LSL(Logical Shift to the Left Direction)
7.46 LSL2(Logical Shift to the Left Direction)
7.47 LSR(Logical Shift to the Right Direction)
7.48 LSR(Logical Shift to the Right Direction)
7.49 LSR2(Logical Shift to the Right Direction)
7.50 ASR(Arithmetic shift to the Right Direction)
7.51 ASR(Arithmetic shift to the Right Direction)
7.52 ASR2(Arithmetic shift to the Right Direction)
7.53 LDI:32(Load Immediate 32 bit Data to Destination Register)
7.54 LDI:20(Load Immediate 20bit Data to Destination Register)
7.55 LDI:8(Load Immediate 8bit Data to Destination Register)
7.56 LD(Load Word Data in Memory to Register)
7.57 LD(Load Word Data in Memory to Register)
7.58 LD(Load Word Data in Memory to Register)
7.59 LD(Load Word Data in Memory to Register)
7.60 LD(Load Word Data in Memory to Register)
7.61 LD(Load Word Data in Memory to Register)
7.62 LD(Load Word Data in Memory to Program Status Register)
7.63 LDUH(Load Halfword Data in Memory to Register)
7.64 LDUH(Load Halfword Data in Memory to Register)
7.65 LDUH(Load Halfword Data in Memory to Register)
7.66 LDUB(Load Byte Data in Memory to Register)
7.67 LDUB(Load Byte Data in Memory to Register)
7.68 LDUB(Load Byte Data in Memory to Register)
7.69 ST(Store Word Data in Register to Memory)
7.70 ST(Store Word Data in Register to Memory)
7.71 ST(Store Word Data in Register to Memory)
7.72 ST(Store Word Data in Register to Memory)
7.73 ST(Store Word Data in Register to Memory)
7.74 ST(Store Word Data in Register to Memory)
7.75 ST(Store Word Data in Program Status Register to Memory)
7.76 STH(Store Halfword Data in Register to Memory)
7.77 STH(Store Halfword Data in Register to Memory)
7.78 STH(Store Halfword Data in Register to Memory)
7.79 STB(Store Byte Data in Register to Memory)
7.80 STB(Store Byte Data in Register to Memory)
7.81 STB(Store Byte Data in Register to Memory)
7.82 MOV(Move Word Data in Source Register to Destination Register)
71
第 7 章 実行命令細則
7.83 MOV(Move Word Data in Source Register to Destination Register)
7.84 MOV(Move Word Data in Program Status Register to Destination Register)
7.85 MOV(Move Word Data in Source Register to Destination Register)
7.86 MOV(Move Word Data in Source Register to Program Status Register)
7.87 JMP(Jump)
7.88 CALL(Call Subroutine)
7.89 CALL(Call Subroutine)
7.90 RET(Return from Subroutine)
7.91 INT(Software Interrupt)
7.92 INTE(Software Interrupt for Emulator)
7.93 RETI(Return from Interrupt)
7.94 Bcc(Branch relative if Condition satisfied)
7.95 JMP:D(Jump)
7.96 CALL:D(Call Subroutine)
7.97 CALL:D(Call Subroutine)
7.98 RET:D(Return from Subroutine)
7.99 Bcc:D(Branch relative if Condition satisfied)
7.100 DMOV(Move Word Data from Direct Address to Register)
7.101 DMOV(Move Word Data from Register to Direct Address)
7.102 DMOV(Move Word Data from Direct Address to Post Increment Register
Indirect Address)
7.103 DMOV(Move Word Data from Post Increment Register Indirect Address to
Direct Address)
7.104 DMOV(Move Word Data from Direct Address to Pre Decrement Register
Indirect Address)
7.105 DMOV(Move Word Data from Post Increment Register Indirect Address to
Direct Address)
7.106 DMOVH(Move Halfword Data from Direct Address to Register)
7.107 DMOVH(Move Halfword Data from Register to Direct Address)
7.108 DMOVH(Move Halfword Data from Direct Address to Post Increment Register
Indirect Address)
7.109 DMOVH(Move Halfword Data from Post Increment Register Indirect Address to
Direct Address)
7.110 DMOVB(Move Byte Data from Direct Address to Register)
7.111 DMOVB(Move Byte Data from Register to Direct Address)
7.112 DMOVB(Move Byte Data from Direct Address to Post Increment Register
Indirect Address)
7.113 DMOVB(Move Byte Data from Post Increment Register Indirect Address to
Direct Address)
7.114 LDRES(Load Word Data in Memory to Resource)
7.115 STRES(Store Word Data in Resource to Memory)
72
第 7 章 実行命令細則
7.116 COPOP(Co-Processor Opetation)
7.117 COPLD(Load 32bit Data from Register to Co-processor Register)
7.118 COPST(Store 32bit Data from Co-processor Register to Register)
7.119 COPSV(Save 32bit Data from Co-processor Register to Register)
7.120 NOP(No Operation)
7.121 ANDCCR(And Condition Code Register and Immediate Data)
7.122 ORCCR(Or Condition Code Register and Immediate Data)
7.123 STILM(Set Immediate Data to Interrupt Level Mask Register)
7.124 ADDSP(Add Stack Pointer and Immediate Data)
7.125 EXTSB(Sign Extend from Byte Data to Word Data)
7.126 EXTUB(Unsign Extend from Byte Data to Word Data)
7.127 EXTSH(Sign Extend from Byte Data to Word Data)
7.128 EXTUH(Unsign Extend from Byte Data to Word Data)
7.129 LDM0(Load Multiple Registers)
7.130 LDM1(Load Multiple Registers)
7.131 STM0(Store Multiple Registers)
7.132 STM1(Store Multiple Registers)
7.133 ENTER(Enter Function)
7.134 LEAVE(Leave Function)
7.135 XCHB(Exchange Byte Data)
73
第 7 章 実行命令細則
7.1
ADD(Add Word Data of Source Register to
Destination Register)
Rj のワードデータと Ri のワードデータを加算し , 結果を Ri に格納します。
■ ADD(Add Word Data of Source Register to Destination Register)
アセンブラ形式
ADD Rj, Ri
オペレーション
Ri + Rj → Ri
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
0
1
1
0
Rj
Ri
実行例
ADD R2, R3
命令のビットパターン:1010 0110 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
実行前
74
N Z V C
CCR
1 0 0 0
実行後
第 7 章 実行命令細則
7.2
ADD(Add 4bit Immediate Data to Destination
Register)
4 ビット即値データの上位 28 ビットをゼロ拡張した結果の数値と Ri のワードデー
タを加算し , 結果を Ri に格納します。
■ ADD(Add 4bit Immediate Data to Destination Register)
アセンブラ形式
ADD #i4, Ri
オペレーション
Ri + extu(i4) → Ri
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
0
1
0
0
i4
Ri
実行例
ADD #2, R3
命令のビットパターン:1010 0100 0010 0011
R3
9 9 9 9
9 9 9 7
R3
N Z V C
CCR
0 0 0 0
実行前
9 9 9 9
9 9 9 9
N Z V C
CCR
1 0 0 0
実行後
75
第 7 章 実行命令細則
7.3
ADD2(Add 4bit Immediate Data to Destination
Register)
4 ビット即値データの上位 28 ビットをマイナス拡張した結果の数値と Ri のワード
データを加算し , 結果を Ri に格納します。
この命令の C フラグの変化は SUB 命令とは異なり , ADD 命令と同じになります。
■ ADD2(Add 4bit Immediate Data to Destination Register)
アセンブラ形式
ADD2 #i4, Ri
オペレーション
Ri + extn(i4) → Ri
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
0
1
0
1
i4
Ri
実行例
ADD2 #-2, R3
命令のビットパターン:1010 0101 1110 0011
R3
9 9 9 9
9 9 9 9
R3
N Z V C
CCR
0 0 0 0
実行前
76
9 9 9 9
9 9 9 7
N Z V C
CCR
1 0 0 1
実行後
第 7 章 実行命令細則
7.4
ADDC(Add Word Data of Source Register and Carry
Bit to Destination Register)
Rj のワードデータと Ri のワードデータとキャリビットを加算し , 結果を Ri に格納
します。
■ ADDC(Add Word Data of Source Register and Carry Bit to Destination
Register)
アセンブラ形式
ADDC Rj, Ri
オペレーション
Ri + Rj + C → Ri
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , キャリが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
0
1
1
1
Rj
Ri
実行例
ADDC R2, R3
命令のビットパターン: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
1 0 0 0
実行後
77
第 7 章 実行命令細則
7.5
ADDN(Add Word Data of Source Register to
Destination Register)
Rj のワードデータと Ri のワードデータを加算し , 結果を Ri に格納します。
フラグは変化しません。
■ ADDN(Add Word Data of Source Register to Destination Register)
アセンブラ形式
ADDN Rj, Ri
オペレーション
Ri + Rj → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
0
0
1
0
Rj
Ri
実行例
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
実行前
78
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.6
ADDN(Add Immediate Data to Destination Register)
4 ビット即値データの上位 28 ビットをゼロ拡張した結果の数値と Ri のワードデー
タを加算し , 結果を Ri に格納します。
フラグは変化しません。
■ ADDN(Add Immediate Data to Destination Register)
アセンブラ形式
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
実行例
ADDN #2, R3
命令のビットパターン:1010 0000 0010 0011
R3
9 9 9 9
9 9 9 7
R3
N Z V C
CCR
0 0 0 0
実行前
9 9 9 9
9 9 9 9
N Z V C
CCR
0 0 0 0
実行後
79
第 7 章 実行命令細則
7.7
ADDN2(Add Immediate Data to Destination Register)
4 ビット即値データの上位 28 ビットをマイナス拡張した結果の数値と Ri のワード
データを加算し , 結果を Ri に格納します。
フラグは変化しません。
■ ADDN2(Add Immediate Data to Destination Register)
アセンブラ形式
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
命令のビットパターン:1010 0001 1110 0011
R3
9 9 9 9
9 9 9 9
R3
N Z V C
CCR
0 0 0 0
実行前
80
9 9 9 9
9 9 9 7
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.8
SUB(Subtract Word Data in Source Register from
Destination Register)
Ri のワードデータから Rj のワードデータを減算し , 結果を Ri に格納します。
■ SUB(Subtract Word Data in Source Register from Destination Register)
アセンブラ形式
SUB Rj, Ri
オペレーション
Ri - Rj → Ri
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
1
0
0
Rj
Ri
実行例
SUB R2, R3
命令のビットパターン:1010 1100 0010 0011
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
1 0 0 0
実行後
81
第 7 章 実行命令細則
7.9
SUBC(Subtract Word Data in Source Register and
Carry bit from Destination Register)
Ri のワードデータから Rj のワードデータとキャリを減算し , 結果を Ri に格納しま
す。
■ SUBC(Subtract Word Data in Source Register and Carry bit from Destination
Register)
アセンブラ形式
SUBC Rj, Ri
オペレーション
Ri - Rj - C → Ri
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
1
0
1
Rj
Ri
実行例
SUBC R2, R3
命令のビットパターン:1010 1101 0010 0011
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
実行前
82
N Z V C
CCR
1 0 0 0
実行後
第 7 章 実行命令細則
7.10
SUBN(Subtract Word Data in Source Register from
Destination Register)
Ri のワードデータから Rj のワードデータを減算し , 結果を Ri に格納します。
フラグは変化しません。
■ SUBN(Subtract Word Data in Source Register from Destination Register)
アセンブラ形式
SUBN Rj, Ri
オペレーション
Ri - Rj → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
1
1
0
Rj
Ri
実行例
SUBN R2, R3
命令のビットパターン:1010 1110 0010 0011
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
0 0 0 0
実行後
83
第 7 章 実行命令細則
7.11
CMP(Compare Word Data in Source Register and
Destination Register)
Ri のワードデータから Rj のワードデータを減算し , 結果をコンディションコードレ
ジスタ (CCR) にセットします。
■ CMP(Compare Word Data in Source Register and Destination Register)
アセンブラ形式
CMP Rj, Ri
オペレーション
Ri - Rj
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
0
1
0
Rj
Ri
実行例
CMP R2, R3
命令のビットパターン:1010 1010 0010 0011
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
実行前
84
N Z V C
CCR
0 1 0 0
実行後
第 7 章 実行命令細則
7.12
CMP(Compare Immediate Data of Source Register
and Destination Register)
Ri のワードデータから 4 ビットの即値データの上位 28 ビットをゼロ拡張した結果
の数値を減算し , 結果をコンディションコードレジスタ (CCR) にセットします。
■ CMP(Compare Immediate Data of Source Register and Destination Register)
アセンブラ形式
CMP #i4, Ri
オペレーション
Ri - extu(i4)
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
0
0
0
i4
Ri
実行例
CMP #3, R3
命令のビットパターン:1010 1000 0011 0011
R3
0 0 0 0
0 0 0 3
R3
N Z V C
CCR
0 0 0 0
実行前
0 0 0 0
0 0 0 3
N Z V C
CCR
0 1 0 0
実行後
85
第 7 章 実行命令細則
7.13
CMP2(Compare Immediate Data and Destination
Register)
Ri のワードデータから -16 ∼ -1 の 4 ビット即値データの上位 28 ビットをマイナス
拡張した結果の数値を減算し , 結果をコンディションコードレジスタ (CCR) にセッ
トします。
■ CMP2(Compare Immediate Data and Destination Register)
アセンブラ形式
CMP2 #i4, Ri
オペレーション
Ri - extn(i4)
フラグ変化
N
Z
V
C
C
C
C
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 演算の結果 , オーバフローが発生したときセット , それ以外はクリアされます。
C: 演算の結果 , ボローが発生したときセット , それ以外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
0
0
1
i4
Ri
実行例
CMP2 #-3, R3
命令のビットパターン:1010 1001 1101 0011
R3
F F F F
F F F D
R3
N Z V C
CCR
0 0 0 0
実行前
86
F F F F
F F F D
N Z V C
CCR
0 1 0 0
実行後
第 7 章 実行命令細則
7.14
AND(And Word Data of Source Register to
Destination Register)
Rj のワードデータと Ri のワードデータの論理積演算を行い , 結果を Ri に格納しま
す。
■ AND(And Word Data of Source Register to Destination Register)
アセンブラ形式
AND Rj, Ri
オペレーション
Ri and Rj → Ri
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
0
0
0
1
0
Rj
Ri
実行例
AND R2, R3
命令のビットパターン:1000 0010 0010 0011
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
0 0 0 0
実行後
87
第 7 章 実行命令細則
7.15
AND(And Word Data of Source Register to Data in
Memory)
メモリの Ri 番地のワードデータと Rj のワードデータの論理積演算を行い , 結果をメ
モリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ AND(And Word Data of Source Register to Data in Memory)
アセンブラ形式
AND Rj,@Ri
オペレーション
(Ri) and Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
0
1
0
0
Rj
Ri
実行例
AND R2,@R3
命令のビットパターン:1000 0100 0010 0011
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
1234567C
メモリ
12345678
0 0 0 0
実行前
88
0 0 0 0
1234567C
N Z V C
CCR
1 0 1 0
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.16
ANDH(And Halfword Data of Source Register to Data
in Memory)
メモリの Ri 番地のハーフワードデータと Rj のハーフワードデータの論理積演算を
行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ ANDH(And Halfword Data of Source Register to Data in Memory)
アセンブラ形式
ANDH Rj,@Ri
オペレーション
(Ri) and Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit15) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
0
1
0
1
Rj
Ri
89
第 7 章 実行命令細則
実行例
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
実行前
90
1 0 0 0
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.17
ANDB(And Byte Data of Source Register to Data in
Memory)
メモリの Ri 番地のバイトデータと Rj のバイトデータの論理積演算を行い , 結果をメ
モリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ ANDB(And Byte Data of Source Register to Data in Memory)
アセンブラ形式
ANDB Rj,@Ri
オペレーション
(Ri) and Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
0
1
1
0
Rj
Ri
91
第 7 章 実行命令細則
実行例
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
実行前
92
1 0
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.18
OR(Or Word Data of Source Register to Destination
Register)
Ri のワードデータと Rj のワードデータの論理和演算を行い , 結果を Ri に格納しま
す。
■ OR(Or Word Data of Source Register to Destination Register)
アセンブラ形式
OR Rj, Ri
オペレーション
Ri or Rj → Ri
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
0
0
1
0
Rj
Ri
実行例
OR R2, R3
命令のビットパターン:1001 0010 0010 0011
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
0 0 0 0
実行後
93
第 7 章 実行命令細則
7.19
OR(Or Word Data of Source Register to Data in
Memory)
メモリの Ri 番地のワードデータと Rj のワードデータの論理和演算を行い , 結果をメ
モリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ OR(Or Word Data of Source Register to Data in Memory)
アセンブラ形式
OR Rj,@Ri
オペレーション
(Ri) or Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
94
LSB
0
0
1
0
1
0
0
Rj
Ri
第 7 章 実行命令細則
実行例
OR R2,@R3
命令のビットパターン:1001 0100 0010 0011
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
1234567C
メモリ
12345678
1 0 1 0
1234567C
N Z V C
CCR
1 1 1 1
0 0 0 0
実行前
N Z V C
CCR
0 0 0 0
実行後
95
第 7 章 実行命令細則
7.20
ORH(Or Halfword Data of Source Register to Data in
Memory)
メモリの Ri 番地のハーフワードデータと Rj のハーフワードデータの論理和演算を
行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ ORH(Or Halfword Data of Source Register to Data in Memory)
アセンブラ形式
ORH Rj,@Ri
オペレーション
(Ri) or Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit15) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
96
LSB
0
0
1
0
1
0
1
Rj
Ri
第 7 章 実行命令細則
実行例
ORH R2,@R3
命令のビットパターン:1001 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
1 1 1 0
0 0 0 0
実行前
N Z V C
CCR
0 0 0 0
実行後
97
第 7 章 実行命令細則
7.21
ORB(Or Byte Data of Source Register to Data in
Memory)
メモリの Ri 番地のバイトデータと Rj のバイトデータの論理和演算を行い , 結果をメ
モリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ ORB(Or Byte Data of Source Register to Data in Memory)
アセンブラ形式
ORB Rj,@Ri
オペレーション
(Ri) or Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
98
LSB
0
0
1
0
1
1
0
Rj
Ri
第 7 章 実行命令細則
実行例
ORB R2,@R3
命令のビットパターン:1001 0110 0010 0011
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
1 1
0 0 0 0
実行前
N Z V C
CCR
0 0 0 0
実行後
99
第 7 章 実行命令細則
7.22
EOR(Exclusive Or Word Data of Source Register to
Destination Register)
Ri のワードデータと Rj のワードデータの排他的論理和演算を行い , 結果を Ri に格
納します。
■ EOR(Exclusive Or Word Data of Source Register to Destination Register)
アセンブラ形式
EOR Rj, Ri
オペレーション
Ri eor Rj → Ri
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
0
1
0
Rj
Ri
実行例
EOR R2, R3
命令のビットパターン:1001 1010 0010 0011
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
実行前
100
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.23
EOR(Exclusive Or Word Data of Source Register to
Data in Memory)
メモリの Ri 番地のワードデータと Rj のワードデータの排他的論理和演算を行い , 結
果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ EOR(Exclusive Or Word Data of Source Register to Data in Memory)
アセンブラ形式
EOR Rj,@Ri
オペレーション
(Ri) eor Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
0
0
Rj
Ri
101
第 7 章 実行命令細則
実行例
EOR R2,@R3
命令のビットパターン:1001 1100 0010 0011
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
1234567C
メモリ
12345678
0 0 0 0
実行前
102
1 0 1 0
1234567C
N Z V C
CCR
0 1 0 1
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.24
EORH(Exclusive Or Halfword Data of Source
Register to Data in Memory)
メモリの Ri 番地のハーフワードデータと Rj のハーフワードデータの排他的論理和
演算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ EORH(Exclusive Or Halfword Data of Source Register to Data in Memory)
アセンブラ形式
EORH Rj,@Ri
オペレーション
(Ri) eor Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit15) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
0
1
Rj
Ri
103
第 7 章 実行命令細則
実行例
EORH R2,@R3
命令のビットパターン: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
実行前
104
0 1 1 0
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.25
EORB(Exclusive Or Byte Data of Source Register to
Data in Memory)
メモリの Ri 番地のバイトデータと Rj のバイトデータの排他的論理和演算を行い , 結
果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ EORB(Exclusive Or Byte Data of Source Register to Data in Memory)
アセンブラ形式
EORB Rj,@Ri
オペレーション
(Ri) eor Rj → (Ri)
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
1
0
Rj
Ri
105
第 7 章 実行命令細則
実行例
EORB R2,@R3
命令のビットパターン:1001 1110 0010 0011
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
実行前
106
0 1
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.26
BANDL(And 4bit Immediate Data to Lower 4bit of
Byte Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの下位 4 ビットの論理積演
算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ BANDL(And 4bit Immediate Data to Lower 4bit of Byte Data in Memory)
アセンブラ形式
BANDL #u4,@Ri
オペレーション
{F0H+u4} and (Ri) → (Ri) [ 下位 4 ビットのみ操作 ]
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
0
0
0
0
u4
Ri
実行例
BANDL #0,@R3
命令のビットパターン:1000 0000 0000 0011
R3
1 2 3 4
5 6 7 8
R3
1 2 3 4
メモリ
12345678
メモリ
12345678
1 1
1 0
12345679
12345679
N Z V C
CCR
5 6 7 8
0 0 0 0
実行前
N Z V C
CCR
0 0 0 0
実行後
107
第 7 章 実行命令細則
7.27
BANDH(And 4bit Immediate Data to Higher 4bit of
Byte Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの上位 4 ビットの論理積演
算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ BANDH(And 4bit Immediate Data to Higher 4bit of Byte Data in Memory)
アセンブラ形式
BANDH #u4,@Ri
オペレーション
{u4 < <4 + FH} and (Ri) → (Ri) [ 上位 4 ビットのみ操作 ]
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
0
0
0
1
u4
Ri
実行例
BANDH #0,@R3
命令のビットパターン:1000 0001 0000 0011
R3
1 2 3 4
5 6 7 8
R3
1 2 3 4
メモリ
12345678
メモリ
12345678
1 1
N Z V C
0 0 0 0
実行前
108
0 1
12345679
12345679
CCR
5 6 7 8
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.28
BORL(Or 4bit Immediate Data to Lower 4bit of Byte
Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの下位 4 ビットの論理和演
算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ BORL(Or 4bit Immediate Data to Lower 4bit of Byte Data in Memory)
アセンブラ形式
BORL #u4,@Ri
オペレーション
u4 or (Ri) → (Ri) [ 下位 4 ビットのみ操作 ]
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
0
0
0
0
u4
Ri
実行例
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
0 1
12345679
12345679
N Z V C
CCR
5 6 7 8
0 0 0 0
実行前
N Z V C
CCR
0 0 0 0
実行後
109
第 7 章 実行命令細則
7.29
BORH(Or 4bit Immediate Data to Higher 4bit of Byte
Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの上位 4 ビットの論理和演
算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ BORH(Or 4bit Immediate Data to Higher 4bit of Byte Data in Memory)
アセンブラ形式
BORH #u4,@Ri
オペレーション
{u4 < <4} or (Ri) → (Ri) [ 上位 4 ビットのみ操作 ]
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
0
0
0
1
u4
Ri
実行例
BORH #1,@R3
命令のビットパターン:1001 0001 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
実行前
110
1 0
12345679
12345679
CCR
5 6 7 8
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.30
BEORL(Eor 4bit Immediate Data to Lower 4bit of
Byte Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの下位 4 ビットの排他的論
理和演算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ BEORL(Eor 4bit Immediate Data to Lower 4bit of Byte Data in Memory)
アセンブラ形式
BEORL #u4,@Ri
オペレーション
u4 eor (Ri) → (Ri) [ 下位 4 ビットのみ操作 ]
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
0
0
0
u4
Ri
実行例
BEORL #1,@R3
命令のビットパターン:1001 1000 0001 0011
R3
1 2 3 4
5 6 7 8
R3
1 2 3 4
メモリ
12345678
メモリ
12345678
0 0
0 1
12345679
12345679
N Z V C
CCR
5 6 7 8
0 0 0 0
実行前
N Z V C
CCR
0 0 0 0
実行後
111
第 7 章 実行命令細則
7.31
BEORH(Eor 4bit Immediate Data to Higher 4bit of
Byte Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの上位 4 ビットの排他的論
理和演算を行い , 結果をメモリの Ri 番地に格納します。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ BEORH(Eor 4bit Immediate Data to Higher 4bit of Byte Data in Memory)
アセンブラ形式
BEORH #u4,@Ri
オペレーション
{u4 < <4} eor (Ri) → (Ri) [ 上位 4 ビットのみ操作 ]
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
0
0
1
u4
Ri
実行例
BEORH #1,@R3
命令のビットパターン: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
実行前
112
1 0
12345679
12345679
CCR
5 6 7 8
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.32
BTSTL(Test Lower 4bit of Byte Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの下位 4 ビットの論理積演
算を行い , 結果をコンディションコードレジスタ (CCR) にセットします。
■ BTSTL(Test Lower 4bit of Byte Data in Memory)
アセンブラ形式
BTSTL #u4,@Ri
オペレーション
u4 and (Ri) [ 下位 4 ビットのみテスト ]
フラグ変化
N
Z
V
C
0
C
-
-
N: クリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
2+a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
0
0
0
u4
Ri
実行例
BTSTL #1,@R3
命令のビットパターン:1000 1000 0001 0011
R3
1 2 3 4
5 6 7 8
R3
1 2 3 4
メモリ
12345678
メモリ
12345678
1 0
1 0
12345679
12345679
N Z V C
CCR
5 6 7 8
0 0 0 0
実行前
N Z V C
CCR
0 1 0 0
実行後
113
第 7 章 実行命令細則
7.33
BTSTH(Test Higher 4bit of Byte Data in Memory)
4 ビットの即値データとメモリの Ri 番地のバイトデータの上位 4 ビットの論理積演
算を行い , 結果をコンディションコードレジスタ (CCR) にセットします。
■ BTSTH(Test Higher 4bit of Byte Data in Memory)
アセンブラ形式
BTSTH #u4,@Ri
オペレーション
{u4 < <4} and (Ri) [ 上位 4 ビットのみテスト ]
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MSB(bit7) が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
2+a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
0
0
1
u4
Ri
実行例
BTSTH #1,@R3
命令のビットパターン:1000 1001 0001 0011
R3
1 2 3 4
5 6 7 8
R3
1 2 3 4
メモリ
12345678
メモリ
12345678
0 1
N Z V C
0 0 0 0
実行前
114
0 1
12345679
12345679
CCR
5 6 7 8
N Z V C
CCR
0 1 0 0
実行後
第 7 章 実行命令細則
7.34
MUL(Multiply Word Data)
Rj のワードデータと Ri のワードデータを符号付き数値として乗算し , 結果である符
号付き 64 ビットデータの上位ワードを乗除算レジスタ (MDH) に , 下位ワードを乗
除算レジスタ (MDL) に格納します。
■ MUL(Multiply Word Data)
アセンブラ形式
MUL Rj, Ri
オペレーション
Rj × Ri → MDH, MDL
フラグ変化
N
Z
V
C
C
C
C
-
N : 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。
Z : 演算結果の MDL の内容が "0" ならばセット , それ以外ならクリアされます。
V : 演算結果が -2147483648 ∼ 2147483647 のときクリアされ , それ以外のときセッ
トされます。
C : 変化しません。
実行サイクル数
5 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
1
1
1
Rj
Ri
実行例
MUL R2, R3
命令のビットパターン:1010 1111 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
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
0 0 1 0
実行後
115
第 7 章 実行命令細則
7.35
MULU(Multiply Unsigned Word Data)
Rj のワードデータと Ri のワードデータを符号なし数値として乗算し , 結果である符
号なし 64 ビットデータの上位ワードを乗除算レジスタ (MDH) に , 下位ワードを乗
除算レジスタ (MDL) に格納します。
■ MULU(Multiply Unsigned Word Data)
アセンブラ形式
MULU Rj, Ri
オペレーション
Rj × Ri → MDH, MDL
フラグ変化
N
Z
V
C
C
C
C
-
N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果の MDL の内容が "0" ならばセット , それ以外ならクリアされます。
V: 演算結果が 0 ∼ 4294967295 のときクリアされ , それ以外のときセットされます。
C: 変化しません。
実行サイクル数
5 サイクル
命令フォーマット
MSB
1
LSB
0
1
0
1
0
1
1
Rj
Ri
実行例
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
実行前
116
N Z V C
CCR
0 0 1 0
実行後
第 7 章 実行命令細則
7.36
MULH(Multiply Halfword Data)
Rj の下位 16 ビットのハーフワードデータと Ri の下位 16 ビットのハーフワード
データを符号付き数値として乗算し , 結果である符号付き 32 ビットデータを乗除算
レジスタ (MDL) に格納します。
乗除算レジスタ (MDH) は不定です。
■ MULH(Multiply Halfword Data)
アセンブラ形式
MULH Rj, Ri
オペレーション
Rj × Ri → MDL
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果の MDL の内容が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
3 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
1
1
1
Rj
Ri
実行例
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
実行前
0 B 2 8
N Z V C
CCR
1 0 0 0
実行後
117
第 7 章 実行命令細則
7.37
MULUH(Multiply Unsigned Halfword Data)
Rj の下位 16 ビットのハーフワードデータと Ri の下位 16 ビットのハーフワード
データを符号なし数値として乗算し , 結果である符号なし 32 ビットデータを乗除算
レジスタ (MDL) に格納します。
乗除算レジスタ (MDH) は不定です。
■ MULUH(Multiply Unsigned Halfword Data)
アセンブラ形式
MULUH Rj, Ri
オペレーション
Rj × Ri → MDL
フラグ変化
N
Z
V
C
C
C
-
-
N: 演算結果の MDL の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果の MDL の内容が "0" ならばセット , それ以外ならクリアされます。
V, C: 変化しません。
実行サイクル数
3 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
0
1
1
Rj
Ri
実行例
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
実行前
118
0 B 2 8
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.38
DIV0S(Initial Setting Up for Signed Division)
乗除算レジスタの MDL を被除数 , Ri を除数として , 商を MDL, 剰余を乗除算レジス
タの MDH に格納する符号付き除算を実現するための命令です。
MDL, Ri の符号ビットに応じてシステムコンディションコードレジスタ (SCR) 中の
D0, D1 フラグをセットします。
• D0: 被除数が負のときセット , 正のときクリアします。
• D1: 除数と被除数の符号が異なるときセット , 等しいときクリアします。
MDL のワードデータを 64 ビットに符号拡張し , 上位 1 ワードを MDH に , 下位 1
ワードを MDL に格納します。
符号付き除算を実現するためには , 次のように命令を組み合せてください。
DIV0S, DIV1 × 32, DIV2, DIV3, DIV4S
■ DIV0S(Initial Setting Up for Signed Division)
アセンブラ形式
DIV0S Ri
オペレーション
MDL[31] → D0
MDL[31]^Ri[31] → D1
exts(MDL) → MDH, MDL
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: フラグは変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
0
1
1
1
0
1
0
0
Ri
119
第 7 章 実行命令細則
実行例
DIV0S R2
命令のビットパターン:1001 0111 0100 0010
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
D1 D0 T
SCR
××0
1 1 0
実行前
実行後
実行例
実際の使い方 MDL ÷ R2=MDL( 商 )…MDH( 剰余 ), 符号付き演算
DIV0S
DIV1
DIV1
:
DIV1
DIV2
DIV3
DIV4S
R2
0 1 2 3
MDH
×××× ××××
MDL
F E D C
4 5 6 7
B A 9 8
R2
R2
R2
DIV1を32個並べる
R2
R2
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
SCR
××0
実行前
120
D1 D0 T
SCR
1 1 0
実行後
第 7 章 実行命令細則
7.39
DIV0U(Initial Setting Up for Unsigned Division)
乗除算レジスタの MDL を被除数 , Ri を除数として , 商を MDL, 剰余を乗除算レジス
タの MDH に格納する符号なし除算を実現するための命令です。
MDH, D1, D0 を "0" にクリアします。
符号なし除算を実現するためには , DIV0U, DIV1 × 32 のように命令を組み合せてく
ださい。
■ DIV0U(Initial Setting Up for Unsigned Division)
アセンブラ形式
DIV0U Ri
オペレーション
0 → D0
0 → D1
0 → MDH
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: フラグは変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
0
1
1
1
0
1
0
1
Ri
実行例
DIV0U R2
命令のビットパターン:1001 0111 0101 0010
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
0 0 0
実行後
121
第 7 章 実行命令細則
実行例
実際の使い方 MDL ÷ R2=MDL( 商 )…MDH( 剰余 ), 符号なし演算
DIV0U
DIV1
DIV1
:
DIV1
R2
0 1 2 3
MDH
×××× ××××
MDL
F E D C
4 5 6 7
B A 9 8
R2
R2
R2
DIV1を32個並べる
R2
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
SCR
××0
実行前
122
D1 D0 T
SCR
0 0 0
実行後
第 7 章 実行命令細則
7.40
DIV1(Main Process of Division)
符号なし除算を実現するための命令です。DIV0U, DIV1 × 32 のように命令を組み合
せてください。
■ DIV1(Main Process of Division)
アセンブラ形式
DIV1 Ri
オペレーション
{MDH,MDL}<<=1
if(D1==1){
MDH + Ri → temp
}
else{
MDH - Ri → temp
}
if((D0^D1^C)==0){
temp → MDH
1 → MDL[0]
}
フラグ変化
N
Z
V
C
-
C
-
C
N, V: 変化しません。
Z : ステップ除算の演算結果が "0" ならばセット , それ以外ならクリアされます。除
算結果の剰余に応じて設定されます。商に応じて設定されるのではありません。
C : ステップ除算の演算の結果 , キャリが発生したときセット , それ以外はクリアさ
れます。
実行サイクル数
d サイクル
実行サイクル数は通常 1 サイクルです。しかし , 直後の命令が MOV MDH, Ri/MOV
MDL, Ri/ST Rs,@-R15 のときは , インターロックがかかり 2 サイクルになります。
Rs: 特殊レジスタ (TBR, RP, USP, SSP, MDH, MDL)
命令フォーマット
MSB
1
LSB
0
0
1
0
1
1
1
0
1
1
0
Ri
123
第 7 章 実行命令細則
実行例
DIV1 R2
命令のビットパターン:1001 0111 0110 0010
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
実行前
124
0 0 0
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.41
DIV2(Correction When Remain is 0)
符号付き除算を実現するための命令です。DIV0S, DIVI × 32, DIV2, DIV3, DIV4S の
ように命令を組み合せてください。
■ DIV2(Correction When Remain is 0)
アセンブラ形式
DIV2 Ri
オペレーション
if(D1==1){
MDH + Ri → temp
}
else{
MDH - Ri → temp
}
if(Z==1){
0 → MDH
}
フラグ変化
N
Z
V
C
-
C
-
C
N, V: 変化しません。
Z : ステップ除算の演算結果が "0" ならばセット , それ以外ならクリアされます。除
算結果の剰余に応じて設定されます。商に応じて設定されるのではありません。
C : ステップ除算の演算の結果 , キャリまたはボローが発生したときセット , それ以
外はクリアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
0
1
1
1
0
1
1
1
Ri
125
第 7 章 実行命令細則
実行例
DIV2 R2
命令のビットパターン:1001 0111 0111 0010
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
実行前
126
0 0 0
N Z V C
CCR
0 1 0 0
実行後
第 7 章 実行命令細則
7.42
DIV3(Correction When Remain is 0)
符号付き除算を実現するための命令です。DIV0S, DIVI × 32, DIV2, DIV3, DIV4S の
ように命令を組み合せください。
■ DIV3(Correction When Remain is 0)
アセンブラ形式
DIV3
オペレーション
if(Z==1){
MDL + 1 → MDL
}
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
1
1
0
1
1
0
0
0
0
0
実行例
DIV3
命令のビットパターン:1001 1111 0110 0000
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
実行前
0 0 0
N Z V C
CCR
0 1 0 0
実行後
127
第 7 章 実行命令細則
7.43
DIV4S(Correction Answer for Signed Division)
符号付き除算を実現するための命令です。DIV0S, DIVI × 32, DIV2, DIV3, DIV4S の
ように命令を組み合せてください。
■ DIV4S(Correction Answer for Signed Division)
アセンブラ形式
DIV4S
オペレーション
if(D1==1){
0 - MDL → MDL
}
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
1
1
0
1
1
1
0
0
0
0
実行例
DIV4S
命令のビットパターン:1001 1111 0111 0000
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
実行前
128
1 1 0
N Z V C
CCR
0 0 0 0
実行後
第 7 章 実行命令細則
7.44
LSL(Logical Shift to the Left Direction)
Ri のワードデータを左方向に Rj ビット論理シフトし , 結果を Ri に格納します。
シフト量を示す Rj は下位 5 ビットのみ有効で , 0 ∼ 31 を指定できます。
■ LSL(Logical Shift to the Left Direction)
アセンブラ形式
LSL Rj, Ri
オペレーション
Ri << Rj → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。シフト量が "0" のときはクリ
アされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
1
1
0
Rj
Ri
実行例
LSL R2, R3
命令のビットパターン:1011 0110 0010 0011
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
1 0 0 1
実行後
129
第 7 章 実行命令細則
7.45
LSL(Logical Shift to the Left Direction)
Ri のワードデータを左方向に u4 ビット論理シフトし , 結果を Ri に格納します。
■ LSL(Logical Shift to the Left Direction)
アセンブラ形式
LSL #u4, Ri
オペレーション
Ri << u4 → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。シフト量が "0" のときはクリ
アされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
1
0
0
u4
Ri
実行例
LSL #8, R3
命令のビットパターン:1011 0100 1000 0011
R3
F F F F
F F F F
R3
N Z V C
CCR
0 0 0 0
実行前
130
F F F F
F F 0 0
N Z V C
CCR
1 0 0 1
実行後
第 7 章 実行命令細則
7.46
LSL2(Logical Shift to the Left Direction)
Ri のワードデータを左方向に {u4+16} ビット論理シフトし , 結果を Ri に格納しま
す。
■ LSL2(Logical Shift to the Left Direction)
アセンブラ形式
LSL2 #u4, Ri
オペレーション
Ri << {u4+16} → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
1
0
1
u4
Ri
実行例
LSL2 #8, R3
命令のビットパターン:1011 0101 1000 0011
R3
F F F F
F F F F
R3
N Z V C
CCR
0 0 0 0
実行前
F F 0 0
0 0 0 0
N Z V C
CCR
1 0 0 1
実行後
131
第 7 章 実行命令細則
7.47
LSR(Logical Shift to the Right Direction)
Ri のワードデータを右方向に Rj ビット論理シフトし , 結果を Ri に格納します。
シフト量を示す Rj は下位 5 ビットのみ有効で , 0 ∼ 31 が指定可能な値となります。
■ LSR(Logical Shift to the Right Direction)
アセンブラ形式
LSR Rj, Ri
オペレーション
Ri >> Rj → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。シフト量が "0" のときはクリ
アされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
0
1
0
Rj
Ri
実行例
LSR R2, R3
命令のビットパターン:1011 0010 0010 0011
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
実行前
132
N Z V C
CCR
0 0 0 1
実行後
第 7 章 実行命令細則
7.48
LSR(Logical Shift to the Right Direction)
Ri のワードデータを右方向に u4 ビット論理シフトし , 結果を Ri に格納します。
■ LSR(Logical Shift to the Right Direction)
アセンブラ形式
LSR #u4, Ri
オペレーション
Ri >> u4 → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。シフト量が "0" のときはクリ
アされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
0
0
0
u4
Ri
実行例
LSR #8, R3
命令のビットパターン:1011 0000 1000 0011
R3
F F F F
F F F F
R3
N Z V C
CCR
0 0 0 0
実行前
0 0 F F
F F F F
N Z V C
CCR
0 0 0 1
実行後
133
第 7 章 実行命令細則
7.49
LSR2(Logical Shift to the Right Direction)
Ri のワードデータを左方向に {u4+16} ビット論理シフトし , 結果を Ri に格納しま
す。
■ LSR2(Logical Shift to the Right Direction)
アセンブラ形式
LSR2 #u4, Ri
オペレーション
Ri >> {u4+16} → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: クリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
0
0
1
u4
Ri
実行例
LSR2 #8, R3
命令のビットパターン:1011 0001 1000 0011
R3
F F F F
F F F F
R3
N Z V C
CCR
0 0 0 0
実行前
134
0 0 0 0
0 0 F F
N Z V C
CCR
0 0 0 1
実行後
第 7 章 実行命令細則
7.50
ASR(Arithmetic shift to the Right Direction)
Ri のワードデータを右方向に Rj ビット算術シフトし , 結果を Ri に格納します。
シフト量を示す Rj は下位 5 ビットのみ有効で , 0 ∼ 31 が指定可能な値となります。
■ ASR(Arithmetic shift to the Right Direction)
アセンブラ形式
ASR Rj, Ri
オペレーション
Ri >> Rj → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。シフト量が "0" のときは , ク
リアされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
0
1
0
Rj
Ri
実行例
ASR R2, R3
命令のビットパターン:1011 1010 0010 0011
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
1 0 0 1
実行後
135
第 7 章 実行命令細則
7.51
ASR(Arithmetic shift to the Right Direction)
Ri のワードデータを右方向に u4 ビット算術シフトし , 結果を Ri に格納します。
■ ASR(Arithmetic shift to the Right Direction)
アセンブラ形式
ASR #u4, Ri
オペレーション
Ri >> u4 → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。シフト量が "0" のときはクリ
アされます。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
0
0
0
u4
Ri
実行例
ASR #8, R3
命令のビットパターン:1011 1000 1000 0011
R3
F F 0 F
F F F F
R3
N Z V C
CCR
0 0 0 0
実行前
136
F F F F
0 F F F
N Z V C
CCR
1 0 0 1
実行後
第 7 章 実行命令細則
7.52
ASR2(Arithmetic shift to the Right Direction)
Ri のワードデータを左方向に (u4+16) ビット算術シフトし , 結果を Ri に格納しま
す。
■ ASR2(Arithmetic shift to the Right Direction)
アセンブラ形式
ASR2 #u4, Ri
オペレーション
Ri >> {u4+16} → Ri
フラグ変化
N
Z
V
C
C
C
-
C
N: 演算結果の MSB が "1" ならばセット , "0" ならばクリアされます。
Z: 演算結果が "0" ならばセット , それ以外ならクリアされます。
V: 変化しません。
C: 最後にシフトアウトしたビットの内容が入ります。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
0
0
1
u4
Ri
実行例
ASR2 #8, R3
命令のビットパターン:1011 1001 1000 0011
R3
F 0 F F
F F F F
R3
N Z V C
CCR
0 0 0 0
実行前
F F F F
F F F 0
N Z V C
CCR
1 0 0 1
実行後
137
第 7 章 実行命令細則
7.53
LDI:32(Load Immediate 32 bit Data to Destination
Register)
1 ワードの即値データを Ri に格納します。
■ LDI:32(Load Immediate 32 bit Data to Destination Register)
アセンブラ形式
LDI:32 #i32, Ri
オペレーション
i32 → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
3 サイクル
命令フォーマット
MSB
(n+0)
1
LSB
0
0
1
1
1
1
1
1
(n+2)
i32(上位)
(n+4)
i32(下位)
0
0
0
Ri
実行例
LDI:32 #87654321H, R3
命令のビットパターン :1001 1111 1000 0011
:1000 0111 0110 0101
:0100 0011 0010 0001
R3
0 0 0 0
0 0 0 0
実行前
138
R3
8 7 6 5
4 3 2 1
実行後
第 7 章 実行命令細則
7.54
LDI:20(Load Immediate 20bit Data to Destination
Register)
20 ビットの即値データの上位 12 ビットをゼロ拡張し , Ri に格納します。
■ LDI:20(Load Immediate 20bit Data to Destination Register)
アセンブラ形式
LDI:20 #i20, Ri
オペレーション
extu(i20) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2 サイクル
命令フォーマット
MSB
(n+0)
1
LSB
0
0
1
(n+2)
1
0
1
1
i20(上位)
Ri
i20(下位)
実行例
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
4 3 2 1
実行後
139
第 7 章 実行命令細則
7.55
LDI:8(Load Immediate 8bit Data to Destination
Register)
8 ビットの即値データの上位 24 ビットをゼロ拡張し , Ri に格納します。
■ LDI:8(Load Immediate 8bit Data to Destination Register)
アセンブラ形式
LDI:8 #i8, Ri
オペレーション
extu(i8) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
1
0
0
i8
Ri
実行例
LDI:8 #21H, R3
命令のビットパターン:1100 0010 0001 0011
R3
0 0 0 0
0 0 0 0
実行前
140
R3
0 0 0 0
0 0 2 1
実行後
第 7 章 実行命令細則
7.56
LD(Load Word Data in Memory to Register)
メモリの Rj 番地のワードデータを Ri に格納します。
■ LD(Load Word Data in Memory to Register)
アセンブラ形式
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
8 7 6 5
4 3 2 1
実行後
141
第 7 章 実行命令細則
7.57
LD(Load Word Data in Memory to Register)
メモリの (R13+Rj) 番地のワードデータを Ri に格納します。
■ LD(Load Word Data in Memory to Register)
アセンブラ形式
LD @(R13, Rj), Ri
オペレーション
(R13+Rj) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
0
0
0
0
0
0
Rj
Ri
実行例
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
実行前
142
12345678
1234567C
メモリ
8 7 6 5
4 3 2 1
実行後
第 7 章 実行命令細則
7.58
LD(Load Word Data in Memory to Register)
メモリの (R14+o8 × 4) 番地のワードデータを Ri に格納します。
o8 は符号付きで計算します。
■ LD(Load Word Data in Memory to Register)
アセンブラ形式
LD @(R14, disp10), Ri
オペレーション
(R14+o8 × 4) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
1
0
o8
Ri
実行例
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
メモリ
8 7 6 5
4 3 2 1
実行後
143
第 7 章 実行命令細則
7.59
LD(Load Word Data in Memory to Register)
メモリの (R15+u4 × 4) 番地のワードデータを Ri に格納します。
u4 は符号なしで計算します。
■ LD(Load Word Data in Memory to Register)
アセンブラ形式
LD @(R15, udisp6), Ri
オペレーション
(R15+u4 × 4) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
0
0
0
0
1
1
u4
Ri
実行例
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
実行前
144
12345678
1234567C
メモリ
8 7 6 5
4 3 2 1
実行後
第 7 章 実行命令細則
7.60
LD(Load Word Data in Memory to Register)
メモリの R15 番地のワードデータを Rj に格納し , R15 に 4 を加算します。
Ri として R15 を指定したときは , メモリから読み出した値が R15 に格納されます。
■ LD(Load Word Data in Memory to Register)
アセンブラ形式
LD @R15+, Ri
オペレーション
(R15) → Ri
R15 + 4 → R15
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
0
0
0
1
1
1
0
0
0
0
Ri
実行例
LD @R15+, R3
命令のビットパターン:0000 0111 0000 0011
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
8 7 6 5
4 3 2 1
1234567C
実行前
実行後
145
第 7 章 実行命令細則
7.61
LD(Load Word Data in Memory to Register)
メモリの R15 番地のワードデータを専用レジスタ Rs に格納し , R15 に 4 を加算し
ます。
Rs として専用レジスタの存在しない番号を指定した場合は , 読み出した Ri の値は
無視されます。
Rs としてシステムスタックポインタ (SSP) またはユーザスタックポインタ (USP)
を指定して , それが R15 になっている場合〔コンディションコードレジスタ (CCR)
の S フラグ =0 のとき SSP 指定 , もしくは S フラグ =1 のとき USP 指定〕, 最終的
に R15 として残るのはメモリから読み出した値になります。
■ LD(Load Word Data in Memory to Register)
アセンブラ形式
LD @R15+, Rs
オペレーション
(R15) → Rs
R15 + 4 → R15
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
146
LSB
0
0
0
0
1
1
1
1
0
0
0
Rs
第 7 章 実行命令細則
実行例
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
メモリ
8 7 6 5
4 3 2 1
実行後
147
第 7 章 実行命令細則
7.62
LD(Load Word Data in Memory to Program Status
Register)
メモリの R15 番地のワードデータをプログラムステータス (PS) に格納し , R15 に 4
を加算します。
命令実行時のインタラプトレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のとき , ILM
に新たな値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定するデータがメモリ
に入っていた場合 , 指定した値に 16 を加算した値が ILM に転送されます。元の値が
0 ∼ 15 のときは , 0 ∼ 31 の任意の値を ILM に転送できます。
■ LD(Load Word Data in Memory to Program Status Register)
アセンブラ形式
LD @R15+, PS
オペレーション
(R15) → PS
R15 + 4 → R15
フラグ変化
N
Z
V
C
C
C
C
C
N, Z, V, C:(R15) のデータが転送されます。
実行サイクル数
1+a+c サイクル
c は通常 1 サイクルです。しかし , 直後の命令が R15, システムスタックポインタ
(SSP) またはユーザスタックポインタ (USP) に対して , 読出しまたは書込みを行う命
令のときは , インターロックがかかり 2 サイクルになります。
命令フォーマット
MSB
0
148
LSB
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
第 7 章 実行命令細則
実行例
LD @R15+, PS
命令のビットパターン:0000 0111 1001 0000
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
メモリ
F F F 8
F 8 C 0
実行後
149
第 7 章 実行命令細則
7.63
LDUH(Load Halfword Data in Memory to Register)
メモリの Rj 番地のハーフワードデータをゼロ拡張し , Ri に格納します。
■ LDUH(Load Halfword Data in Memory to Register)
アセンブラ形式
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
実行前
150
メモリ
12345678
4 3 2 1
実行後
第 7 章 実行命令細則
7.64
LDUH(Load Halfword Data in Memory to Register)
メモリの (R13+Rj) 番地のハーフワードデータをゼロ拡張し , Ri に格納します。
■ LDUH(Load Halfword Data in Memory to Register)
アセンブラ形式
LDUH @(R13, Rj), Ri
オペレーション
extu((R13+Rj)) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
0
0
0
0
0
1
Rj
Ri
実行例
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
実行前
実行後
151
第 7 章 実行命令細則
7.65
LDUH(Load Halfword Data in Memory to Register)
メモリの (R14+o8 × 2) 番地のハーフワードデータをゼロ拡張し , Ri に格納します。
o8 は符号付きで計算します。
■ LDUH(Load Halfword Data in Memory to Register)
アセンブラ形式
LDUH @(R14, disp9), Ri
オペレーション
extu((R14+o8 × 2)) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
1
0
0
o8
Ri
実行例
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
実行前
152
実行後
第 7 章 実行命令細則
7.66
LDUB(Load Byte Data in Memory to Register)
メモリの Rj 番地のバイトデータをゼロ拡張し , Ri に格納します。
■ LDUB(Load Byte Data in Memory to Register)
アセンブラ形式
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
2 1
実行後
153
第 7 章 実行命令細則
7.67
LDUB(Load Byte Data in Memory to Register)
メモリの (R13+Rj) 番地のバイトデータをゼロ拡張し , Ri に格納します。
■ LDUB(Load Byte Data in Memory to Register)
アセンブラ形式
LDUB @(R13, Rj), Ri
オペレーション
extu((R13+Rj)) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
0
0
0
0
1
0
Rj
Ri
実行例
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
実行前
154
実行後
第 7 章 実行命令細則
7.68
LDUB(Load Byte Data in Memory to Register)
メモリの (R14+o8) 番地のバイトデータをゼロ拡張し , Ri に格納します。
o8 は符号付きで計算します。
■ LDUB(Load Byte Data in Memory to Register)
アセンブラ形式
LDUB @(R14, disp8), Ri
オペレーション
extu((R14+o8)) → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
1
1
0
o8
Ri
実行例
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
実行前
実行後
155
第 7 章 実行命令細則
7.69
ST(Store Word Data in Register to Memory)
Ri のワードデータをメモリの Rj 番地に格納します。
■ ST(Store Word Data in Register to Memory)
アセンブラ形式
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
実行例
ST R3,@R2
命令のビットパターン:0001 0100 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
8 7 6 5
4 3 2 1
メモリ
12345678
×××× ××××
実行前
156
メモリ
12345678
8 7 6 5
4 3 2 1
実行後
第 7 章 実行命令細則
7.70
ST(Store Word Data in Register to Memory)
Ri のワードデータをメモリの (R13+Rj) 番地に格納します。
■ ST(Store Word Data in Register to Memory)
アセンブラ形式
ST Ri,@(R13, Rj)
オペレーション
Ri → (R13+Rj)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
0
0
0
Rj
Ri
実行例
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
メモリ
8 7 6 5
4 3 2 1
実行後
157
第 7 章 実行命令細則
7.71
ST(Store Word Data in Register to Memory)
Ri のワードデータをメモリの (R14+o8 × 4) 番地に格納します。
o8 は符号付きで計算します。
■ ST(Store Word Data in Register to Memory)
アセンブラ形式
ST Ri,@(R14, disp10)
オペレーション
Ri → (R14+o8 × 4)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
1
1
o8
Ri
実行例
ST R3,@(R14,4)
命令のビットパターン:0011 0000 0001 0011
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
実行前
158
メモリ
8 7 6 5
4 3 2 1
実行後
第 7 章 実行命令細則
7.72
ST(Store Word Data in Register to Memory)
Ri のワードデータをメモリの (R15+u4 × 4) 番地に格納します。
u4 は符号なしで計算します。
■ ST(Store Word Data in Register to Memory)
アセンブラ形式
ST Ri,@(R15, udisp6)
オペレーション
Ri → (R15+u4 × 4)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
0
1
1
u4
Ri
実行例
ST R3,@(R15,4)
命令のビットパターン:0001 0011 0001 0011
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
実行前
メモリ
8 7 6 5
4 3 2 1
実行後
159
第 7 章 実行命令細則
7.73
ST(Store Word Data in Register to Memory)
R15 から 4 を減算し , Ri のワードデータをメモリの新しい R15 が示す番地に格納し
ます。
Ri として R15 を指定した場合は , 減算前の R15 の値を転送します。
■ ST(Store Word Data in Register to Memory)
アセンブラ形式
ST Ri,@-R15
オペレーション
R15 - 4 → R15
Ri → (R15)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
1
1
1
0
0
0
0
Ri
実行例
ST R3,@-R15
命令のビットパターン:0001 0111 0000 0011
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
8 7 6 5
4 3 2 1
12345678
実行前
160
メモリ
実行後
第 7 章 実行命令細則
7.74
ST(Store Word Data in Register to Memory)
R15 から 4 を減算し , 専用レジスタ Rs のワードデータをメモリの R15 が示す番地
に格納します。
Rs として専用レジスタの存在しない番号を指定した場合 , 不定値が転送されます。
■ ST(Store Word Data in Register to Memory)
アセンブラ形式
ST Rs,@-R15
オペレーション
R15 - 4 → R15
Rs → (R15)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
1
1
1
1
0
0
0
Rs
実行例
ST MDH,@-R15
命令のビットパターン:0001 0111 1000 0100
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
実行前
メモリ
8 7 6 5
4 3 2 1
実行後
161
第 7 章 実行命令細則
7.75
ST(Store Word Data in Program Status Register to
Memory)
R15 から 4 を減算し , プログラムステータス (PS) のワードデータをメモリの R15 の
示す番地に格納します。
■ ST(Store Word Data in Program Status Register to Memory)
アセンブラ形式
ST PS,@-R15
オペレーション
R15 - 4 → R15
PS → (R15)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
1
1
1
1
0
0
1
0
0
0
0
実行例
ST PS,@-R15
命令のビットパターン:0001 0111 1001 0000
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
実行前
162
メモリ
F F F 8
F 8 C 0
実行後
第 7 章 実行命令細則
7.76
STH(Store Halfword Data in Register to Memory)
Ri のハーフワードデータをメモリの Rj 番地に格納します。
■ STH(Store Halfword Data in Register to Memory)
アセンブラ形式
STH Ri,@Rj
オペレーション
Ri → (Rj)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
1
0
1
Rj
Ri
実行例
STH R3,@R2
命令のビットパターン:0001 0101 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
4 3 2 1
R3
0 0 0 0
4 3 2 1
メモリ
12345678
××××
実行前
メモリ
12345678
4 3 2 1
実行後
163
第 7 章 実行命令細則
7.77
STH(Store Halfword Data in Register to Memory)
Ri のハーフワードデータをメモリの (R13+Rj) 番地に格納します。
■ STH(Store Halfword Data in Register to Memory)
アセンブラ形式
STH Ri,@(R13, Rj)
オペレーション
Ri → (R13+Rj)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
0
0
1
Rj
Ri
実行例
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
実行前
164
実行後
第 7 章 実行命令細則
7.78
STH(Store Halfword Data in Register to Memory)
Ri のハーフワードデータをメモリの (R14+o8 × 2) 番地に格納します。
o8 は符号付きで計算します。
■ STH(Store Halfword Data in Register to Memory)
アセンブラ形式
STH Ri,@(R14, disp9)
オペレーション
Ri → (R14+o8 × 2)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
1
0
1
o8
Ri
実行例
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
実行前
実行後
165
第 7 章 実行命令細則
7.79
STB(Store Byte Data in Register to Memory)
Ri のバイトデータをメモリの Rj 番地に格納します。
■ STB(Store Byte Data in Register to Memory)
アセンブラ形式
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
実行例
STB R3,@R2
命令のビットパターン:0001 0110 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 2 1
R3
0 0 0 0
0 0 2 1
メモリ
12345678
××
実行前
166
メモリ
12345678
2 1
実行後
第 7 章 実行命令細則
7.80
STB(Store Byte Data in Register to Memory)
Ri のバイトデータをメモリの (R13+Rj) 番地に格納します。
■ STB(Store Byte Data in Register to Memory)
アセンブラ形式
STB Ri,@(R13, Rj)
オペレーション
Ri → (R13+Rj)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
0
0
1
0
Rj
Ri
実行例
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
実行前
実行後
167
第 7 章 実行命令細則
7.81
STB(Store Byte Data in Register to Memory)
Ri のバイトデータをメモリの (R14+o8) 番地に格納します。
o8 は符号付きで計算します。
■ STB(Store Byte Data in Register to Memory)
アセンブラ形式
STB Ri,@(R14, disp8)
オペレーション
Ri → (R14+o8)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
1
1
1
o8
Ri
実行例
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
実行前
168
実行後
第 7 章 実行命令細則
7.82
MOV(Move Word Data in Source Register to
Destination Register)
Rj のワードデータを Ri に格納します。
■ MOV(Move Word Data in Source Register to Destination Register)
アセンブラ形式
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
実行例
MOV R2, R3
命令のビットパターン:1000 1011 0010 0011
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
実行前
実行後
169
第 7 章 実行命令細則
7.83
MOV(Move Word Data in Source Register to
Destination Register)
専用レジスタ Rs のワードデータを汎用レジスタ Ri に格納します。
Rs として専用レジスタの存在しない番号を指定した場合 , 不定値が転送されます。
■ MOV(Move Word Data in Source Register to Destination Register)
アセンブラ形式
MOV Rs, Ri
オペレーション
Rs → Ri
フラグ変化
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
実行前
170
実行後
第 7 章 実行命令細則
7.84
MOV(Move Word Data in Program Status Register to
Destination Register)
プログラムステータス (PS) のワードデータを汎用レジスタ Ri に格納します。
■ MOV(Move Word Data in Program Status Register to Destination Register)
アセンブラ形式
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
実行例
MOV PS, R3
命令のビットパターン:0001 0111 0001 0011
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
実行前
実行後
171
第 7 章 実行命令細則
7.85
MOV(Move Word Data in Source Register to
Destination Register)
汎用レジスタ Ri のワードデータを専用レジスタ Rs に格納します。
Rs として専用レジスタの存在しない番号を指定した場合 , 読み出した Ri の値は無
視されます。
■ MOV(Move Word Data in Source Register to Destination Register)
アセンブラ形式
MOV Ri, Rs
オペレーション
Ri → Rs
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
1
1
0
0
1
1
Rs
Ri
実行例
MOV R3, MDL
命令のビットパターン:1011 0011 0101 0011
R3
8 7 6 5
MDL
×××× ××××
4 3 2 1
実行前
172
R3
8 7 6 5
4 3 2 1
MDL
8 7 6 5
4 3 2 1
実行後
第 7 章 実行命令細則
7.86
MOV(Move Word Data in Source Register to
Program Status Register)
汎用レジスタ Ri のワードデータをプログラムステータス (PS) に格納します。
命令実行時のインタラプトレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のとき , ILM
に新たな値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定するデータが Ri に
入っていた場合 , 指定した値 +16 という値が ILM に転送されます。元の値が 0 ∼ 15
のときは , 0 ∼ 31 の任意の値を ILM に転送できます。
■ MOV(Move Word Data in Source Register to Program Status Register)
アセンブラ形式
MOV Ri, PS
オペレーション
Ri → PS
フラグ変化
N
Z
V
C
C
C
C
C
N, Z, V, C:Ri のデータが転送されます。
実行サイクル数
c サイクル
実行サイクル数は通常 1 サイクルです。しかし , 直後の命令が R15, システムスタッ
クポインタ (SSP) またはユーザスタックポインタ (USP) に対して , 読出しまたは書
込みを行う命令のときは , インターロックがかかり 2 サイクルになります。
命令フォーマット
MSB
0
LSB
0
0
0
0
1
1
1
0
0
0
1
Ri
実行例
MOV R3, PS
命令のビットパターン:0000 0111 0001 0011
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
実行後
173
第 7 章 実行命令細則
7.87
JMP(Jump)
遅延スロットのない分岐命令です。
Ri の示すアドレスへ分岐します。
■ JMP(Jump)
アセンブラ形式
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
実行例
JMP @R1
命令のビットパターン:1001 0111 0000 0001
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
実行前
174
実行後
第 7 章 実行命令細則
7.88
CALL(Call Subroutine)
遅延スロットのない分岐命令です。
次の命令のアドレスをリターンポインタ (RP) に格納した後に , label12 で指定された
アドレスへプログラムカウンタ (PC) 相対の分岐を行います。アドレス計算の際に ,
rel11 の値は 2 倍され , 符号拡張されます。
■ CALL(Call Subroutine)
アセンブラ形式
CALL label12
オペレーション
PC + 2 → RP
PC + 2 + exts(rel11 × 2) → PC
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2 サイクル
命令フォーマット
MSB
1
LSB
1
0
1
0
rel11
実行例
CALL label
・・・
label: ; CALL 命令のアドレス+ 122H
命令のビットパターン:1101 0000 1001 0000
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
実行後
175
第 7 章 実行命令細則
7.89
CALL(Call Subroutine)
遅延スロットのない分岐命令です。
次の命令のアドレスをリターンポインタ (RP) に格納した後に , Ri で指定されたアド
レスへ分岐します。
■ CALL(Call Subroutine)
アセンブラ形式
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
実行例
CALL @R1
命令のビットパターン:1001 0111 0001 0001
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
実行前
176
実行後
第 7 章 実行命令細則
7.90
RET(Return from Subroutine)
遅延スロットのない分岐命令です。
リターンポインタ (RP) の示すアドレスへ分岐します。
■ RET(Return from Subroutine)
アセンブラ形式
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
実行例
RET
命令のビットパターン:1001 0111 0010 0000
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
実行前
実行後
177
第 7 章 実行命令細則
7.91
INT(Software Interrupt)
プログラムカウンタ (PC) とプログラムステータス (PS) を割込み用のシステムス
タックポインタ (SSP) の示すスタックへ格納します。コンディションコードレジス
タ (CCR) の S フラグに "0" を書き込み , 以降に使用するスタックポインタを SSP と
します。CCR の割込み許可の I フラグに "0" を書き込み , 外部割込みを禁止状態に
します。指定された割込みベクタ番号 u8 に応じた分岐先アドレスをベクタテーブル
から読み出して分岐します。
この命令には遅延スロットはありません。
ベクタ番号 9 ∼ 13, 64, 65 はデバッグ用の割込みでエミュレータが使用しますので ,
ユーザプログラムでは INT#9 ∼ INT#13, INT#64, INT#65 命令を使用しないでくださ
い。
■ INT(Software Interrupt)
アセンブラ形式
INT #u8
オペレーション
SSP-4 → SSP
PS → (SSP)
SSP-4 → SSP
PC+2 → (SSP)
"0" → I フラグ
"0" → S フラグ
(TBR+3FCH-u8 × 4) → PC
フラグ変化
S
I
N
Z
V
C
0
0
-
-
-
-
N, Z, V, C: 変化しません。
S, I: "0" にクリアされます。
実行サイクル数
3+3a サイクル
命令フォーマット
MSB
0
178
LSB
0
0
1
1
1
1
1
u8
第 7 章 実行命令細則
実行例
INT #20H
命令のビットパターン:0001 1111 0010 0000
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
実行前
実行後
179
第 7 章 実行命令細則
7.92
INTE(Software Interrupt for Emulator)
デバッグ用のソフトウェアインタラプト命令です。プログラムカウンタ (PC) とプロ
グラムステータス (PS) を割込み用のシステムスタックポインタ (SSP) の示すスタッ
クへ格納します。コンディションコードレジスタ (CCR) の S フラグに "0" を書き込
み , 以降に使用するスタックポインタを SSP とします。ベクタテーブルを参照して
ベクタ番号 #9 の先頭アドレスへ分岐します。
コンディションコードレジスタ (CCR) の I フラグは変化しません。
プログラムステータス (PS) のインタラプトレベルマスクレジスタ (ILM) のレベルを
4 に設定します。
この命令はデバッグ用のソフトウェアインタラプト命令です。
ステップ実行中は INTE 命令による EIT の発生はありません。
この命令には遅延スロットはありません。
■ INTE(Software Interrupt for Emulator)
アセンブラ形式
INTE
オペレーション
SSP-4 → SSP
PS → (SSP)
SSP-4 → SSP
PC+2 → (SSP)
4 → ILM
"0" → S フラグ
(TBR+3D8H) → PC
フラグ変化
S
I
N
Z
V
C
0
-
-
-
-
-
I, N, Z, V, C: 変化しません。
S: "0" にクリアされます。
実行サイクル数
3+3a サイクル
命令フォーマット
MSB
1
180
LSB
0
0
1
1
1
1
1
0
0
1
1
0
0
0
0
第 7 章 実行命令細則
実行例
INTE
命令のビットパターン:1001 1111 0011 0000
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
実行前
実行後
181
第 7 章 実行命令細則
7.93
RETI(Return from Interrupt)
R15 の示すスタックからプログラムカウンタ (PC) およびプログラムステータス
(PS) にデータを格納し , 割込みハンドラから復帰します。
この命令はコンディションコードレジスタ (CCR) の S フラグが "0" の状態で実行さ
れる必要があるので , 通常の割込みハンドラ内では , S フラグを操作せず "0" のまま
使用してください。
この命令には遅延スロットはありません。
命令実行時に PS のインタラプトレベルマスクレジスタ (ILM) の値が 16 ∼ 31 のと
き , ILM に新たな値として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定するデータ
がメモリに入っていた場合は , 指定した値に 16 を加算した値が ILM に転送されま
す。元の値が 0 ∼ 15 の場合は , 0 ∼ 31 の任意の値を ILM に転送できます。
■ RETI(Return from Interrupt)
アセンブラ形式
RETI
オペレーション
(R15) → PC
R15+4 → R15
(R15) → PS
R15+4 → R15
フラグ変化
S
I
N
Z
V
C
C
C
C
C
C
C
S, I, N, Z, V, C: スタックから取り出した値に応じて変化します。
実行サイクル数
2+2a サイクル
命令フォーマット
MSB
1
182
LSB
0
0
1
0
1
1
1
0
0
1
1
0
0
0
0
第 7 章 実行命令細則
実行例
RETI
命令のビットパターン:1001 0111 0011 0000
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
1 0 0 1 1
ILM
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
実行前
実行後
183
第 7 章 実行命令細則
7.94
Bcc(Branch relative if Condition satisfied)
遅延スロットのない分岐命令です。
命令ごとに指定された条件が成立すると , label9 で示されたアドレスへプログラム
カウンタ (PC) 相対の分岐を行います。アドレス計算の際に , rel8 の値は 2 倍されて
符号拡張されます。
条件が成立しないときは分岐されません。
各命令の条件を , 表 7.94-1 に示します。
■ Bcc(Branch relative if Condition satisfied)
アセンブラ形式
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( 条件成立 ){
PC + 2 + exts(rel8 × 2) → PC
}
表 7.94-1 分岐条件 (1 / 2)
184
ニーモニック
cc
BRA
0000
常に成立
BNO
0001
常に非成立
BEQ
0010
Z=1
BNE
0011
Z=0
BC
0100
C=1
BNC
0101
C=0
BN
0110
N=1
BP
0111
N=0
BV
1000
V=1
BNV
1001
V=0
BLT
1010
V xor N = 1
条件
第 7 章 実行命令細則
表 7.94-1 分岐条件 (2 / 2)
ニーモニック
cc
BGE
1011
V xor N = 0
BLE
1100
(V xor N) or Z = 1
BGT
1101
(V xor N) or Z = 0
BLS
1110
C or Z = 1
BHI
1111
C or Z = 0
条件
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
分岐するとき
: 2 サイクル
分岐しないとき : 1 サイクル
命令フォーマット
MSB
1
LSB
1
1
0
cc
rel8
実行例
BHI label
・・・
label:
; BHI 命令のアドレス+ 50H
命令のビットパターン:1110 1111 0010 1000
PC
F F 8 0
0 0 0 0
PC
N Z V C
CCR
1 0 1 0
F F 8 0
0 0 5 2
N Z V C
CCR
1 0 1 0
Z or C = 0(条件成立)
実行前
実行後
185
第 7 章 実行命令細則
7.95
JMP:D(Jump)
遅延スロット付きの分岐命令です。
Ri が示すアドレスへ分岐します。
■ JMP:D(Jump)
アセンブラ形式
JMP:D @Ri
オペレーション
Ri → PC
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
LSB
1
0
0
1
1
1
1
1
0
0
0
0
Ri
実行例
JMP:D @R1
LDI:8 #0FFH, R1 ; 遅延スロットに置かれた命令
…
命令のビットパターン:1001 1111 0000 0001
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 命令により変化します。
186
第 7 章 実行命令細則
7.96
CALL:D(Call Subroutine)
遅延スロット付きの分岐命令です。
遅延スロットの次の命令のアドレスを RP に格納した後に , label12 で指定されたア
ドレスへ PC 相対の分岐を行います。
アドレス計算の際に , rel11 の値は 2 倍され , 符号拡張されます。
■ CALL:D(Call Subroutine)
アセンブラ形式
CALL:D label
オペレーション
PC + 4 → RP
PC + 2 + exts(rel11 × 2) → PC
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
1
0
1
1
rel11
実行例
CALL:D label
LDI:8 #0, R2 ; 遅延スロットに置かれた命令
・・・
label:
; CALL:D 命令のアドレス+ 122H
命令のビットパターン:1101 1000 1001 0000
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 命令により変化します。
187
第 7 章 実行命令細則
7.97
CALL:D(Call Subroutine)
遅延スロット付きの分岐命令です。
遅延スロットの次の命令のアドレスを RP に格納した後に , Ri で指定されたアドレ
スへ分岐します。
■ CALL:D(Call Subroutine)
アセンブラ形式
CALL:D @Ri
オペレーション
PC + 4 → RP
Ri → PC
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
1
1
0
0
0
1
Ri
実行例
CALL:D @R1
LDI:8 #1, R1 ; 遅延スロットに置かれた命令
…
命令のビットパターン:1001 1111 0001 0001
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 命令により変化します。
188
第 7 章 実行命令細則
7.98
RET:D(Return from Subroutine)
遅延スロット付きの分岐命令です。
RP の示すアドレスへ分岐します。
■ RET:D(Return from Subroutine)
アセンブラ形式
RET:D
オペレーション
RP → PC
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
1
1
0
0
1
0
0
0
0
0
実行例
RET:D
MOV R0, R1 ; 遅延スロットに置かれた命令
…
命令のビットパターン:1001 1111 0010 0000
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 命令により変化します。
189
第 7 章 実行命令細則
7.99
Bcc:D(Branch relative if Condition satisfied)
遅延スロット付きの分岐命令です。
命令ごとに指定された条件が成立すると , label9 で示されたアドレスへプログラム
カウンタ (PC) 相対の分岐を行います。アドレス計算の際に , rel8 の値は 2 倍されて
符号拡張されます。
条件が成立しないときは分岐されません。
各命令の条件を , 表 7.99-1 に示します。
■ Bcc:D(Branch relative if Condition satisfied)
アセンブラ形式
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( 条件成立 ){
PC + 2 + exts(rel8 × 2) → PC
}
表 7.99-1 分岐条件 (1 / 2)
190
ニーモニック
cc
BRA:D
0000B
常に成立
BNO:D
0001B
常に非成立
BEQ:D
0010B
Z=1
BNE:D
0011B
Z=0
BC:D
0100B
C=1
BNC:D
0101B
C=0
BN:D
0110B
N=1
BP:D
0111B
N=0
BV:D
1000B
V=1
BNV:D
1001B
V=0
BLT:D
1010B
V xor N = 1
条件
第 7 章 実行命令細則
表 7.99-1 分岐条件 (2 / 2)
ニーモニック
cc
BGE:D
1011B
V xor N = 0
BLE:D
1100B
(V xor N) or Z = 1
BGT:D
1101B
(V xor N) or Z = 0
BLS:D
1110B
C or Z = 1
BHI:D
1111B
C or Z = 0
条件
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
1
LSB
1
1
1
cc
rel8
実行例
BHI:D label
LDI:8 #255, R1 ; 遅延スロットに置かれた命令
・・・
label:
; BHI:D 命令のアドレス+ 50H
命令のビットパターン:1111 1111 0010 1000
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 命令により変化しています。
191
第 7 章 実行命令細則
7.100
DMOV(Move Word Data from Direct Address to
Register)
dir8 の値を 4 倍したダイレクトアドレスに置かれたワードデータを R13 に転送しま
す。
■ DMOV(Move Word Data from Direct Address to Register)
アセンブラ形式
DMOV @dir10, R13
オペレーション
(dir8 × 4) → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
0
LSB
0
0
0
1
0
0
0
dir8
実行例
DMOV @88H, R13
命令のビットパターン:0000 1000 0010 0010
R13
×××× ××××
R13
4 5 6 7
メモリ
メモリ
84H
×××× ××××
84H
×××× ××××
88H
0 1 2 3
4 5 6 7
88H
0 1 2 3
8CH
×××× ××××
8CH
×××× ××××
実行前
192
0 1 2 3
4 5 6 7
実行後
第 7 章 実行命令細則
7.101
DMOV(Move Word Data from Register to Direct
Address)
R13 のワードデータを , dir8 の値を 4 倍したダイレクトアドレスに転送します。
■ DMOV(Move Word Data from Register to Direct Address)
アセンブラ形式
DMOV R13,@dir10
オペレーション
R13 → (dir8 × 4)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
1
0
0
0
dir8
実行例
DMOV R13,@54H
命令のビットパターン:0001 1000 0001 0101
R13
8 9 A B
C D E F
R13
8 9 A B
C D E F
メモリ
メモリ
50H
×××× ××××
50H
×××× ××××
54H
×××× ××××
54H
8 9 A B
58H
×××× ××××
58H
×××× ××××
実行前
C D E F
実行後
193
第 7 章 実行命令細則
7.102
DMOV(Move Word Data from Direct Address to Post
Increment Register Indirect Address)
dir8 の値を 4 倍したダイレクトアドレスに置かれたワードデータを R13 の示すアド
レスへ転送します。データ転送の後 , R13 に 4 を加算します。
■ DMOV(Move Word Data from Direct Address to Post Increment Register
Indirect Address)
アセンブラ形式
DMOV @dir10,@R13+
オペレーション
(dir8 × 4) → (R13)
R13 + 4 → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
0
1
1
0
0
dir8
実行例
DMOV @88H,@R13+
命令のビットパターン:0000 1100 0010 0010
R13
F F F F
1 2 4 8
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
実行前
194
F F F F
実行後
第 7 章 実行命令細則
7.103
DMOV(Move Word Data from Post Increment
Register Indirect Address to Direct Address)
R13 が示すアドレスに置かれたワードデータを dir8 の値を 4 倍したダイレクトアド
レスに転送します。データ転送の後 , R13 に 4 を加算します。
■ DMOV(Move Word Data from Post Increment Register Indirect Address to
Direct Address)
アセンブラ形式
DMOV @R13+,@dir10
オペレーション
(R13) → (dir8 × 4)
R13 + 4 → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
1
1
0
0
dir8
実行例
DMOV @R13+,@54H
命令のビットパターン:0001 1100 0001 0101
R13
F F F F
1 2 4 8
R13
メモリ
F F F F
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
実行前
実行後
195
第 7 章 実行命令細則
7.104
DMOV(Move Word Data from Direct Address to Pre
Decrement Register Indirect Address)
R15 から 4 を減算した後に , dir8 の値を 4 倍したダイレクトアドレスに置かれた
ワードデータを R15 が示すアドレスへ転送します。
■ DMOV(Move Word Data from Direct Address to Pre Decrement Register
Indirect Address)
アセンブラ形式
DMOV @dir10,@-R15
オペレーション
R15 - 4 → R15
(dir8 × 4) → (R15)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
0
1
0
1
1
dir8
実行例
DMOV @2CH,@-R15
命令のビットパターン:0000 1011 0000 1011
R15
7 F F F
F F 8 8
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
実行前
196
7 F F F
実行後
第 7 章 実行命令細則
7.105
DMOV(Move Word Data from Post Increment
Register Indirect Address to Direct Address)
R15 が示すアドレスに置かれたワードデータを dir8 の値を 4 倍したダイレクトアド
レスに転送します。データ転送の後 , R15 に 4 を加算します。
■ DMOV(Move Word Data from Post Increment Register Indirect Address to
Direct Address)
アセンブラ形式
DMOV @R15+,@dir10
オペレーション
(R15) → (dir8 × 4)
R15 + 4 → R15
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
1
0
1
1
dir8
実行例
DMOV @R15+,@38H
命令のビットパターン:0001 1011 0000 1110
R15
7 F F E
E E 8 0
R15
メモリ
7 F F E
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
実行前
実行後
197
第 7 章 実行命令細則
7.106
DMOVH(Move Halfword Data from Direct Address to
Register)
dir8 の値を 2 倍したダイレクトアドレスに置かれたハーフワードデータを R13 に転
送します。データの上位 16 ビットはゼロに拡張されます。
■ DMOVH(Move Halfword Data from Direct Address to Register)
アセンブラ形式
DMOVH @dir9, R13
オペレーション
(dir8 × 2) → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
LSB
0
0
0
0
1
0
0
1
dir8
実行例
DMOVH @88H, R13
命令のビットパターン:0000 1001 0100 0100
R13
×××× ××××
R13
0 0 0 0
メモリ
メモリ
86
××××
86
××××
88
B 2 B 6
88
B 2 B 6
8A
××××
8A
××××
実行前
198
B 2 B 6
実行後
第 7 章 実行命令細則
7.107
DMOVH(Move Halfword Data from Register to Direct
Address)
R13 のハーフワードデータを dir8 の値を 2 倍したダイレクトアドレスに転送しま
す。
■ DMOVH(Move Halfword Data from Register to Direct Address)
アセンブラ形式
DMOVH R13,@dir9
オペレーション
R13 → (dir8 × 2)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
LSB
0
0
0
1
1
0
0
1
dir8
実行例
DMOVH R13,@52H
命令のビットパターン:0001 1001 0010 1001
R13
F F F F
A E 8 6
R13
F F F F
メモリ
A E 8 6
メモリ
50
××××
50
××××
52
××××
52
A E 8 6
54
××××
54
××××
実行前
実行後
199
第 7 章 実行命令細則
7.108
DMOVH(Move Halfword Data from Direct Address to
Post Increment Register Indirect Address)
dir8 の値を 2 倍したダイレクトアドレスに置かれたハーフワードデータを R13 が示
すアドレスへ転送します。データ転送の後 , R13 に 2 を加算します。
■ DMOVH(Move Halfword Data from Direct Address to Post Increment Register
Indirect Address)
アセンブラ形式
DMOVH @dir9,@R13+
オペレーション
(dir8 × 2) → (R13)
R13 + 2 → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
0
1
1
0
1
dir8
実行例
DMOVH @88H,@R13+
命令のビットパターン:0000 1101 0100 0100
R13
F F 0 0
0 0 5 2
R13
F F 0 0
メモリ
メモリ
00000088
1 3 7 4
00000088
1 3 7 4
FF000052
××××
FF000052
1 3 7 4
FF000054
××××
FF000054
××××
実行前
200
0 0 5 4
実行後
第 7 章 実行命令細則
7.109
DMOVH(Move Halfword Data from Post Increment
Register Indirect Address to Direct Address)
R13 が示すアドレスに置かれたハーフワードデータを dir8 の値を 2 倍したダイレク
トアドレスに転送します。データ転送の後 , R13 に 2 を加算します。
■ DMOVH(Move Halfword Data from Post Increment Register Indirect Address
to Direct Address)
アセンブラ形式
DMOVH @R13+,@dir9
オペレーション
(R13) → (dir8 × 2)
R13 + 2 → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
1
1
0
1
dir8
実行例
DMOVH @R13+,@52H
命令のビットパターン:0001 1101 0010 1001
R13
F F 8 0
1 2 2 0
R13
F F 8 0
1 2 2 2
メモリ
メモリ
00000052
××××
00000052
8 9 3 3
FF801220
8 9 3 3
FF801220
8 9 3 3
FF801222
××××
FF801222
××××
実行前
実行後
201
第 7 章 実行命令細則
7.110
DMOVB(Move Byte Data from Direct Address to
Register)
dir8 で示されるダイレクトアドレスに置かれたバイトデータを R13 に転送します。
データの上位 24 ビットはゼロに拡張されます。
■ DMOVB(Move Byte Data from Direct Address to Register)
アセンブラ形式
DMOVB @dir8, R13
オペレーション
(dir8) → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
LSB
0
0
0
0
1
0
1
0
dir8
実行例
DMOVB @91H, R13
命令のビットパターン:0000 1010 1001 0001
R13
×××× ××××
R13
0 0 0 0
メモリ
メモリ
90
××
90
××
91
3 2
91
3 2
92
××
92
××
実行前
202
0 0 3 2
実行後
第 7 章 実行命令細則
7.111
DMOVB(Move Byte Data from Register to Direct
Address)
R13 のハーフワードデータを dir8 で示されるダイレクトアドレスに転送します。
■ DMOVB(Move Byte Data from Register to Direct Address)
アセンブラ形式
DMOVB R13,@dir8
オペレーション
R13 → (dir8)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
LSB
0
0
0
1
1
0
1
0
dir8
実行例
DMOVB R13,@53H
命令のビットパターン:0001 1010 0101 0011
R13
F F F F
F F F E
R13
F F F F
メモリ
F F F E
メモリ
52
××
52
××
53
××
53
F E
54
××
54
××
実行前
実行後
203
第 7 章 実行命令細則
7.112
DMOVB(Move Byte Data from Direct Address to
Post Increment Register Indirect Address)
dir8 で示されるダイレクトアドレスに置かれたハーフワードデータを R13 が示すア
ドレスへ転送します。データ転送の後 , R13 に 1 を加算します。
■ DMOVB(Move Byte Data from Direct Address to Post Increment Register
Indirect Address)
アセンブラ形式
DMOVB @dir8,@R13+
オペレーション
(dir8) → (R13)
R13 + 1 → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
0
1
1
1
0
dir8
実行例
DMOVB @71H,@R13+
命令のビットパターン:0000 1110 0111 0001
R13
8 8 0 0
1 2 3 4
R13
8 8 0 0
メモリ
メモリ
00000071
9 9
00000071
9 9
88001234
××
88001234
9 9
88001235
××
88001235
××
実行前
204
1 2 3 5
実行後
第 7 章 実行命令細則
7.113
DMOVB(Move Byte Data from Post Increment
Register Indirect Address to Direct Address)
R13 が示すアドレスに置かれたバイトデータを dir8 で示されるダイレクトアドレス
へ転送します。データ転送の後 , R13 に 1 を加算します。
■ DMOVB(Move Byte Data from Post Increment Register Indirect Address to
Direct Address)
アセンブラ形式
DMOVB @R13+,@dir8
オペレーション
(R13) → (dir8)
R13 + 1 → R13
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
0
LSB
0
0
1
1
1
1
0
dir8
実行例
DMOVB @R13+,@57H
命令のビットパターン:0001 1110 0101 0111
R13
F F 8 0
1 2 2 0
R13
F F 8 0
メモリ
1 2 2 1
メモリ
00000057
××
00000057
5 5
FF801220
5 5
FF801220
5 5
FF801221
××
FF801221
××
実行前
実行後
205
第 7 章 実行命令細則
7.114
LDRES(Load Word Data in Memory to Resource)
Ri が示すアドレスに置かれたワードデータを u4 チャネルのリソースに転送します。
Ri に 4 を加算します。
■ LDRES(Load Word Data in Memory to Resource)
アセンブラ形式
LDRES @Ri+, #u4
オペレーション
(Ri) → u4 チャネルのリソース
Ri + 4 → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
1
0
0
u4
Ri
実行例
LDRES @R2+, #8
命令のビットパターン:1011 1100 1000 0010
R2
1 2 3 4
5 6 7 8
R2
メモリ
ch.8 Resource
12345678
×××× ××××
8 7 6 5
4 3 2 1
1234567C
5 6 7 C
メモリ
ch.8 Resource
8 7 6 5
4 3 2 1
12345678
8 7 6 5
4 3 2 1
1234567C
実行前
206
1 2 3 4
実行後
第 7 章 実行命令細則
7.115
STRES(Store Word Data in Resource to Memory)
u4 チャネルのリソースのワードデータを Ri が示すアドレスに転送します。
Ri に 4 を加算します。
■ STRES(Store Word Data in Resource to Memory)
アセンブラ形式
STRES #u4,@Ri+
オペレーション
u4 チャネルのリソース → (Ri)
Ri + 4 → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
a サイクル
命令フォーマット
MSB
1
LSB
0
1
1
1
1
0
1
u4
Ri
実行例
STRES #8,@R2+
命令のビットパターン:1011 1101 1000 0010
R2
1 2 3 4
5 6 7 8
R2
メモリ
ch.8 Resource
12345678
8 7 6 5
4 3 2 1
×××× ××××
1234567C
1 2 3 4
5 6 7 C
メモリ
ch.8 Resource
8 7 6 5
4 3 2 1
12345678
8 7 6 5
4 3 2 1
1234567C
実行前
実行後
207
第 7 章 実行命令細則
7.116
COPOP(Co-Processor Opetation)
CC, CRj, CRi で構成される 16 ビットデータを u4 のチャネル番号で示されるコプロ
セッサに対して転送します。
基本的には , コプロセッサ内のレジスタ間演算を行います。CC で指定される演算処
理をコプロセッサ内レジスタ CRj と CRi の間で行います。ただし , CC, CRj, CRi 各
フィールドの解釈はコプロセッサが行うため , 実際の動作内容はコプロセッサの仕様
により決まります。
u4 で指定されるコプロセッサが実装されていない場合 , コプロセッサ不在トラップ
が発生します。
u4 で指定されたコプロセッサが以前の動作によりエラーを起こしていた場合 , コプ
ロセッサエラートラップが発生します。
■ COPOP(Co-Processor Opetation)
アセンブラ形式
COPOP #u4, #CC, CRj, CRi
オペレーション
CC, CRj, CRi → ch u4 のコプロセッサ
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2+a サイクル
命令フォーマット
MSB
(n+0)
(n+2)
208
1
LSB
0
0
1
CC
1
1
1
1
1
1
0
CRj
0
u4
CRi
第 7 章 実行命令細則
実行例
COPOP #15, #1, CR3, CR4
16 ビット長データをチャネル番号 15 で指定されるコプロセッサにバスを通じて転
送します。
MSB
0
LSB
0
0
0
0
0
0
1
0
0
1
1
0
1
0
0
例えば , チャネル番号 15 で指定されるコプロセッサが単精度浮動小数点演算ユニッ
トだとします。コプロセッサコマンド CC が , 表 7.116-1 のように割り当てられてい
るとすると , コプロセッサは下記のように動作します。
表 7.116-1 コプロセッサコマンド CC の条件 (COPOP)
CC
演算
00
加算 CRi+CRj → CRi
01
減算 CRi-CRj → CRi
02
乗算 CRi × CRj → CRi
03
除算 CRi ÷ CRj → CRi
その他
何もしない
(コプロセッサ内レジスタ)
(コプロセッサ内レジスタ)
CR3
C 0 0 0
0 0 0 0
CR3
C 0 0 0
0 0 0 0
CR4
4 0 C 0
0 0 0 0
(-1×20)
CR4
4 0 8 0
0 0 0 0
(2×20)
(3×20)
実行前
実行後
209
第 7 章 実行命令細則
7.117
COPLD(Load 32bit Data from Register to
Co-processor Register)
CC, Rj, CRi で構成される 16 ビットデータを u4 のチャネル番号で示されるコプロ
セッサに対して転送し , その次のサイクルに CPU 内汎用レジスタ Rj の内容を同コ
プロセッサへ転送します。
基本的には , コプロセッサ内レジスタへのデータ転送を行います。CPU 内汎用レジ
スタ Rj の保持する 32 ビットデータをコプロセッサ内レジスタ CRi へ転送します。
ただし , CC, Rj, CRi 各フィールドの解釈はコプロセッサが行うため , 実際の動作内
容はコプロセッサの仕様により決まります。
u4 で指定されるコプロセッサが実装されていない場合 , コプロセッサ不在トラップ
が発生します。
u4 で指定されたコプロセッサが以前の動作によりエラーを起こしていた場合 , コプ
ロセッサエラートラップが発生します。
■ COPLD(Load 32bit Data from Register fo Co-processor Register)
アセンブラ形式
COPLD #u4, #CC, Rj, CRi
オペレーション
CC, Rj, CRi → ch u4 のコプロセッサ
Rj → CRi
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
(n+0)
(n+2)
210
1
LSB
0
0
1
CC
1
1
1
1
1
1
0
Rj
1
u4
CRi
第 7 章 実行命令細則
実行例
COPLD #15, #4, R8, CR1
16 ビット長データをチャネル番号 15 で指定されるコプロセッサにバスを通じて転
送します。次に , 汎用レジスタ R8 の内容を同コプロセッサにバスを通じて転送し
ます。
MSB
0
LSB
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
例えば , チャネル番号 15 で指定されるコプロセッサが単精度浮動小数点演算ユニッ
トだとします。コプロセッサコマンド CC が , 表 7.117-1 のように割り当てられてい
るとすると , コプロセッサは下記のように動作します。
表 7.117-1 コプロセッサコマンド CC の条件 (COPLD)
CC
演算
00
加算 CRi+CRj → CRi
01
減算 CRi-CRj → CRi
02
乗算 CRi × CRj → CRi
03
除算 CRi ÷ CRj → CRi
その他
演算は何もしない
(CPU内レジスタ)
R8
3 F 8 0
0 0 0 0
(CPU内レジスタ)
R8
(コプロセッサ内レジスタ)
CR1
×××× ××××
実行前
3 F 8 0
0 0 0 0
(コプロセッサ内レジスタ)
CR1
3 F 8 0
0 0 0 0
実行後
211
第 7 章 実行命令細則
7.118
COPST(Store 32bit Data from Co-processor Register
to Register)
CC, CRj, Ri で構成される 16 ビットデータを u4 のチャネル番号で示されるコプロ
セッサに対して転送し , その次のサイクルにコプロセッサの出力するデータを CPU
内汎用レジスタ Ri に取り込みます。
基本的には , コプロセッサ内レジスタからのデータ転送を行います。コプロセッサ内
レジスタ CRj の保持する 32 ビットデータを CPU 内汎用レジスタ Ri へ転送します。
ただし , CC, CRj, Ri 各フィールドの解釈はコプロセッサが行うため , 実際の動作内
容はコプロセッサの仕様により決まります。
u4 で指定されるコプロセッサが実装されていない場合 , コプロセッサ不在トラップ
が発生します。
u4 で指定されたコプロセッサが以前の動作によりエラーを起こしていた場合 , コプ
ロセッサエラートラップが発生します。
■ COPST(Store 32bit Data from Co-processor Register to Register)
アセンブラ形式
COPST #u4, #CC, CRj, Ri
オペレーション
CC, CRj, Ri → ch u4 のコプロセッサ
CRj → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
(n+0)
(n+2)
212
1
LSB
0
0
1
CC
1
1
1
1
1
1
1
CRj
0
u4
Ri
第 7 章 実行命令細則
実行例
COPST #15, #4, CR2, R4
16 ビット長データをチャネル番号 15 で指定されるコプロセッサにバスを通じて転
送します。次に , コプロセッサの出力するデータがバスを通じて CPU に取り込まれ
ます。
MSB
0
LSB
0
0
0
0
1
0
0
0
0
1
0
0
1
0
0
例えば , チャネル番号 15 で指定されるコプロセッサが単精度浮動小数点演算ユニッ
トだとします。コプロセッサコマンド CC が , 表 7.118-1 のように割り当てられてい
るとすると , コプロセッサは下記のように動作します。
表 7.118-1 コプロセッサコマンド CC の条件 (COPST)
CC
演算
00
加算 CRi+CRj → CRi
01
減算 CRi-CRj → CRi
02
乗算 CRi × CRj → CRi
03
除算 CRi ÷ CRj → CRi
その他
演算は何もしない
(CPU内レジスタ)
R4
×××× ××××
(CPU内レジスタ)
R4
(コプロセッサ内レジスタ)
CR2
B F 8 0
0 0 0 0
実行前
B F 8 0
0 0 0 0
(コプロセッサ内レジスタ)
CR2
B F 8 0
0 0 0 0
実行後
213
第 7 章 実行命令細則
7.119
COPSV(Save 32bit Data from Co-processor Register
to Register)
CC, CRj, Ri で構成される 16 ビットデータを u4 のチャネル番号で示されるコプロ
セッサに対して転送し , その次のサイクルにコプロセッサの出力するデータを CPU
内汎用レジスタ Ri に取り込みます。
基本的には , コプロセッサ内レジスタからのデータ転送を行います。コプロセッサ内
レジスタ CRj の保持する 32 ビットデータを CPU 内汎用レジスタ Ri へ転送します。
ただし , CC, CRj, Ri 各フィールドの解釈はコプロセッサが行うため , 実際の動作内
容はコプロセッサの仕様により決まります。
u4 で指定されるコプロセッサが実装されていない場合 , コプロセッサ不在トラップ
が発生します。
u4 で指定されたコプロセッサが以前の動作によりエラーを起こしていた場合でも ,
コプロセッサエラートラップは発生しません。
この命令の基本的な動作は COPST 命令と同じですが , 上記エラートラップに関する
動作だけが異なります。
■ COPSV(Save 32bit Data from Co-processor Register to Register)
アセンブラ形式
COPSV #u4, #CC, CRj, Ri
オペレーション
CC, CRj, Ri → ch u4 のコプロセッサ
CRj → Ri
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+2a サイクル
命令フォーマット
MSB
(n+0)
(n+2)
214
1
LSB
0
0
1
CC
1
1
1
1
1
1
1
CRj
1
u4
Ri
第 7 章 実行命令細則
実行例
COPSV #15, #4, CR2, R4
16 ビット長データをチャネル番号 15 で指定されるコプロセッサにバスを通じて転
送します。次に , コプロセッサの出力するデータがバスを通じて CPU に取り込まれ
ます。ただし , コプロセッサにエラーが発生していても , この命令実行時はコプロ
セッサエラートラップを発生しません。
MSB
0
LSB
0
0
0
0
1
0
0
0
0
1
0
0
1
0
0
例えば , チャネル番号 15 で指定されるコプロセッサが単精度浮動小数点演算ユニッ
トだとします。コプロセッサコマンド CC が , 表 7.119-1 のように割り当てられてい
るとすると , コプロセッサは下記のように動作します。
表 7.119-1 コプロセッサコマンド CC の条件 (COPSV)
CC
演算
00
加算 CRi+CRj → CRi
01
減算 CRi-CRj → CRi
02
乗算 CRi × CRj → CRi
03
除算 CRi ÷ CRj → CRi
その他
演算は何もしない
(CPU内レジスタ)
R4
×××× ××××
(CPU内レジスタ)
R4
(コプロセッサ内レジスタ)
CR2
4 0 0 0
0 0 0 0
実行前
4 0 0 0
0 0 0 0
(コプロセッサ内レジスタ)
CR2
4 0 0 0
0 0 0 0
実行後
215
第 7 章 実行命令細則
7.120
NOP(No Operation)
何も動作しません。
■ 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
実行例
NOP
命令のビットパターン:1001 1111 1010 0000
PC
8 3 4 3
8 3 4 A
実行前
216
PC
8 3 4 3
8 3 4 C
実行後
第 7 章 実行命令細則
7.121
ANDCCR(And Condition Code Register and
Immediate Data)
コンディションコードレジスタ (CCR) のバイトデータと即値データとで論理積演算
を行い , 結果を CCR に戻します。
■ ANDCCR(And Condition Code Register and Immediate Data)
アセンブラ形式
ANDCCR #u8
オペレーション
CCR and u8 → CCR
フラグ変化
S
I
N
Z
V
C
C
C
C
C
C
C
S, I, N, Z, V, C: 演算結果に従い変化します。
実行サイクル数
c サイクル
実行サイクル数は通常 1 サイクルです。しかし , 直後の命令が R15, システムスタッ
クポインタ (SSP) またはユーザスタックポインタ (USP) に対して読出しまたは書込
みを行う命令のときは , インターロックがかかり 2 サイクルになります。
命令フォーマット
MSB
1
LSB
0
0
0
0
0
1
1
u8
実行例
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
0 1 0 1 0 0
実行後
217
第 7 章 実行命令細則
7.122
ORCCR(Or Condition Code Register and Immediate
Data)
コンディションコードレジスタ (CCR) のバイトデータと即値データとで論理和演算
を行い , 結果を CCR に戻します。
■ ORCCR(Or Condition Code Register and Immediate Data)
アセンブラ形式
ORCCR #u8
オペレーション
CCR or u8 → CCR
フラグ変化
S
I
N
Z
V
C
C
C
C
C
C
C
S, I, N, Z, V, C: 演算結果に従い変化します。
実行サイクル数
c サイクル
実行サイクル数は通常 1 サイクルです。しかし , 直後の命令が R15, システムスタッ
クポインタ (SSP) または USP に対して読出しまたは書込みを行う命令のときは , イ
ンターロックがかかり 2 サイクルになります。
命令フォーマット
MSB
1
LSB
0
0
1
0
0
1
1
u8
実行例
ORCCR #10H
命令のビットパターン:1001 0011 0001 0000
S I N Z V C
CCR
0 0 0 1 0 1
実行前
218
S I N Z V C
CCR
0 1 0 1 0 1
実行後
第 7 章 実行命令細則
7.123
STILM(Set Immediate Data to Interrupt Level Mask
Register)
即値データをプログラムステータス (PS) のインタラプトレベルマスクレジスタ
(ILM) に転送します。
即値データは , 下位 5 ビット (bit4 ∼ bit0) だけが有効です。
命令実行時の ILM の値が 16 ∼ 31 のとき , ILM に新たな値として設定できるのは 16 ∼
31 です。u8 が 0 ∼ 15 の場合は , 指定した値に 16 加算した値が ILM に転送されます。
元の値が 0 ∼ 15 のときは , 0 ∼ 31 の任意の値を ILM に転送できます。
■ STILM(Set Immediate Data to Interrupt Level Mask Register)
アセンブラ形式
STILM #u8
オペレーション
u8 → ILM
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1 サイクル
命令フォーマット
MSB
LSB
1
0
0
0
0
1
1
1
u8
実行例
STILM #14H
命令のビットパターン:1000 0111 0001 0100
ILM
1 1 1 1 1
実行前
ILM
1 0 1 0 0
実行後
219
第 7 章 実行命令細則
7.124
ADDSP(Add Stack Pointer and Immediate Data)
4 倍して符号拡張した即値データを R15 に加算します。
■ ADDSP(Add Stack Pointer and Immediate Data)
アセンブラ形式
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
実行例
ADDSP #-4
命令のビットパターン:1010 0011 1111 1111
R15
8 0 0 0
0 0 0 0
実行前
220
R15
7 F F F
F F F C
実行後
第 7 章 実行命令細則
7.125
EXTSB(Sign Extend from Byte Data to Word Data)
Ri のバイトデータを符号付き 2 進数としてワードデータに拡張します。
■ EXTSB(Sign Extend from Byte Data to Word Data)
アセンブラ形式
EXTSB Ri
オペレーション
exts(Ri) → 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
実行例
EXTSB R1
命令のビットパターン:1001 0111 1000 0001
R1
0 0 0 0
0 0 A B
実行前
R1
F F F F
F F A B
実行後
221
第 7 章 実行命令細則
7.126
EXTUB(Unsign Extend from Byte Data to Word Data)
Ri のバイトデータを符号なし 2 進数としてワードデータに拡張します。
■ EXTUB(Unsign Extend from Byte Data to Word Data)
アセンブラ形式
EXTUB Ri
オペレーション
extu(Ri) → 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
実行例
EXTUB R1
命令のビットパターン:1001 0111 1001 0001
R1
F F F F
F F F F
実行前
222
R1
0 0 0 0
0 0 F F
実行後
第 7 章 実行命令細則
7.127
EXTSH(Sign Extend from Byte Data to Word Data)
Ri のハーフワードデータを符号付き 2 進数としてワードデータに拡張します。
■ EXTSH(Sign Extend from Byte Data to Word Data)
アセンブラ形式
EXTSH Ri
オペレーション
exts(Ri) → 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
実行例
EXTSH R1
命令のビットパターン:1001 0111 1010 0001
R1
0 0 0 0
A B C D
実行前
R1
F F F F
A B C D
実行後
223
第 7 章 実行命令細則
7.128
EXTUH(Unsign Extend from Byte Data to Word Data)
Ri のハーフワードデータを符号なし 2 進数としてワードデータに拡張します。
■ EXTUH(Unsign Extend from Byte Data to Word Data)
アセンブラ形式
EXTUH Ri
オペレーション
extu(Ri) → 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
実行例
EXTUH R1
命令のビットパターン:1001 0111 1011 0001
R1
F F F F
F F F F
実行前
224
R1
0 0 0 0
F F F F
実行後
第 7 章 実行命令細則
7.129
LDM0(Load Multiple Registers)
LDM0 命令では , reglist に指定可能なレジスタは R0 ∼ R7 です ( 表 7.129-1 を参照 )。
処理の順番はレジスタ番号の昇順です。
■ LDM0(Load Multiple Registers)
アセンブラ形式
LDM0 (reglist)
オペレーション
以下の動作を reglist で示されたレジスタの数だけ繰り返します。
(R15) → Ri
R15+4 → R15
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになり
ます。
n=0 のとき
:1 サイクル
それ以外のとき :a(n-1)+b+1 サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
1
0
0
reglist
225
第 7 章 実行命令細則
表 7.129-1 reglist のビットとレジスタの対応 (LDM0)
bit
レジスタ
7
R7
6
R6
5
R5
4
R4
3
R3
2
R2
1
R1
0
R0
実行例
LDM0 (R3, R4)
命令のビットパターン:1000 1100 0001 1000
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
実行前
226
メモリ
×××× ××××
実行後
第 7 章 実行命令細則
7.130
LDM1(Load Multiple Registers)
LDM1 命令では , reglist に指定可能なレジスタは R8 ∼ R15 です ( 表 7.130-1 を参照 )。
処理の順番は , レジスタ番号の昇順です。
reglist で R15 を指定した場合 , メモリから読み出した値が最終的に R15 に入りま
す。
■ LDM1(Load Multiple Registers)
アセンブラ形式
LDM1 (reglist)
オペレーション
以下の動作を reglist で示されたレジスタの数だけ繰り返します。
(R15) → Ri
R15+4 → R15
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになり
ます。
n=0 のとき
:1 サイクル
それ以外のとき :a(n-1)+b+1 サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
1
0
1
reglist
227
第 7 章 実行命令細則
表 7.130-1 reglist のビットとレジスタの対応 (LDM1)
bit
レジスタ
7
R15
6
R14
5
R13
4
R12
3
R11
2
R10
1
R9
0
R8
実行例
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
実行前
228
メモリ
×××× ××××
実行後
第 7 章 実行命令細則
7.131
STM0(Store Multiple Registers)
STM0 命令では , reglist に指定可能なレジスタは R0 ∼ R7 です ( 表 7.131-1 を参照 )。
処理の順番はレジスタ番号の降順です。
■ STM0(Store Multiple Registers)
アセンブラ形式
STM0 (reglist)
オペレーション
以下の動作を reglist で示されたレジスタの数だけ繰り返します。
R15-4 → R15
Ri → (R15)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになり
ます。
a × n+1 サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
1
1
0
reglist
表 7.131-1 reglist のビットとレジスタの対応 (STM0)
bit
レジスタ
7
R0
6
R1
5
R2
4
R3
3
R4
2
R5
1
R6
0
R7
229
第 7 章 実行命令細則
実行例
STM0 (R2, R3)
命令のビットパターン:1000 1110 0011 0000
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
実行前
230
メモリ
×××× ××××
実行後
第 7 章 実行命令細則
7.132
STM1(Store Multiple Registers)
STM1 命令では , reglist に指定可能なレジスタは R8 ∼ R15 です ( 表 7.132-1 を参照 )。
処理の順番はレジスタ番号の降順です。
reglist で R15 を指定した場合 , 命令実行前に R15 が保持していた値がメモリに書き
込まれます。
■ STM1(Store Multiple Registers)
アセンブラ形式
STM1 (reglist)
オペレーション
以下の動作を reglist で示されたレジスタの数だけ繰り返します。
R15-4 → R15
Ri → (R15)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
reglist で指定したレジスタの数を n とすると , 実行サイクル数は以下のようになり
ます。
a × n+1 サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
1
1
1
reglist
231
第 7 章 実行命令細則
表 7.132-1 reglist のビットとレジスタの対応 (STM1)
bit
レジスタ
7
R8
6
R9
5
R10
4
R11
3
R12
2
R13
1
R14
0
R15
実行例
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
実行前
232
メモリ
×××× ××××
実行後
第 7 章 実行命令細則
7.133
ENTER(Enter Function)
高級言語用のスタックフレーム生成処理を行います。
u8 は符号なしで計算します。
■ ENTER(Enter Function)
アセンブラ形式
ENTER #u10
オペレーション
R14 → (R15-4)
R15 - 4 → R14
R15 - extu(u8 × 4) → R15
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
1+a サイクル
233
第 7 章 実行命令細則
命令フォーマット
MSB
0
LSB
0
0
0
1
1
1
1
u8
実行例
ENTER #0CH
命令のビットパターン:0000 1111 0000 0011
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
×××× ××××
実行前
234
メモリ
0 0 0 0
実行後
第 7 章 実行命令細則
7.134
LEAVE(Leave Function)
高級言語用のスタックフレーム開放処理を行います。
■ LEAVE(Leave Function)
アセンブラ形式
LEAVE
オペレーション
R14+4 → R15
(R15-4) → R14
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
b サイクル
命令フォーマット
MSB
1
LSB
0
0
1
1
1
1
1
1
0
0
1
0
0
0
0
実行例
LEAVE
命令のビットパターン:1001 1111 1001 0000
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
実行前
0 0 0 0
実行後
235
第 7 章 実行命令細則
7.135
XCHB(Exchange Byte Data)
Rj が示すバイトアドレスの内容と Ri の内容を交換します。
Rj が示すバイトアドレスへは , 元の Ri の下位 8 ビットのデータが転送され , Ri には
Rj が示すアドレスの元のデータがゼロ拡張して転送されます。
この命令におけるメモリリード動作とメモリライト動作の間では , CPU はホールド
要求を受け付けません。
■ XCHB(Exchange Byte Data)
アセンブラ形式
XCHB @Rj, Ri
オペレーション
Ri → TEMP
extu((Rj)) → Ri
TEMP → (Rj)
フラグ変化
N
Z
V
C
-
-
-
-
N, Z, V, C: 変化しません。
実行サイクル数
2a サイクル
命令フォーマット
MSB
1
LSB
0
0
0
1
0
1
0
Rj
Ri
実行例
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
××
実行前
236
メモリ
実行後
付録
FR ファミリ CPU の命令一覧と命令マップを示し
ます。
付録 A 命令一覧
付録 B 命令マップ
237
付録
付録 A
命令一覧
FR ファミリ CPU の命令一覧の記号の意味と命令一覧表を示します。
A.1 命令一覧表の記号の意味
A.2 命令一覧表
238
付録 A 命令一覧
A.1
命令一覧表の記号の意味
命令一覧表に用いている記号の意味を説明します。
■ 命令一覧表に用いている記号の意味
● ニーモニック欄および動作欄
i4
4 ビット即値を示し , ゼロ拡張の場合は 0 ∼ 15, マイナス拡張の場合は -16 ∼ -1 の
指定になります。
i8
符号なし 8 ビット即値を示し , 0 ∼ 255 まで指定できます。
i20
符号なし 20 ビット即値を示し , 00000H ∼ FFFFFH まで指定できます。
i32
符号なし 32 ビット即値を示し , 00000000H ∼ FFFFFFFFH まで指定できます。
s8
符号付き 8 ビット即値を示し , -128 ∼ 127 まで指定できます。
s10
符号付き 10 ビット即値を示し , -512 ∼ 508 まで指定できます (4 の倍数 )。
u4
符号なし 4 ビット即値を示し , 0 ∼ 15 まで指定できます。
u8
符号なし 8 ビット即値を示し , 0 ∼ 255 まで指定できます。
u10
符号なし 10 ビット即値を示し , 0 ∼ 1020 まで指定できます (4 の倍数 )。
udisp6
符号なし 6 ビットアドレス値を示し , 0 ∼ 60 まで指定できます (4 の倍数 )。
disp8
符号付き 8 ビットアドレス値を示し , -0x80 ∼ 0x7F まで指定できます。
disp9
符号付き 9 ビットアドレス値を示し , -0x100 ∼ 0xFE まで指定できます (2 の倍数 )。
disp10
符号付き 10ビットアドレス値を示し, -0x200 ∼ 0x1FC まで指定できます (4の倍数)。
dir8
符号なし 8 ビットアドレス値を示し , 0 ∼ 0xFF まで指定できます。
dir9
符号なし 9 ビットアドレス値を示し , 0 ∼ 0x1FE まで指定できます (2 の倍数 )。
239
付録
dir10
符号なし 10 ビットアドレス値を示し , 0 ∼ 0x3FC まで指定できます (4 の倍数 )。
label9
符号付き 9 ビット分岐アドレスを示し , PC の値に対して -0x100 ∼ 0xFE まで指定で
きます (2 の倍数 )。
label12
符号付き 12 ビット分岐アドレスを示し , PC の値に対して -0x800 ∼ 0x7FE まで指定
できます (2 の倍数 )。
Ri, Rj
汎用レジスタ (R00 ∼ R15) を示します。
Rs
専用レジスタ (TBR, RP, USP, SSP, MDH, MDL) を示します。
● 動作欄
extu( )
ゼロ拡張操作を示し , 上位ビットの欠けている部分に "0" を補います。
extn( )
マイナス拡張操作を示し , 上位ビットの欠けている部分に "1" を補います。
exts( )
符号拡張操作を示し , () のデータの MSB が "0" ならばゼロ拡張操作をし , MSB が
"1" ならばマイナス拡張操作をします。
()
間接アドレッシングを示します。( ) 内のレジスタまたは式の示すアドレスのメモリ
読出し・書込み値です。
{}
演算の優先順位を明示するための括弧になります。( ) を間接アドレス指定に使用し
ているため , { } を使用します。
● 型欄
A ∼ F は「6.1 命令フォーマット」の TYPE-A ∼ TYPE-F に対応します。
● OP 欄
オペコードの表記は型欄の内容により , 以下のように分かれます。
型欄が A, C, D
OP の 8 ビットを 16 進数 2 桁で示します。
型欄が B
OP の上位 4 ビットを上位 , 下位は "0" とした 16 進数 2 桁で示します。
型欄が E
OP の上位 8 ビットを上位 2 桁 , SUB-OP の 4 ビットを次の 1 桁 , 残りを "0" とした
16 進数 4 桁で示します。
型欄が F
OP の上位 5 ビットを上位 , 不足分は "0" を詰めた 16 進数 2 桁で示します。
240
付録 A 命令一覧
● CYC 欄
数値はマシンサイクルで , a ∼ d の最小は 1 サイクルです。
a
メモリアクセスサイクルで , レディ機能により延びる可能性があります。
b
メモリアクセスサイクルで , レディ機能により延びる可能性があります。ただし ,
LD動作の対象となるレジスタを直後の命令が参照する場合には,インターロックが
かかり , 実行サイクル数が 1 サイクル増えて 2 サイクルになります。
c
直後の命令が R15, SSP または USP に対して読出しや書込みを行う命令のとき , ま
たは命令フォーマットが TYPE-A の命令のときにインターロックがかかり実行サイ
クル数が 1 サイクル増えて 2 サイクルになります。
d
直後の命令が MDH/MDL を参照するときにインターロックがかかり , 実行サイクル
数が 1 サイクル増えて 2 サイクルになります。ただし , DIV1 命令の直後に , 専用レ
ジスタ (TBR, RP, USP, SSP, MDH, MDL) を ST Rs,@-R15 命令でアクセスすると , 常
にインターロックがかかり , 実行サイクル数が 1 サイクル増えて 2 サイクルになり
ます。
● FLAG 欄
C
操作の結果で変化します。
変化しません。
0
"0" になります。
1
"1" になります。
241
付録
A.2
命令一覧表
FR ファミリ CPU の命令数は全部で 165 あり , 以下の 16 種類に分類しています。
この命令を表 A.2-1 ∼表 A.2-16 に示します。
• 加減算命令 (10 命令 )
• 比較演算命令 (3 命令 )
• 論理演算命令 (12 命令 )
• ビット操作演算命令 (8 命令 )
• 乗除算命令 (10 命令 )
• シフト演算命令 (9 命令 )
• 即値データ転送命令 (3 命令 )
• メモリロード命令 (13 命令 )
• メモリストア命令 (13 命令 )
• レジスタ間転送命令 / 専用レジスタ転送命令 (5 命令 )
• 遅延なし分岐命令 (23 命令 )
• 遅延分岐命令 (20 命令 )
• ダイレクトアドレス指定命令 (14 命令 )
• リソース命令 (2 命令 )
• コプロセッサ命令 (4 命令 )
• その他の命令 (16 命令 )
242
付録 A 命令一覧
■ 命令一覧表
表 A.2-1 加減算命令 (10 命令 )
型
OP
CYC
FLAG
NZVC
ADD Rj, Ri
ADD #i4, Ri
ADD2 #i4, Ri
A
C
C
A6
A4
A5
1
1
1
CCCC
CCCC
CCCC
Ri+Rj → Ri
Ri+extu (i4) → Ri
Ri+extn (i4) → Ri
ゼロ拡張
マイナス拡張
ADD CRj, Ri
A
A7
1
CCCC
Ri+Rj+c → Ri
キャリ付き加算
ADDN Rj, Ri
ADDN #i4, Ri
ADDN2 #i4, Ri
A
C
C
A2
A0
A1
1
1
1
----------
Ri+Rj → Ri
Ri+extu (i4) → Ri
Ri+extn (i4) → Ri
ゼロ拡張
マイナス拡張
SUB Rj, Ri
A
AC
1
CCCC
Ri-Rj → Ri
SUB CRj, Ri
A
AD
1
CCCC
Ri-Rj-c → Ri
SUBN Rj, Ri
A
AE
1
----
型
OP
CYC
FLAG
NZVC
A
C
C
AA
A8
A9
1
1
1
CCCC
CCCC
CCCC
Ri-Rj
Ri-extu (i4)
Ri-extn (i4)
型
OP
CYC
FLAG
NZVC
動作
AND Rj, Ri
AND Rj, @Ri
ANDH Rj, @Ri
ANDB Rj, @Ri
A
A
A
A
82
84
85
86
1
1+2a
1+2a
1+2a
CC-CC-CC-CC--
Ri &=Rj
(Ri) &=Rj
(Ri) &=Rj
(Ri) &=Rj
−
○
○
○
ワード
ワード
ハーフワード
バイト
OR Rj, Ri
OR Rj, @Ri
ORH Rj, @Ri
ORB Rj, @Ri
A
A
A
A
92
94
95
96
1
1+2a
1+2a
1+2a
CC-CC-CC-CC--
Ri|=Rj
(Ri)|=Rj
(Ri)|=Rj
(Ri)|=Rj
−
○
○
○
ワード
ワード
ハーフワード
バイト
EOR Rj, Ri
EOR Rj, @Ri
EORH Rj, @Ri
EORB Rj, @Ri
A
A
A
A
9A
9C
9D
9E
1
1+2a
1+2a
1+2a
CC-CC-CC-CC--
Ri^=Rj
(Ri)^=Rj
(Ri)^=Rj
(Ri)^=Rj
−
○
○
○
ワード
ワード
ハーフワード
バイト
ニーモニック
動作
備考
キャリ付き減算
Ri-Rj → Ri
表 A.2-2 比較演算命令 (3 命令 )
ニーモニック
CMP Rj, Ri
CMP #i4, Ri
CMP2 #i4, Ri
動作
備考
ゼロ拡張
マイナス拡張
表 A.2-3 論理演算命令 (12 命令 )
ニーモニック
RMW
備考
243
付録
表 A.2-4 ビット操作演算命令 (8 命令 )
ニーモニック
FLAG
NZVC
OP CYC
型
80
81
1+2a
1+2a
-------
RMW
備考
(Ri) &= {F0 H+u4}
○
下位4ビットを操作
(Ri) &={ {u4 << 4} +F H}
○
上位4ビットを操作
動作
BANDL #u4, @Ri (u4:0 ∼ 0F H)
BANDH #u4, @Ri (u4:0 ∼ 0F H)
C
C
BORL #u4, @Ri (u4:0 ∼ 0F H)
BORH #u4, @Ri (u4:0 ∼ 0F H)
C
C
90
91
1+2a
1+2a
-------
(Ri)|=u4
(Ri)|= {u4 << 4}
○
○
下位4ビットを操作
上位4ビットを操作
BEORL #u4, @Ri (u4:0 ∼ 0F H)
BEORH #u4, @Ri (u4:0 ∼ 0F H)
C
C
98
99
1+2a
1+2a
-------
(Ri)^=u4
(Ri)^ {u4 << 4}
○
○
下位4ビットを操作
上位4ビットを操作
BTSTL #u4, @Ri (u4:0 ∼ 0F H)
BTSTH #u4, @Ri (u4:0 ∼ 0F H)
C
C
88
89
2+a
2+a
−
−
下位4ビットテスト
上位4ビットテスト
0C-- (Ri) &u4
CC-- (Ri) & {u4 << 4}
表 A.2-5 乗除算命令 (10 命令 )
型
OP
CYC
FLAG
NZVC
動作
MUL Rj, Ri
MULU Rj, Ri
MULH Rj, Ri
MULUH Rj, Ri
A
A
A
A
AF
AB
BF
BB
5
5
3
3
CCCCCCCC-CC--
Rj × Ri → MDH, MDL
Rj × Ri → MDH, MDL
Rj × Ri → MDL
Rj × Ri → MDL
DIV0S Ri
DIV0U Ri
DIV1 Ri
DIV2 Ri
DIV3
DIV4S
E
E
E
E
E
E
97-4
97-5
97-6
97-7
9F-6
9F-7
1
1
d
1
1
1
-------C-C
-C-C
-------
ニーモニック
備考
32 × 32 ビット =64 ビット
符号なし
16 × 16 ビット =32 ビット
符号なし
ステップ演算
32/32 ビット =32 ビット
表 A.2-6 シフト演算命令 (9 命令 )
型
OP
CYC
FLAG
NZVC
LSL Rj, Ri
LSL #u4, Ri
LSL2 #u4, Ri
A
C
C
B6
B4
B5
1
1
1
CC-C
CC-C
CC-C
Ri << Rj → Ri
Ri << u4 → Ri
Ri << {u4+16} → Ri
論理シフト
LSR Rj, Ri
LSR #u4, Ri
LSR2 #u4, Ri
A
C
C
B2
B0
B1
1
1
1
CC-C
CC-C
CC-C
Ri >> Rj → Ri
Ri >> u4 → Ri
Ri >> {u4+16} → Ri
論理シフト
ASR Rj, Ri
ASR #u4, Ri
ASR2 #u4, Ri
A
C
C
BA
B8
B9
1
1
1
CC-C
CC-C
CC-C
Ri >> Rj → Ri
Ri >> u4 → Ri
Ri >> {u4+16} → Ri
算術シフト
ニーモニック
244
動作
備考
付録 A 命令一覧
表 A.2-7 即値データ転送命令 ( 即値セット /16 ビット /32 ビット即値転送命令 )(3 命令 )
ニーモニック
LDI:32 #i32, Ri
LDI:20 #i20, Ri
LDI:8 #i8, Ri
型
OP
CYC
FLAG
NZVC
E
C
B
9F-8
9B
C0
3
2
1
----------
動作
備考
i32 → Ri
i20 → Ri
i8 → Ri
上位 12 ビットはゼロ
上位 24 ビットはゼロ
表 A.2-8 メモリロード命令 (13 命令 )
型
OP
CYC
FLAG
NZVC
LD @Rj, Ri
LD @(R13, Rj), Ri
LD @(R14, disp10), Ri
LD @(R15, udisp6), Ri
LD @R15+, Ri
LD @R15+, Rs
LD @R15+, PS
A
A
B
C
E
E
E
04
00
20
03
07-0
07-8
07-9
b
b
b
b
b
b
1+a+b
------------------CCCC
LDUH @Rj, Ri
LDUH @(R13, Rj), Ri
LDUH @(R14, disp9), Ri
A
A
B
05
01
40
b
b
b
----------
(Rj) → Ri
(R13+Rj) → Ri
(R14+disp9) → Rj
ゼロ拡張
ゼロ拡張
ゼロ拡張
LDUB @Rj, Ri
LDUB @(R13, Rj), Ri
LDUB @(R14, disp8), Ri
A
A
B
06
02
60
b
b
b
----------
(Rj) → Ri
(R13+Rj) → Ri
(R14+disp8) → Ri
ゼロ拡張
ゼロ拡張
ゼロ拡張
ニーモニック
動作
(Rj) → Ri
(R13+Rj) → Ri
(R14+disp10) → Ri
(R15+udisp6) → Ri
(R15) → Ri, R15+=4
(R15) → Rs, R15+=4
(R15) → PS, R15+=4
備考
Rs: 専用レジスタ
<注意事項>
命令フォーマット中の TYPE-B の o8 および TYPE-C の u4 フィールドと , アセンブラ記
述の disp8 ∼ disp10 の関係は以下のようになっています。
disp8 → o8=disp8
disp9 → o8=disp9 >>1
disp10 → o8=disp10 >>2
udisp6 → u4=udisp6 >>2
245
付録
表 A.2-9 メモリストア命令 (13 命令 )
型
OP
CYC
FLAG
NZVC
ST Ri, @Rj
ST Ri, @(R13, Rj)
ST Ri, @(R14, disp10)
ST Ri, @(R15, udisp6)
ST Ri, @-R15
ST Rs, @-R15
ST PS, @-R15
A
A
B
C
E
E
E
14
10
30
13
17-0
17-8
17-9
a
a
a
a
a
a
a
----------------------
Ri → (Rj)
Ri → (R13+Rj)
Ri → (R14+disp10)
Ri → (R15+udisp6)
R15-=4, Ri → (R15)
R15-=4, Rs → (R15)
R15-=4, PS → (R15)
ワード
ワード
ワード
STH Ri, @Rj
STH Ri, @(R13, Rj)
STH Ri, @(R14, disp9)
A
A
B
15
11
50
a
a
a
----------
Ri → (Rj)
Ri → (R13+Rj)
Ri → (R14+disp9)
ハーフワード
ハーフワード
ハーフワード
STB Ri, @Rj
STB Ri, @(R13, Rj)
STB Ri, @(R14, disp8)
A
A
B
16
12
70
a
a
a
----------
Ri → (Rj)
Ri → (R13+Rj)
Ri → (R14+disp8)
バイト
バイト
バイト
ニーモニック
動作
備考
Rs: 専用レジスタ
<注意事項>
命令フォーマット中の TYPE-B の o8 および TYPE-C の u4 フィールドと , アセンブラ記
述の disp8 ∼ disp10 の関係は以下のようになっています。
disp8 → o8=disp8
disp9 → o8=disp9 >>1
disp10 → o8=disp10 >>2
udisp6 → u4=udisp6 >>2
表 A.2-10 レジスタ間転送命令 / 専用レジスタ転送命令 (5 命令 )
ニーモニック
MOV Rj, Ri
MOV Rs, Ri
MOV Ri, Rs
MOV PS, Ri
MOV Ri, PS
246
型
OP
CYC
FLAG
NZVC
A
A
A
E
E
8B
B7
B3
17-1
07-1
1
1
1
1
c
------------CCCC
動作
Rj → Ri
Rs → Ri
Ri → Rs
PS → Ri
Ri → PS
備考
汎用レジスタ間転送
Rs: 専用レジスタ
Rs: 専用レジスタ
付録 A 命令一覧
表 A.2-11 遅延なし分岐命令 (23 命令 )
型
OP
CYC
FLAG
NZVC
JMP @Ri
E
97-0
2
----
Ri → PC
CALL label12
CALL @Ri
F
E
D0
97-1
2
2
-------
PC+2 → RP, PC+2+rel11 × 2 → PC
PC+2 → RP, Ri → PC
RET
E
97-2
2
----
RP → PC
INT #u8
D
1F
3+3a
----
SSP-=4, PS→ (SSP) , SSP-=4, PC+2→ (SSP) ,
0 → I フラグ , 0 → S フラグ ,
(TBR+3FC-u8 × 4) → PC
INTE
E
9F-3
3+3a
----
SSP-=4, PS→ (SSP) , SSP-=4, PC+2→ (SSP) ,
0 → S フラグ , 4 → ILM,
(TBR+3D8-u8 × 4) → PC
RETI
E
97-3
2+2a
CCCC
(R15) → PC, R15+=4, (R15) → PS, R15+=4
BNO label9
BRA 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
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E1
E0
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
1
2
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
2/1
-------------------------------------------------
非分岐
PC+2+rel8 × 2 → PC
PC+2+rel8 × 2 → PC if Z==1
PC+2+rel8 × 2 → PC if Z==0
PC+2+rel8 × 2 → PC if C==1
PC+2+rel8 × 2 → PC if C==0
PC+2+rel8 × 2 → PC if N==1
PC+2+rel8 × 2 → PC if N==0
PC+2+rel8 × 2 → PC if V==1
PC+2+rel8 × 2 → PC if V==0
PC+2+rel8 × 2 → PC if V xor N==1
PC+2+rel8 × 2 → PC if V xor N==0
PC+2+rel8 × 2 → PC if (V xor N) or Z==1
PC+2+rel8 × 2 → PC if (V xor N) or Z==0
PC+2+rel8 × 2 → PC if C or Z==1
PC+2+rel8 × 2 → PC if C or Z==0
ニーモニック
動作
備考
リターン
<注意事項>
• 命令フォーマット中の TYPE-D の rel8 および TYPE-F の rel11 フィールドと , アセンブ
ラ記述の label9, label12 の関係は以下のようになっています。
label9 → rel8=(label9-PC-2)/2
label12 → rel11=(label12-PC-2)/2
• CYC 欄の "2/1" は , 分岐するときは 2, 分岐しないときは 1 を示します。
• RETI を実行するときは S フラグが "0" である必要があります。
247
付録
表 A.2-12 遅延分岐命令 (20 命令 )
型
OP
CYC
FLAG
NZVC
JMP:D @Ri
E
9F-0
1
----
Ri → PC
CALL:D label12
CALL:D @Ri
F
E
D8
9F-1
1
1
-------
PC+4 → RP, PC+2+rel11 × 2 → PC
PC+4 → RP, Ri → PC
RET:D
E
9F-2
1
----
RP → PC
BNO:D label9
BRA:D label9
BEQ:D label9
BNE:D label9
BC:D label9
BNC:D label9
BN:D label9
BP:D label9
BV:D label9
BNV:D label9
BLT:D label9
BGE:D label9
BLE:D label9
BGT:D label9
BLS:D label9
BHI:D label9
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
F1
F0
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
-------------------------------------------------
非分岐
PC+2+rel8 × 2 → PC
PC+2+rel8 × 2 → PC if Z==1
PC+2+rel8 × 2 → PC if Z==0
PC+2+rel8 × 2 → PC if C==1
PC+2+rel8 × 2 → PC if C==0
PC+2+rel8 × 2 → PC if N==1
PC+2+rel8 × 2 → PC if N==0
PC+2+rel8 × 2 → PC if V==1
PC+2+rel8 × 2 → PC if V==0
PC+2+rel8 × 2 → PC if V xor N==1
PC+2+rel8 × 2 → PC if V xor N==0
PC+2+rel8 × 2 → PC if (V xor N) or Z==1
PC+2+rel8 × 2 → PC if (V xor N) or Z==0
PC+2+rel8 × 2 → PC if C or Z==1
PC+2+rel8 × 2 → PC if C or Z==0
ニーモニック
動作
備考
リターン
<注意事項>
• 命令フォーマット中の TYPE-D の rel8 および TYPE-F の rel11 フィールドと , アセンブ
ラ記述の label9, label12 の関係は以下のようになっています。
label9 → rel8=(label9-PC-2)/2
label12 → rel11=(label12-PC-2)/2
• 遅延分岐命令は必ず次の命令 ( 遅延スロット ) を実行してから分岐します。
• 遅延スロットに置くことができる命令は,以下の条件のいずれかに一致する必要があり
ます。
これ以外の命令を置くと , 置いた命令の定義動作以外の動作を行うことがあります。
- 分岐命令以外の , CYC 欄に 1 と記述された命令
- CYC 欄に a, b, c, d と記述された命令
248
付録 A 命令一覧
表 A.2-13 ダイレクトアドレス指定命令 (14 命令 )
型
OP
CYC
FLAG
NZVC
動作
DMOV @dir10, R13
DMOV R13, @dir10
DMOV @dir10, @R13+
DMOV @R13+, @dir10
DMOV @dir10, @-R15
DMOV @R15+, @dir10
D
D
D
D
D
D
08
18
0C
1C
0B
1B
b
a
2a
2a
2a
2a
-------------------
(dir10) → R13
R13 → (dir10)
(dir10) → (R13) , R13+=4
(R13) → (dir10) , R13+=4
R15-=4, (dir10) → (R15)
(R15) → (dir10) , R15+=4
ワード
ワード
ワード
ワード
ワード
ワード
DMOVH @dir9, R13
DMOVH R13, @dir9
DMOVH @dir9, @R13+
DMOVH @R13+, @dir9
D
D
D
D
09
19
0D
1D
b
a
2a
2a
-------------
(dir9) → R13
R13 → (dir9)
(dir9) → (R13) , R13+=2
(R13) → (dir9) , R13+=2
ハーフワード
ハーフワード
ハーフワード
ハーフワード
DMOVB @dir8, R13
DMOVB R13, @dir8
DMOVB @dir8, @R13+
DMOVB @R13+, @dir8
D
D
D
D
0A
1A
0E
1E
b
a
2a
2a
-------------
(dir8) → R13
R13 → (dir8)
(dir8) → (R13) , R13++
(R13) → (dir8) , R13++
バイト
バイト
バイト
バイト
ニーモニック
備考
<注意事項>
命令フォーマット中の TYPE-D の dir フィールドとアセンブラ記述の dir8 ∼ dir10 の関係
は以下のようになっています。
dir8 → dir=dir8
dir9 → dir=dir9 >>1
dir10 → dir=dir10 >>2
表 A.2-14 リソース命令 (2 命令 )
型
OP
CYC
FLAG
NZVC
LDRES @Ri+, #u4
C
BC
a
----
(Ri) → u4 のリソース
Ri+=4
u4: チャネル番号
STRES #u4, @Ri+
C
BD
a
----
u4 のリソース→ (Ri)
Ri+=4
u4: チャネル番号
ニーモニック
動作
備考
249
付録
表 A.2-15 コプロセッサ命令 (4 命令 )
ニーモニック
COPOP #u4, #CC, CRj, CRi
COPLD #u4, #CC, Rj, CRi
COPST #u4, #CC, CRj, Ri
COPSV #u4, #CC, CRj, Ri
型
OP
CYC
FLAG
NZVC
E
E
E
E
9F-C
9F-D
9F-E
9F-F
2+a
1+2a
1+2a
1+2a
-------------
動作
演算指示
Rj → CRi
CRj → Ri
CRj → Ri
備考
エラートラップなし
表 A.2-16 その他の命令 (16 命令 )
ニーモニック
型
OP
CYC
FLAG
NZVC
NOP
E
9F-A
1
----
ANDCCR #u8
ORCCR #u8
D
D
83
93
c
c
STILM #u8
D
87
1
----
u8 → ILM
−
ILM 即値セット
ADDSP #s10
D
A3
1
----
R15+=s10
−
ADDSP 命令
EXTSB Ri
EXTUB Ri
EXTSH Ri
EXTUH Ri
E
E
E
E
97-8
97-9
97-A
97-B
1
1
1
1
-------------
符号拡張 8 → 32 ビット
ゼロ拡張 8 → 32 ビット
符号拡張 16 → 32 ビット
ゼロ拡張 16 → 32 ビット
−
−
−
−
LDM0 (reglist)
D
8C
注意事項
を参照
-------
−
ロードマルチ R0 ∼ R7
LDM1 (reglist)
D
8D
(R15) → reglist,
R15 インクリメント
(R15) → reglist,
R15 インクリメント
−
ロードマルチ R8 ∼ R15
STM0 (reglist)
D
8E
−
ストアマルチ R0 ∼ R7
STM1 (reglist)
D
8F
R15 ディクリメント ,
reglist → (R15)
R15 ディクリメント ,
reglist → (R15)
−
ストアマルチ R8 ∼ R15
ENTER #u10
D
0F
1+a
----
R14 → (R15-4) ,
R15-4 → R14,
R15-u10 → R15
−
関数の入口処理
LEAVE
E
9F-9
b
----
R14+4 → R15,
(R15-4) → R14
−
関数の出口処理
XCHB @Rj, Ri
A
8A
2a
----
Ri → TEMP
(Rj) → Ri
TEMP → (Rj)
○
セマフォ管理用
バイトデータ
250
注意事項
を参照
動作
何も変化しない
CCCC CCRandu8 → CCR
CCCC CCRoru8 → CCR
-------
RMW
備考
−
−
−
付録 A 命令一覧
<注意事項>
• ADDSP 命令において , 命令フォーマット中の TYPE-D の s8 とアセンブラ記述の s10
の関係は以下のようになっています。
s10 → s8 = s10 >> 2
• ENTER 命令において , 命令フォーマット中の TYPE-D の u8 とアセンブラ記述の u10
の関係は以下のようになっています。
u10 → u8 = u10 >> 2
• LDM0(reglist), LDM1(reglist) の実行サイクル数は , 指定されたレジスタ数が n のとき ,
a × (n-1)+b+1 サイクルとなります。
• STM0(reglist), STM1(reglist) の実行サイクル数は , 指定されたレジスタ数が n のとき ,
a × n+1 サイクルとなります。
251
付録
付録 B
命令マップ
FR ファミリ CPU の命令マップと E フォーマットを示します。
B.1 命令マップ
B.2 E フォーマット
252
ANDB Rj,
@Ri
LDUB @Rj, STB Ri,
Ri
@Rj
6
MOV Rj, Ri
LDM0
(reglist)
LDM1
(reglist)
STM0
(reglist)
STM1
(reglist)
DMOVH
R13, @d9
DMOVB
R13, @d8
DMOVH
@d9, R13
DMOVB
@d8, R13
DMOV @d10, DMOV
@-R15
@R15+, @d10
DMOV @d10, DMOV
@R13+
@R13+, @d10
DMOVH
DMOVH
@d9, @R13+ @R13+, @d9
DMOVB
DMOVB
@d8, @R13+ @R13+, @d8
ENTER
#u10
9
A
B
C
D
E
F
MOV Rs, Ri
CALL:D
label12
BNV label9
BV label9
BP label9
E format
EORB Rj,
@Ri
EORH Rj,
@Ri
EOR Rj,
@Ri
MUL Rj, Ri
SUBN Rj,
Ri
SUBC Rj,
Ri
SUB Rj, Ri
MULH Rj,
Ri
STRES #u4,
@Ri+
LDRES
@Ri+,#u4
MULUH Rj,
Ri
BHI label9
BLS label9
BGT label9
BLE label9
BGE label9
ASR2 #u4,
Ri
LDI:8 #i8,
Ri
BN label9
BNC label9
BC label9
BNE label9
BEQ label9
BNO label9
BRA label9
E
LD:20 #i20, MULU Rj,
Ri
Ri
CMP2 #i4,
Ri
CMP #i4, Ri ASR #u4, Ri
ADDC Rj,
Ri
CALL
label12
D
BLT label9
BEORH
#u4, @Ri
LSL2 #u4,
Ri
MOV Ri, Rs
ADD Rj, Ri LSL Rj, Ri
ADD2 #i4,
Ri
ADDSP
#s10
C
XCHB @Rj,
EOR Rj, Ri CMP Rj, Ri ASR Rj, Ri
Ri
BTSTH
#u4, @Ri
BTSTL #u4, BEORL
@Ri
#u4, @Ri
DMOV
DMOV
@d10, R13 R13, @d10
8
INT #u8
ORB Rj,
@Ri
ORH Rj,
@Ri
STILM #u8 E format
E format
7
STRi, @(R [email protected](R14 STHRi, @(R [email protected](R1 STBRi,
4, disp8), Ri @(R14, disp8)
14, disp10) , disp9), Ri 14, disp9)
ANDH Rj,
@Ri
STH Ri,
@Rj
LDUH @
Rj, Ri
5
[email protected](R14,
disp10), Ri
OR Rj, @Ri ADD #i4, Ri LSL #u4, Ri
AND Rj,
@Ri
LD @Rj, Ri ST Ri, @Rj
4
E format
ORCCR #u8
LSR Rj, Ri
LSR2 #u4,
Ri
ANDCCR
#u8
ADDN Rj,
Ri
BORH #u4, ADDN2
@Ri
#i4, Ri
LD @ (R15, ST Ri,
udisp6), Ri @(R15, ud6)
B
3
A
BORL #u4, ADDN #i4,
LSR #u4, Ri
@Ri
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
0
0
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
下位 4 ビット
上位 4 ビット
付録 B 命令マップ
命令マップ
FR ファミリ CPU の命令マップを示します。
■ 命令マップ
図 B.1-1 命令マップ
253
付録
E フォーマット
B.2
FR ファミリ CPU の E フォーマットを示します。
■ E フォーマット
表 B.2-1 E フォーマット
上位 8 ビット
下位 4 ビット
07
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
−
−
RET
RET:D
3
−
−
RETI
INTE
4
−
−
DIV0S Ri
−
5
−
−
DIV0U Ri
−
6
−
−
DIV1 Ri
DIV3
7
−
−
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
NOP
A
−
−
EXTSH Ri
B
−
−
EXTUH Ri
C
−
−
−
COPOP #u4,
#CC,CRj,CRi
D
−
−
−
COPLD #u4,
#CC,Rj,CRi
E
−
−
−
COPST #u4,
#CC,CRj,Ri
F
−
−
−
COPSV #u4,
#CC,CRj,Ri
−:未定義
254
17
−
索引
索引
A
ADD
ADD (Add 4bit Immediate Data to Destination
Register) ..............................................................75
ADD (Add Word Data of Source Register to
Destination Register) ..........................................74
ADD2
ADD2 (Add 4bit Immediate Data to Destination
Register) ..............................................................76
ADDC
ADDC(Add Word Data of Source Register and Carry
Bit to Destination Register) ................................77
ADDN
ADDN (Add Immediate Data to Destination
Register) ..............................................................79
ADDN (Add Word Data of Source Register to
Destination Register) ..........................................78
ADDN2
ADDN2 (Add Immediate Data to Destination
Register) ..............................................................80
ADDSP
ADDSP (Add Stack Pointer and
Immediate Data) ...............................................220
AND
AND (And Word Data of Source Register to Data in
Memory) .............................................................88
AND (And Word Data of Source Register to
Destination Register) ..........................................87
ANDB
ANDB (And Byte Data of Source Register to Data in
Memory) .............................................................91
ANDCCR
ANDCCR (And Condition Code Register and
Immediate Data) ...............................................217
ANDH
ANDH (And Halfword Data of Source Register to Data
in Memory) .........................................................89
ASR
ASR (Arithmetic shift to the Right
Direction) ..................................................135, 136
ASR2
ASR2 (Arithmetic shift to the Right Direction)
..........................................................................137
B
BANDH
BANDH (And 4bit Immediate Data to Higher 4bit of
Byte Data in Memory) ......................................108
BANDL
BANDL (And 4bit Immediate Data to Lower 4bit of
Byte Data in Memory) ......................................107
Bcc
Bcc (Branch relative if Condition satisfied) ...........184
Bcc:D
Bcc:D (Branch relative if Condition satisfied) ....... 190
BEORH
BEORH (Eor 4bit Immediate Data to Higher 4bit of
Byte Data in Memory) ...................................... 112
BEORL
BEORL (Eor 4bit Immediate Data to Lower 4bit of
Byte Data in Memory) ...................................... 111
BORH
BORH (Or 4bit Immediate Data to Higher 4bit of Byte
Data in Memory) .............................................. 110
BORL
BORL (Or 4bit Immediate Data to Lower 4bit of Byte
Data in Memory) .............................................. 109
BTSTH
BTSTH (Test Higher 4bit of Byte Data
in Memory) ....................................................... 114
BTSTL
BTSTL (Test Lower 4bit of Byte Data
in Memory) ....................................................... 113
C
CALL
CALL (Call Subroutine) .................................175, 176
CALL:D
CALL:D (Call Subroutine) .............................187, 188
CCR
コンディションコードレジスタ
(CCR: bit07 ∼ bit00) .........................................21
CMP
CMP (Compare Immediate Data of Source Register and
Destination Register) .......................................... 85
CMP (Compare Word Data in Source Register and
Destination Register) .......................................... 84
CMP2
CMP2 (Compare Immediate Data and Destination
Register) .............................................................86
COPLD
COPLD (Load 32bit Data from Register fo Coprocessor Register) ...........................................210
COPOP
COPOP (Co-Processor Opetation) .......................... 208
COPST
COPST (Store 32bit Data from Co-processor Register
to Register) ....................................................... 212
COPST/COPSV
COPST/COPSV 命令実行時の汎用レジスタ .......48
COPSV
COPSV (Save 32bit Data from Co-processor Register
to Register) ....................................................... 214
CPU
FR ファミリ CPU コアの特長 ................................. 2
FR ファミリ CPU の構成例 ..................................... 4
リセットによる CPU 内レジスタの
初期化値 ............................................................ 32
255
索引
D
Direct
DMOV(Move Word Data from Post Increment Register
Indirect Address to Direct Address) .........195, 197
DMOVB(Move Byte Data from Post Increment
Register Indirect Address to Direct Address)
..........................................................................205
DIV0S
DIV0S (Initial Setting Up
for Signed Division) .........................................119
DIV0U
DIV0U (Initial Setting Up
for Unsigned Division) .....................................121
DIV1
DIV1 (Main Process of Division) ...........................123
DIV2
DIV2 (Correction When Remain is 0) ....................125
DIV3
DIV3 (Correction When Remain is 0) ....................127
DIV4S
DIV4S (Correction Answer
for Signed Division) .........................................128
DMOV
DMOV (Move Word Data from Direct Address to
Register) ............................................................192
DMOV (Move Word Data from Register to Direct
Address) ............................................................193
DMOV(Move Word Data from Direct Address to Post
Increment Register Indirect Address) ...............194
DMOV(Move Word Data from Direct Address to Pre
Decrement Register Indirect Address) ..............196
DMOV(Move Word Data from Post Increment Register
Indirect Address to Direct Address) .........195, 197
DMOVB
DMOVB (Move Byte Data from Direct Address to
Register) ............................................................202
DMOVB (Move Byte Data from Register to Direct
Address) ............................................................203
DMOVB(Move Byte Data from Direct Address to Post
Increment Register Indirect Address) ...............204
DMOVB(Move Byte Data from Post Increment
Register Indirect Address to Direct Address)
..........................................................................205
DMOVH
DMOVH (Move Halfword Data from Direct Address to
Register) ............................................................198
DMOVH (Move Halfword Data from Register to Direct
Address) ............................................................199
DMOVH(Move Halfword Data from Direct Address to
Post Increment Register Indirect Address) .......200
DMOVH(Move Halfword Data from Post Increment
Register Indirect Address to Direct Address)
..........................................................................201
E
EIT
EIT 処理の基本動作 ...............................................33
EIT ハンドラからの復帰 .................................28, 35
ENTER
ENTER (Enter Function) ........................................233
256
EOR
EOR (Exclusive Or Word Data of Source Register to
Data in Memory) .............................................. 101
EOR (Exclusive Or Word Data of Source Register to
Destination Register) ........................................ 100
EORB
EORB (Exclusive Or Byte Data of Source Register to
Data in Memory) .............................................. 105
EORH
EORH (Exclusive Or Halfword Data of Source Register
to Data in Memory) .......................................... 103
EXTSB
EXTSB (Sign Extend from Byte Data
to Word Data) ................................................... 221
EXTSH
EXTSH (Sign Extend from Byte Data
to Word Data) ................................................... 223
EXTUB
EXTUB (Unsign Extend from Byte Data
to Word Data) ................................................... 222
EXTUH
EXTUH (Unsign Extend from Byte Data
to Word Data) ................................................... 224
E フォーマット
E フォーマット ..................................................... 254
F
FR ファミリ
FR ファミリ CPU コアの特長 ................................. 2
FR ファミリ CPU の構成例 ..................................... 4
FR ファミリの構成例 .............................................. 3
FR ファミリのレジスタ構成 ................................14
I
ILM
インタラプトレベルマスクレジスタ
(ILM: bit20 ∼ bit16) .......................................... 19
Indirect
DMOV(Move Word Data from Direct Address to Post
Increment Register Indirect Address) ............... 194
DMOV(Move Word Data from Direct Address to Pre
Decrement Register Indirect Address) ............. 196
DMOVB(Move Byte Data from Direct Address to Post
Increment Register Indirect Address) ............... 204
DMOVH(Move Halfword Data from Direct Address to
Post Increment Register Indirect Address) ....... 200
INT
INT (Software Interrupt) .........................................178
INT 命令実行時に退避する PC の値 .................... 44
INT 命令実行時の動作 ...........................................44
INT 命令使用上の注意事項 ................................... 44
INT 命令の概要 ....................................................... 44
INT 命令のトラップ処理を起動するまでの
時間 .................................................................... 44
INTE
INTE (Software Interrupt for Emulator) ................. 180
INTE 命令実行時に退避する PC の値 ................. 45
INTE 命令実行時の動作 ........................................ 45
INTE 命令使用上の注意事項 ................................45
INTE 命令の概要 ....................................................45
索引
INTE 命令のトラップ処理を起動するまでの
時間 ....................................................................45
J
JMP
JMP (Jump) .............................................................174
JMP:D
JMP:D (Jump) .........................................................186
L
LD
LD (Load Word Data in Memory to Program Status
Register) ............................................................148
LD (Load Word Data in Memory to Register)
..................................141, 142, 143, 144, 145, 146
LDI:20
LDI:20 (Load Immediate 20bit Data to Destination
Register) ............................................................139
LDI:32
LDI:32 (Load Immediate 32 bit Data to Destination
Register) ............................................................138
LDI:8
LDI:8 (Load Immediate 8bit Data to Destination
Register) ............................................................140
LDM0
LDM0 (Load Multiple Registers) ...........................225
LDM1
LDM1 (Load Multiple Registers) ...........................227
LDRES
LDRES (Load Word Data in Memory
to Resource) ......................................................206
LDUB
LDUB (Load Byte Data in Memory
to Register) ........................................153, 154, 155
LDUH
LDUH (Load Halfword Data in Memory
to Register) ........................................150, 151, 152
LEAVE
LEAVE (Leave Function) .......................................235
LSL
LSL (Logical Shift to the Left Direction) .......129, 130
LSL2
LSL2 (Logical Shift to the Left Direction) .............131
LSR
LSR (Logical Shift
to the Right Direction) ..............................132, 133
LSR2
LSR2 (Logical Shift to the Right Direction) ...........134
MUL
MUL (Multiply Word Data) ................................... 115
MULH
MULH (Multiply Halfword Data) .......................... 117
MULU
MULU (Multiply Unsigned Word Data) ................ 116
MULUH
MULUH (Multiply Unsigned Halfword Data) ....... 118
N
NMI
ステップトレーストラップと NMI および
ユーザ割込みの関係 ........................................ 46
NOP
NOP (No Operation) ............................................... 216
O
OR
OR (Or Word Data of Source Register to Data in
Memory) .............................................................94
OR (Or Word Data of Source Register to Destination
Register) .............................................................93
ORB
ORB (Or Byte Data of Source Register to Data in
Memory) .............................................................98
ORCCR
ORCCR (Or Condition Code Register and Immediate
Data) ................................................................. 218
ORH
ORH (Or Halfword Data of Source Register to Data in
Memory) .............................................................96
P
PC
INTE 命令実行時に退避する PC の値 ................. 45
INT 命令実行時に退避する PC の値 .................... 44
コプロセッサエラートラップ時に退避する
PC の値 .............................................................. 49
コプロセッサ不在トラップ発生時に退避する
PC の値 .............................................................. 48
ステップトレーストラップ発生時に退避する
PC の値 .............................................................. 46
ノンマスカブルインタラプト発生時に退避する
PC の値 .............................................................. 40
未定義命令例外発生時に退避する PC の値 .......42
割込み発生時に退避する PC の値 .......................38
PS
PS レジスタに関する注意事項 ............................. 22
M
MOV
MOV (Move Word Data in Program Status Register to
Destination Register) ........................................171
MOV (Move Word Data in Source Register to
Destination Register) ........................169, 170, 172
MOV (Move Word Data in Source Register to Program
Status Register) .................................................173
R
R15
R15 とスタックポインタの関係 ...........................16
S フラグ書換え後の R15 および汎用レジスタの
参照によるインターロックの発生 ................57
Register
ADDC(Add Word Data of Source Register and Carry
Bit to Destination Register) ................................77
257
索引
SUBC(Subtract Word Data in Source Register and
Carry bit from Destination Register) ..................82
RET
RET (Return from Subroutine) ...............................177
RET:D
RET:D (Return from Subroutine) ...........................189
RETI
RETI (Return from Interrupt) .................................182
Ri および Rj と数値の関係
Ri および Rj と数値の関係 ....................................65
Rs と数値の関係
Rs と数値の関係 .....................................................66
S
SCR
システムコンディションコードレジスタ
(SCR: bit10 ∼ bit08) ..........................................20
ST
ST (Store Word Data in Program Status Register to
Memory) ...........................................................162
ST (Store Word Data in Register
to Memory) ...............156, 157, 158, 159, 160, 161
STB
STB (Store Byte Data in Register
to Memory) .......................................166, 167, 168
STH
STH (Store Halfword Data in Register
to Memory) .......................................163, 164, 165
STILM
STILM (Set Immediate Data to Interrupt Level Mask
Register) ............................................................219
STM0
STM0 (Store Multiple Registers) ............................229
STM1
STM1 (Store Multiple Registers) ............................231
STRES
STRES (Store Word Data in Resource
to Memory) .......................................................207
SUB
SUB (Subtract Word Data in Source Register from
Destination Register) ..........................................81
SUBC
SUBC(Subtract Word Data in Source Register and
Carry bit from Destination Register) ..................82
SUBN
SUBN (Subtract Word Data in Source Register from
Destination Register) ..........................................83
S フラグ
S フラグ書換え後の R15 および汎用レジスタの
参照によるインターロックの発生 ................57
X
XCHB
XCHB (Exchange Byte Data) .................................236
258
あ
空きビット
プログラムステータスの空きビット .................. 19
アドレス
ダイレクトアドレス領域 ........................................ 7
い
インターロック
インターロック ......................................................57
S フラグ書換え後の R15 および汎用レジスタの
参照によるインターロックの発生 ................57
インタラプトレベルマスクレジスタ
インタラプトレベルマスクレジスタ
(ILM: bit20 ∼ bit16) .......................................... 19
え
エラー
コプロセッサエラー情報の退避と復帰 ..............50
コプロセッサエラートラップ時に退避する
PC の値 .............................................................. 49
コプロセッサエラートラップの概要 .................. 49
コプロセッサエラートラップ発生時の
コプロセッサ命令の動作結果 ........................ 49
コプロセッサエラートラップ発生時の
動作 .................................................................... 49
コプロセッサエラートラップ発生の条件 ..........49
お
オペランド
命令中のオペランド情報の使い方 ........................ 7
か
回避方法
前後不一致の回避方法 .......................................... 55
概要
INTE 命令の概要 ....................................................45
INT 命令の概要 ....................................................... 44
コプロセッサエラートラップの概要 .................. 49
コプロセッサ不在トラップの概要 ...................... 48
システムスタックポインタ , ユーザスタック
ポインタの概要 ................................................ 27
乗除算レジスタの概要 .......................................... 29
ステップトレーストラップの概要 ...................... 46
遅延なし分岐命令の概要 ...................................... 58
遅延分岐命令の概要 .............................................. 58
テーブルベースレジスタの概要 .......................... 23
トラップの概要 ......................................................43
ノンマスカブルインタラプトの概要 .................. 39
パイプライン動作の概要 ...................................... 54
汎用レジスタの概要 .............................................. 15
プログラムカウンタの概要 ..................................18
プログラムステータスの概要 ..............................19
ベクタテーブル領域の概要 ....................................8
未定義命令例外の概要 .......................................... 42
ユーザ割込みの概要 .............................................. 37
リターンポインタの概要 ...................................... 25
索引
例外処理の概要 .......................................................41
レジスタハザードの概要 .......................................56
割込みの概要 ...........................................................36
関係
R15 とスタックポインタの関係 ...........................16
Ri および Rj と数値の関係 ....................................65
Rs と数値の関係 .....................................................66
ステップトレーストラップと NMI および
ユーザ割込みの関係 ........................................46
き
記号
命令一覧表に用いている記号の意味 .................239
記述形式
命令記述形式 ...........................................................67
起動
INTE 命令のトラップ処理を起動するまでの
時間 ....................................................................45
INT 命令のトラップ処理を起動するまでの
時間 ....................................................................44
ノンマスカブルインタラプト処理を起動するまで
の時間 ................................................................39
未定義命令例外処理が起動するまでの
時間 ....................................................................42
割込み処理を起動するまでの時間 .......................38
機能
システムスタックポインタとユーザスタック
ポインタの機能 ................................................28
乗除算レジスタの機能 ...........................................30
テーブルベースレジスタの機能 ...........................24
プログラムカウンタの機能 ...................................18
リターンポインタの機能 .......................................26
こ
構成
FR ファミリのレジスタ構成 .................................14
乗除算レジスタの構成 ...........................................30
スタックポインタの構成 .......................................28
テーブルベースレジスタの構成 ...........................24
プログラムステータスの構成 ...............................19
リターンポインタの構成 .......................................26
FR ファミリ CPU の構成例 .....................................4
FR ファミリの構成例 ...............................................3
構造
ベクタテーブルの構造 ...........................................34
コプロセッサ
コプロセッサ不在トラップの概要 .......................48
コプロセッサ不在トラップ発生時に退避する
PC の値 ..............................................................48
コプロセッサ不在トラップ発生時の動作 ...........48
コプロセッサ不在トラップ発生の条件 ...............48
コプロセッサエラー情報
コプロセッサエラー情報の退避と復帰 ...............50
コプロセッサエラートラップ
コプロセッサエラートラップ時に退避する
PC の値 ..............................................................49
コプロセッサエラートラップの概要 ...................49
コプロセッサエラートラップ発生時の
コプロセッサ命令の動作結果 ........................49
コプロセッサエラートラップ発生時の
動作 .................................................................... 49
コプロセッサエラートラップ発生の条件 ..........49
コンディションコードレジスタ
コンディションコードレジスタ
(CCR: bit07 ∼ bit00) .........................................21
し
システムコンディションコードレジスタ
システムコンディションコードレジスタ
(SCR: bit10 ∼ bit08) .........................................20
システムスタックポインタ
システムスタックポインタ , ユーザスタック
ポインタの概要 ................................................ 27
システムスタックポインタとユーザスタック
ポインタの機能 ................................................ 28
実際に発生する条件
実際に発生する条件 .............................................. 55
順序
ビットの順序とバイトの順序 ..............................10
条件
コプロセッサエラートラップ発生の条件 ..........49
コプロセッサ不在トラップ発生の条件 ..............48
実際に発生する条件 .............................................. 55
ステップトレーストラップ発生の条件 ..............46
ノンマスカブルインタラプト要求
受付け条件 ........................................................39
ユーザ割込み要求受付け条件 ..............................37
使用上の注意事項
INTE 命令使用上の注意事項 ................................45
INT 命令使用上の注意事項 ................................... 44
ステップトレーストラップの使用上の
注意事項 ............................................................ 47
乗除算レジスタ
乗除算レジスタの概要 .......................................... 29
乗除算レジスタの機能 .......................................... 30
乗除算レジスタの構成 .......................................... 30
初期化値
リセットによる CPU 内レジスタの
初期化値 ............................................................ 32
初期値
汎用レジスタの初期値 .......................................... 16
ベクタテーブル領域の初期値 ................................9
す
スタックポインタ
R15 とスタックポインタの関係 ...........................16
スタックポインタの構成 ...................................... 28
ステップ除算プログラム
ステップ除算プログラム中の割込みの
発生 .................................................................... 36
ステップトレーストラップ
ステップトレーストラップと NMI および
ユーザ割込みの関係 ........................................ 46
ステップトレーストラップの概要 ...................... 46
ステップトレーストラップの使用上の
注意事項 ............................................................ 47
ステップトレーストラップ発生時に退避する
PC の値 .............................................................. 46
ステップトレーストラップ発生時の動作 ..........46
259
索引
ステップトレーストラップ発生の条件 ...............46
せ
制限
遅延分岐命令実行中の割込みに関する
制限 ....................................................................59
制約
データにおけるワードアライメントに対する
制約 ....................................................................11
プログラムにおけるワードアライメントに対する
制約 ....................................................................11
前後不一致
前後不一致の回避方法 ...........................................55
専用レジスタ
専用レジスタ ...........................................................17
た
退避
INTE 命令実行時に退避する PC の値 ..................45
INT 命令実行時に退避する PC の値 ....................44
コプロセッサエラー情報の退避と復帰 ...............50
コプロセッサエラートラップ時に退避する
PC の値 ..............................................................49
コプロセッサ不在トラップ発生時に退避する
PC の値 ..............................................................48
ステップトレーストラップ発生時に退避する
PC の値 ..............................................................46
退避するレジスタ ...................................................35
ノンマスカブルインタラプト発生時に退避する
PC の値 ..............................................................40
未定義命令例外発生時に退避する PC の値 ........42
割込み発生時に退避する PC の値 ........................38
ダイレクト
ダイレクトアドレス領域 .........................................7
多重処理
多重処理の優先順位 ...............................................52
ち
遅延スロット
遅延スロットで使用できない命令 .......................58
遅延スロットに置かれた未定義命令 ...................42
遅延なし分岐命令
遅延なし分岐命令の概要 .......................................58
遅延なし分岐命令の処理例 ...................................60
遅延分岐命令
遅延分岐命令実行中の割込みに関する
制限 ....................................................................59
遅延分岐命令の概要 ...............................................58
遅延分岐命令の処理例 ...........................................61
遅延分岐命令のプログラム例 ...............................62
注意事項
INTE 命令使用上の注意事項 ................................45
INT 命令使用上の注意事項 ...................................44
PS レジスタに関する注意事項 .............................22
ステップトレーストラップの使用上の
注意事項 ............................................................47
テーブルベースレジスタの注意事項 ...................24
260
パイプライン動作と割込み処理に関する
注意事項 ............................................................ 55
て
データ
データにおけるワードアライメントに対する
制約 .................................................................... 11
テーブルベースレジスタ
テーブルベースレジスタの概要 .......................... 23
テーブルベースレジスタの機能 .......................... 24
テーブルベースレジスタの構成 .......................... 24
テーブルベースレジスタの注意事項 .................. 24
と
動作
INTE 命令実行時の動作 ........................................ 45
INT 命令実行時の動作 ...........................................44
コプロセッサエラートラップ発生時の
動作 .................................................................... 49
コプロセッサ不在トラップ発生時の動作 ..........48
ステップトレーストラップ発生時の動作 ..........46
ノンマスカブルインタラプト受付け時の
動作 .................................................................... 39
パイプライン動作と割込み処理に関する
注意事項 ............................................................ 55
パイプライン動作の概要 ...................................... 54
未定義命令例外の動作 .......................................... 42
ユーザ割込み受付け時の動作 ..............................37
リセットの動作 ......................................................32
同時発生
同時発生の優先順位 .............................................. 51
特長
FR ファミリ CPU コアの特長 ................................. 2
トラップ
INTE 命令のトラップ処理を起動するまでの
時間 .................................................................... 45
INT 命令のトラップ処理を起動するまでの
時間 .................................................................... 44
コプロセッサエラートラップ時に退避する
PC の値 .............................................................. 49
コプロセッサエラートラップの概要 .................. 49
コプロセッサエラートラップ発生時の
コプロセッサ命令の動作結果 ........................ 49
コプロセッサエラートラップ発生時の
動作 .................................................................... 49
コプロセッサエラートラップ発生の条件 ..........49
コプロセッサ不在トラップの概要 ...................... 48
コプロセッサ不在トラップ発生時に退避する
PC の値 .............................................................. 48
コプロセッサ不在トラップ発生時の動作 ..........48
コプロセッサ不在トラップ発生の条件 ..............48
トラップの概要 ......................................................43
トラップを発生する要因 ...................................... 43
の
ノンマスカブルインタラプト
ノンマスカブルインタラプト受付け時の
動作 .................................................................... 39
索引
ノンマスカブルインタラプト処理を起動するまで
の時間 ................................................................39
ノンマスカブルインタラプトの概要 ...................39
ノンマスカブルインタラプトの使い方 ...............40
ノンマスカブルインタラプト発生時に退避する
PC の値 ..............................................................40
ノンマスカブルインタラプト要求
受付け条件 ........................................................39
は
バイト
ビットの順序とバイトの順序 ...............................10
パイプライン動作
パイプライン動作と割込み処理に関する
注意事項 ............................................................55
パイプライン動作の概要 .......................................54
汎用レジスタ
COPST/COPSV 命令実行時の汎用レジスタ .......48
S フラグ書換え後の R15 および汎用レジスタの
参照によるインターロックの発生 ................57
汎用レジスタの概要 ...............................................15
汎用レジスタの初期値 ...........................................16
汎用レジスタの特殊な使い方 ...............................16
ひ
ビット
ビットの順序とバイトの順序 ...............................10
ふ
フォーマット
E フォーマット .....................................................254
命令フォーマット ...................................................64
復帰
EIT ハンドラからの復帰 .................................28, 35
コプロセッサエラー情報の退避と復帰 ...............50
フラグ
S フラグ書換え後の R15 および汎用レジスタの
参照によるインターロックの発生 ................57
プログラム
ステップ除算プログラム中の割込みの
発生 ....................................................................36
遅延分岐命令のプログラム例 ...............................62
プログラムにおけるワードアライメントに対する
制約 ....................................................................11
プログラムカウンタ
プログラムカウンタの概要 ...................................18
プログラムカウンタの機能 ...................................18
プログラムステータス
プログラムステータスの空きビット ...................19
プログラムステータスの概要 ...............................19
プログラムステータスの構成 ...............................19
分岐命令
遅延なし分岐命令の概要 .......................................58
遅延なし分岐命令の処理例 ...................................60
遅延分岐命令実行中の割込みに関する
制限 ....................................................................59
遅延分岐命令の概要 ...............................................58
遅延分岐命令の処理例 ...........................................61
遅延分岐命令のプログラム例 ..............................62
へ
ベクタテーブル
ベクタテーブルの構造 .......................................... 34
ベクタテーブル領域の概要 ....................................8
ベクタテーブル領域の初期値 ................................9
ベクタテーブル領域の内容 ....................................8
未使用ベクタテーブル領域 ....................................6
み
未使用
未使用ベクタテーブル領域 ....................................6
未定義命令
遅延スロットに置かれた未定義命令 .................. 42
未定義命令例外処理が起動するまでの
時間 .................................................................... 42
未定義命令例外の概要 .......................................... 42
未定義命令例外の使い方 ...................................... 42
未定義命令例外の動作 .......................................... 42
未定義命令例外発生時に退避する PC の値 .......42
め
命令
COPST/COPSV 命令実行時の汎用レジスタ .......48
INTE 命令実行時に退避する PC の値 ................. 45
INTE 命令実行時の動作 ........................................ 45
INTE 命令使用上の注意事項 ................................45
INTE 命令の概要 ....................................................45
INTE 命令のトラップ処理を起動するまでの
時間 .................................................................... 45
INT 命令実行時に退避する PC の値 .................... 44
INT 命令実行時の動作 ...........................................44
INT 命令使用上の注意事項 ................................... 44
INT 命令の概要 ....................................................... 44
INT 命令のトラップ処理を起動するまでの
時間 .................................................................... 44
コプロセッサエラートラップ発生時の
コプロセッサ命令の動作結果 ........................ 49
遅延スロットで使用できない命令 ...................... 58
遅延スロットに置かれた未定義命令 .................. 42
遅延なし分岐命令の概要 ...................................... 58
遅延なし分岐命令の処理例 ..................................60
遅延分岐命令実行中の割込みに関する
制限 .................................................................... 59
遅延分岐命令の概要 .............................................. 58
遅延分岐命令の処理例 .......................................... 61
遅延分岐命令のプログラム例 ..............................62
未定義命令例外処理が起動するまでの
時間 .................................................................... 42
未定義命令例外の概要 .......................................... 42
未定義命令例外の使い方 ...................................... 42
未定義命令例外の動作 .......................................... 42
未定義命令例外発生時に退避する PC の値 .......42
命令一覧表 ............................................................ 243
命令一覧表に用いている記号の意味 ................ 239
命令記述形式 .......................................................... 67
命令中のオペランド情報の使い方 ........................ 7
261
索引
命令フォーマット ...................................................64
命令マップ .............................................................253
メモリ空間
メモリ空間 .................................................................6
ゆ
ユーザスタックポインタ
システムスタックポインタ , ユーザスタック
ポインタの概要 ................................................27
システムスタックポインタとユーザスタック
ポインタの機能 ................................................28
ユーザ割込み
ステップトレーストラップと NMI および
ユーザ割込みの関係 ........................................46
ユーザ割込み受付け時の動作 ...............................37
ユーザ割込みの概要 ...............................................37
ユーザ割込みの使い方 ...........................................38
ユーザ割込み要求受付け条件 ...............................37
優先順位
多重処理の優先順位 ...............................................52
同時発生の優先順位 ...............................................51
リセットの優先順位 ...............................................32
よ
要因
トラップを発生する要因 .......................................43
例外処理を発生する要因 .......................................41
割込みを発生する要因 ...........................................36
り
リセット
リセットによる CPU 内レジスタの
初期化値 ............................................................32
リセットの動作 .......................................................32
リセットの優先順位 ...............................................32
リターンポインタ
リターンポインタの概要 .......................................25
リターンポインタの機能 .......................................26
リターンポインタの構成 .......................................26
れ
例外
未定義命令例外の概要 ...........................................42
未定義命令例外の使い方 .......................................42
未定義命令例外の動作 ...........................................42
例外処理
例外処理の概要 .......................................................41
例外処理を発生する要因 .......................................41
レジスタ
COPST/COPSV 命令実行時の汎用レジスタ .......48
FR ファミリのレジスタ構成 .................................14
PS レジスタに関する注意事項 .............................22
S フラグ書換え後の R15 および汎用レジスタの
参照によるインターロックの発生 ................57
インタラプトレベルマスクレジスタ
(ILM: bit20 ∼ bit16) ..........................................19
262
コンディションコードレジスタ
(CCR: bit07 ∼ bit00) .........................................21
システムコンディションコードレジスタ
(SCR: bit10 ∼ bit08) .........................................20
乗除算レジスタの概要 .......................................... 29
乗除算レジスタの機能 .......................................... 30
乗除算レジスタの構成 .......................................... 30
専用レジスタ .......................................................... 17
退避するレジスタ ..................................................35
テーブルベースレジスタの概要 .......................... 23
テーブルベースレジスタの機能 .......................... 24
テーブルベースレジスタの構成 .......................... 24
テーブルベースレジスタの注意事項 .................. 24
汎用レジスタの概要 .............................................. 15
汎用レジスタの初期値 .......................................... 16
汎用レジスタの特殊な使い方 ..............................16
リセットによる CPU 内レジスタの
初期化値 ............................................................ 32
レジスタバイパス ..................................................56
レジスタハザードの概要 ...................................... 56
レジスタバイパス
レジスタバイパス ..................................................56
レジスタハザード
レジスタハザードの概要 ...................................... 56
わ
ワードアライメント
データにおけるワードアライメントに対する
制約 .................................................................... 11
プログラムにおけるワードアライメントに対する
制約 .................................................................... 11
割込み
ステップ除算プログラム中の割込みの
発生 .................................................................... 36
ステップトレーストラップと NMI および
ユーザ割込みの関係 ........................................ 46
遅延分岐命令実行中の割込みに関する
制限 .................................................................... 59
パイプライン動作と割込み処理に関する
注意事項 ............................................................ 55
ユーザ割込み受付け時の動作 ..............................37
ユーザ割込みの概要 .............................................. 37
ユーザ割込みの使い方 .......................................... 38
ユーザ割込み要求受付け条件 ..............................37
割込み処理を起動するまでの時間 ...................... 38
割込みの概要 .......................................................... 36
割込み発生時に退避する PC の値 .......................38
割込みを発生する要因 .......................................... 36
CM71-00101-5
富士通半導体デバイス • CONTROLLER MANUAL
FR ファミリ
32 ビット・マイクロコントローラ
インストラクションマニュアル
2007 年 12 月 第 5 版発行
発行
富士通株式会社
編集
マーケティング統括部 販売戦略部
電子デバイス事業本部