000 |
0 |
○ |
integer |
add |
sign extension |
ADD |
0000000000 |
O2 |
I11 |
Rd = Rd + Rs |
|
|
|
|
|
|
|
001 |
1 |
○ |
|
sub |
sign extension |
SUB |
0000000001 |
O2 |
I11 |
Rd = Rd - Rs |
|
|
|
|
|
|
|
002 |
2 |
○ |
|
mul output low32bit |
sign extension |
MULL |
0000000010 |
O2 |
I11 |
Rd = (Rd * Rs) & 0xFFFFFFFF |
|
|
|
|
|
|
|
003 |
3 |
○ |
|
mul output high32bit |
sign extension |
MULH |
0000000011 |
O2 |
I11 |
Rd = (Rd * Rs) » 32 |
|
|
|
|
|
|
|
004 |
4 |
|
|
unsigned div |
|
UDIV |
0000000100 |
O2 |
I11 |
Rd = Rd / Rs |
|
|
|
|
4 |
0割の時(結果は0) |
|
005 |
5 |
|
|
unsigned mod |
|
UMOD |
0000000101 |
O2 |
I11 |
Rd = Rd % Rs |
|
|
|
|
4 |
0割の時(結果は0) |
|
006 |
6 |
○ |
|
cmp |
sign extension |
CMP |
0000000110 |
O2 |
I11 |
FLAGR = flags_out(Rd - Rs) |
|
|
|
|
|
|
SUBを行ない、結果を破棄しフラグのみ更新 |
007 |
7 |
|
|
div |
sign extension |
DIV |
0000000111 |
O2 |
I11 |
Rd = Rd / Rs |
|
|
|
|
4 |
0割の時(結果は0) |
|
008 |
8 |
|
|
mod |
sign extension |
MOD |
0000001000 |
O2 |
I11 |
Rd = Rd % Rs |
|
|
|
|
4 |
0割の時(結果は0) |
|
009 |
9 |
|
|
sign negative |
|
NEG |
0000001001 |
O2 |
|
Rd = negative(Rs) |
not generate flags |
|
|
|
|
|
|
00A |
10 |
○ |
|
unsigned mul output low32bit |
|
UMULL |
0000001010 |
O2 |
I11 |
|
|
|
|
|
|
|
|
00B |
11 |
○ |
|
unsigned mul output high32bit |
|
UMULH |
0000001011 |
O2 |
I11 |
|
|
|
|
|
|
|
|
00D |
13 |
|
|
increment output carry |
|
IC |
0000001101 |
O2 |
|
Rd = cary_out(Rs + 1) |
|
|
|
|
|
|
|
00E |
14 |
○ |
|
add output carry |
sign extension |
ADDC |
0000001110 |
O2 |
I11 |
Rd = cary_out(Rd + Rs) |
|
|
|
|
|
|
|
010 |
16 |
○ |
|
inc |
|
INC |
0000010000 |
O2 |
|
Rd = Rs + 1 |
|
|
|
|
|
|
|
011 |
17 |
○ |
|
dec |
|
DEC |
0000010001 |
O2 |
|
Rd = Rs - 1 |
|
|
|
|
|
|
|
013 |
19 |
|
|
maximum |
|
MAX |
0000010011 |
O2 |
I11 |
Rd = (Rd >= Rs)? Rd : Rs |
not generate flags |
|
|
|
|
|
|
014 |
20 |
|
|
minimum |
|
MIN |
0000010100 |
O2 |
I11 |
Rd = (Rd <= Rs)? Rd : Rs |
not generate flags |
|
|
|
|
|
|
015 |
21 |
|
|
unsigned maximum |
|
UMAX |
0000010101 |
O2 |
I11 |
Rd = (Rd >= Rs)? Rd : Rs |
not generate flags |
|
|
|
|
|
|
016 |
22 |
|
|
unsigned minimum |
|
UMIN |
0000010110 |
O2 |
I11 |
Rd = (Rd <= Rs)? Rd : Rs |
not generate flags |
|
|
|
|
|
|
01C |
28 |
○ |
|
sign extension 8bit to 32bit |
|
SEXT8 |
0000011100 |
O2 |
|
Rd = sign_extension8to32(Rs) |
not generate flags |
|
|
|
|
|
|
01D |
29 |
○ |
|
sign extension 16bit to 32bit |
|
SEXT16 |
0000011101 |
O2 |
|
Rd = sign_extension16to32(Rs) |
not generate flags |
|
|
|
|
|
|
040 |
64 |
○ |
Shift |
logic shift left |
|
SHL |
0001000000 |
O2 |
I11 |
Rd = Rd«Rs |
CF=Rd[32], OF=0 |
|
|
|
1 |
64以上シフトした場合 |
|
041 |
65 |
○ |
|
logic shift right |
|
SHR |
0001000001 |
O2 |
I11 |
Rd = Rd»Rs |
CF=Rd[-1], OF=0 |
|
|
|
1 |
64以上シフトした場合 |
|
045 |
69 |
○ |
|
alithmetic shift right |
|
SAR |
0001000101 |
O2 |
I11 |
Rd = Rd»>Rs |
CF=Rd[-1], OF=0 |
|
|
|
1 |
64以上シフトした場合 |
|
048 |
72 |
|
|
rotate shift left |
|
ROL |
0001001000 |
O2 |
I11 |
Rd = rol(Rd, Rs) |
not generate flags |
|
|
|
1 |
64以上シフトした場合 |
|
049 |
73 |
|
|
rotate shift right |
|
ROR |
0001001001 |
O2 |
I11 |
Rd = ror(Rd, Rs) |
not generate flags |
|
|
|
1 |
64以上シフトした場合 |
|
060 |
96 |
○ |
Logic |
and |
|
AND |
0001100000 |
O2 |
|
Rd = Rd & Rs |
|
|
|
|
|
|
|
061 |
97 |
○ |
|
or |
|
OR |
0001100001 |
O2 |
|
Rd = Rd | Rs |
|
|
|
|
|
|
|
062 |
98 |
○ |
|
xor |
|
XOR |
0001100010 |
O2 |
|
Rd = Rd ^ Rs |
|
|
|
|
|
|
|
063 |
99 |
○ |
|
not |
|
NOT |
0001100011 |
O2 |
|
Rd = ~Rs |
|
|
|
|
|
|
|
064 |
100 |
○ |
|
nand |
|
NAND |
0001100100 |
O2 |
|
Rd = ~(Rd & Rs) |
|
|
|
|
|
|
|
065 |
101 |
○ |
|
nor |
|
NOR |
0001100101 |
O2 |
|
Rd = ~(Rd | Rs) |
|
|
|
|
|
|
|
066 |
102 |
○ |
|
xnor |
|
XNOR |
0001100110 |
O2 |
|
Rd = ~(Rd ^ Rs) |
|
|
|
|
|
|
|
067 |
103 |
○ |
|
test |
|
TEST |
0001100111 |
O2 |
|
FLAGR = flags_out(Rd & Rs) |
|
|
|
|
|
|
|
06A |
106 |
○ |
|
write for low 16bit |
|
WL16 |
0001101010 |
I16 |
|
Rd = (Rd & 0xFFFF0000) | (Rs & 0x0000FFFF) |
not generate flags |
|
|
|
|
|
|
06B |
107 |
○ |
|
write for high 16bit |
|
WH16 |
0001101011 |
I16 |
|
Rd = (Rd & 0x0000FFFF) | ((Rs « 16) & 0xFFFF0000) |
not generate flags |
|
|
|
|
|
|
06C |
108 |
○ |
|
clear bit |
|
CLRB |
0001101100 |
|
I11 |
Rd = clb(Rs) |
not generate flags |
|
|
|
|
|
|
06D |
109 |
○ |
|
set bit |
|
SETB |
0001101101 |
|
I11 |
Rd = stb(Rs) |
not generate flags |
|
|
|
|
|
|
06E |
110 |
○ |
|
clear word |
|
CLR |
0001101110 |
O1 |
|
Rd = 0x00000000 |
not generate flags |
|
|
|
|
|
|
06F |
111 |
○ |
|
set word |
|
SET |
0001101111 |
O1 |
|
Rd = 0xFFFFFFFF |
not generate flags |
|
|
|
|
|
|
070 |
112 |
|
|
bit reverse |
|
REVB |
0001110000 |
O2 |
|
Rd = rvbi(Rs) |
not generate flags |
|
|
|
|
|
|
071 |
113 |
○ |
|
byte reverse |
|
REV8 |
0001110001 |
O2 |
|
Rd = rvby(Rs) |
not generate flags |
|
|
|
|
|
|
072 |
114 |
|
|
get single bit |
|
GETB |
0001110010 |
O2 |
I11 |
Rd = (Rd » Rs) & 0x00000001 |
not generate flags |
|
|
|
|
|
|
073 |
115 |
○ |
|
get 1 byte |
|
GET8 |
0001110011 |
O2 |
I11 |
Rd = (Rd » Rs*8) & 0x000000FF |
not generate flags |
|
|
|
|
|
|
076 |
118 |
○ |
|
load immediate low 16bit |
|
LIL |
0001110110 |
|
I16 |
Rd = sign_extension(Rs) |
not generate flags |
|
|
|
|
|
|
077 |
119 |
○ |
|
load immediate high 16bit |
|
LIH |
0001110111 |
|
I16 |
Rd = Rs«16 |
not generate flags |
|
|
|
|
|
|
07A |
122 |
○ |
|
unsigned load immediate 16bit |
|
ULIL |
0001111010 |
|
I16 |
Rd = Rs |
|
|
|
|
|
|
|
080 |
128 |
○ |
Memory Access |
load byte data |
|
LD8 |
0010000000 |
O2 |
I11 |
Rd = mask(MEMORY[Rs], 8) |
not generate flags |
MA |
MA |
|
2 |
メモリ保護違反の場合 |
|
081 |
129 |
○ |
|
load 2byte data |
1bit left shift |
LD16 |
0010000001 |
O2 |
I11 |
Rd = mask(MEMORY[Rs], 16) |
not generate flags |
MA |
MA |
|
2 |
メモリ保護違反の場合 |
|
082 |
130 |
○ |
|
load word data |
2bit left shift |
LD32 |
0010000010 |
O2 |
I11 |
Rd = MEMORY[Rs] |
not generate flags |
MA |
MA |
|
2 |
メモリ保護違反の場合 |
|
083 |
131 |
○ |
|
store byte data |
|
ST8 |
0010000011 |
O2 |
I11 |
MEMORY[Rs] = mask(Rd, 8) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
084 |
132 |
○ |
|
store 2byte data |
1bit left shift |
ST16 |
0010000100 |
O2 |
I11 |
MEMORY[Rs] = mask(Rd, 16) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
085 |
133 |
○ |
|
store word data |
2bit left shift |
ST32 |
0010000101 |
O2 |
I11 |
MEMORY[Rs] = Rd |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
088 |
136 |
○ |
|
push |
sign extension |
PUSH |
0010001000 |
O1 |
CI16 |
MEMORY[SPR] = Rd, SPR = SPR - 4 |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
089 |
137 |
|
|
push program counter |
|
PUSHPC |
0010001001 |
C |
|
MEMORY[SPR] = PC + 8 |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
08A |
138 |
|
|
load byte data (always use PDTR) |
|
LD8U |
0010001010 |
O2 |
I11 |
Rd = mask(MEMORY[Rs], 8) |
not generate flags |
|
|
カーネルモードのみ実行可能 |
2,3 |
メモリ保護違反、特権違反 |
|
08B |
139 |
|
|
load 2byte data (always use PDTR) |
1bit left shift |
LD16U |
0010001011 |
O2 |
I11 |
Rd = mask(MEMORY[Rs], 16) |
not generate flags |
|
|
カーネルモードのみ実行可能 |
2,3 |
メモリ保護違反、特権違反 |
|
08C |
140 |
|
|
load word data (always use PDTR) |
2bit left shift |
LD32U |
0010001100 |
O2 |
I11 |
Rd = MEMORY[Rs] |
not generate flags |
|
|
カーネルモードのみ実行可能 |
2,3 |
メモリ保護違反、特権違反 |
|
08D |
141 |
|
|
store byte data (always use PDTR) |
|
ST8U |
0010001101 |
O2 |
I11 |
MEMORY[Rs] = mask(Rd, 8) |
not generate flags |
|
|
カーネルモードのみ実行可能 |
2,3 |
メモリ保護違反、特権違反 |
|
08E |
142 |
|
|
store 2byte data (always use PDTR) |
1bit left shift |
ST16U |
0010001110 |
O2 |
I11 |
MEMORY[Rs] = mask(Rd, 16) |
not generate flags |
|
|
カーネルモードのみ実行可能 |
2,3 |
メモリ保護違反、特権違反 |
|
08F |
143 |
|
|
store word data (always use PDTR) |
2bit left shift |
ST32U |
0010001111 |
O2 |
I11 |
MEMORY[Rs] = Rd |
not generate flags |
|
|
カーネルモードのみ実行可能 |
2,3 |
メモリ保護違反、特権違反 |
|
090 |
144 |
○ |
|
pop |
|
POP |
0010010000 |
O1 |
|
Rd = MEMORY[SPR], SPR = SPR + 4 |
not generate flags |
|
MA |
|
2 |
メモリ保護違反の場合 |
|
09A |
154 |
○ |
|
load byte data with displacement |
[sign extension] |
LDD8 |
0010011010 |
O2 |
|
Rd = mask(MEMORY[Rs+displacement], 8) |
not generate flags |
MA |
|
|
2 |
メモリ保護違反の場合 |
|
09B |
155 |
○ |
|
load 2byte data with displacement |
1bit left shift[sign extension・1bit left shift] |
LDD16 |
0010011011 |
O2 |
|
Rd = mask(MEMORY[Rs+displacement], 16) |
not generate flags |
MA |
|
|
2 |
メモリ保護違反の場合 |
|
09C |
156 |
○ |
|
load word data with displacement |
2bit left shift[sign extension・2bit left shift] |
LDD32 |
0010011100 |
O2 |
|
Rd = MEMORY[Rs+displacement] |
not generate flags |
MA |
|
|
2 |
メモリ保護違反の場合 |
|
09D |
157 |
○ |
|
store byte data with displacement |
[sign extension] |
STD8 |
0010011101 |
O2 |
|
MEMORY[Rs+displacement] = mask(Rd, 8) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
09E |
158 |
○ |
|
store 2byte data with displacement |
1bit left shift[sign extension・1bit left shift] |
STD16 |
0010011110 |
O2 |
|
MEMORY[Rs+displacement] = mask(Rd, 16) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
09F |
159 |
○ |
|
store word data with displacement |
2bit left shift[sign extension・2bit left shift] |
STD32 |
0010011111 |
O2 |
|
MEMORY[Rs+displacement] = Rd |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
|
0A0 |
160 |
○ |
Branch |
unsigned branch (PC relative address) |
2bit left shift |
BUR |
0010100000 |
JO1 |
JI16 |
PC = PC + unsigned(Rd) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing |
0A1 |
161 |
○ |
|
branch (PC relative address) |
sign extension・2bit left shift |
BR |
0010100001 |
JO1 |
JI16 |
PC = PC + signed(Rd) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing |
0A2 |
162 |
○ |
|
branch (direct address) |
2bit left shift |
B |
0010100010 |
JO1 |
JI16 |
PC = unsigned(Rd) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing |
0A3 |
163 |
○ |
|
set pcr from ppcr data(condition code not suport) |
|
IB |
0010100011 |
C |
|
PC = PPCR |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing 割り込みルーチンからの復帰に使用(特権操作) CCはALしか対象外。それ以外は未定義 |
0B0 |
176 |
|
|
unsigned branch (PC relative address). with hint of not branch |
2bit left shift |
BURN |
0010110000 |
JO1 |
JI16 |
PC = PC + unsigned(Rd) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing |
0B1 |
177 |
|
|
branch (PC relative address). with hint of not branch |
sign extension・2bit left shift |
BRN |
0010110001 |
JO1 |
JI16 |
PC = PC + signed(Rd) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing |
0B2 |
178 |
|
|
branch (direct address). with hint of not branch |
2bit left shift |
BN |
0010110010 |
JO1 |
JI16 |
PC = unsigned(Rd) |
not generate flags |
|
|
|
2 |
メモリ保護違反の場合 |
Word Addressing |
0C0 |
192 |
○ |
System Register Read |
read SPR |
|
SRSPR |
0011000000 |
O1 |
|
Rd = SPR |
not generate flags |
|
|
|
|
|
|
0C1 |
193 |
|
|
read PDTR |
|
SRPDTR |
0011000001 |
O1 |
|
Rd = PDTR |
not generate flags |
|
|
|
|
|
|
0C2 |
194 |
|
|
read CPUIDR |
|
SRPIDR |
0011000010 |
O1 |
|
Rd = CPUIDR |
not generate flags |
|
|
|
|
|
|
0C3 |
195 |
|
|
read COREIDR |
|
SRCIDR |
0011000011 |
O1 |
|
Rd = COREIDR |
not generate flags |
|
|
|
|
|
|
0C4 |
196 |
|
|
read PSR_CMOD |
|
SRMODER |
0011000100 |
O1 |
|
Rd = (PSR » 5) & 0x3 |
not generate flags |
|
|
|
|
|
|
0C5 |
197 |
○ |
|
read PSR_IM |
|
SRIEIR |
0011000101 |
O1 |
|
Rd = (PSR » 2) & 0x1 |
not generate flags |
|
|
|
|
|
1で許可 |
0C8 |
200 |
|
|
read TISR |
|
SRTISR |
0011001000 |
O1 |
|
Rd = TISR |
not generate flags |
|
|
カーネルモードのみ実行可能 |
3 |
特権違反 |
|
0C9 |
201 |
|
|
read KPDTR |
|
SRKPDTR |
0011001001 |
O1 |
|
Rd = KPDTR |
not generate flags |
|
|
カーネルモードのみ実行可能 |
3 |
特権違反 |
|
0CA |
202 |
|
|
read PSR_MMUMOD |
|
SRMMUR |
0011001010 |
O1 |
|
Rd = PSR & 0x3 |
not generate flags |
|
|
|
|
|
0=アドレス変換なし, 1=予約, 2=1段変換, 3=2段変換 |
0CB |
203 |
|
|
read IOSR |
|
SRIOSR |
0011001011 |
O1 |
|
Rd = IOSR |
not generate flags |
|
|
|
|
|
|
0CC |
204 |
|
|
read TIDR |
|
SRTIDR |
0011001100 |
O1 |
|
Rd = TIDR |
not generate flags |
|
|
|
|
|
|
0CD |
205 |
○ |
|
read PPSR |
|
SRPPSR |
0011001101 |
O1 |
|
Rd = PPSR |
not generate flags |
|
|
|
|
|
|
0CE |
206 |
○ |
|
read PPCR |
|
SRPPCR |
0011001110 |
O1 |
|
Rd = PPCR |
not generate flags |
|
|
|
|
|
|
0D0 |
208 |
|
|
read PPDTR |
|
SRPPDTR |
0011010000 |
O1 |
|
Rd = PPDTR |
not generate flags |
|
|
|
|
|
|
0D1 |
209 |
|
|
read PTIDR |
|
SRPTIDR |
0011010001 |
O1 |
|
Rd = PTIDR |
not generate flags |
|
|
|
|
|
|
0D3 |
211 |
○ |
|
read PSR |
|
SRPSR |
0011010011 |
O1 |
|
Rd = PSR |
not generate flags |
|
|
|
|
|
|
0D4 |
212 |
○ |
|
read FRCR to {FRCHR, FRCLR} |
|
SRFRCR |
0011010100 |
C |
|
{FRCHR, FRCLR} = FRCR |
not generate flags |
|
|
|
|
|
|
0D5 |
213 |
○ |
|
read FRCLR |
|
SRFRCLR |
0011010101 |
O1 |
|
Rd = FRCLR |
not generate flags |
|
|
|
|
|
|
0D6 |
214 |
○ |
|
read FRCHR |
|
SRFRCHR |
0011010110 |
O1 |
|
Rd = FRCHR |
not generate flags |
|
|
|
|
|
|
0D7 |
215 |
○ |
|
read PFLAGR |
|
SRPFLAGR |
0011010111 |
O1 |
|
Rd = PFLAGR |
not generate flags |
|
|
|
|
|
|
0D8 |
216 |
○ |
|
read FI0R |
|
SRFI0R |
0011011000 |
O1 |
|
Rd = FI0R |
not generate flags |
|
|
|
|
|
|
0D9 |
217 |
○ |
|
read FI1R |
|
SRFI1R |
0011011001 |
O1 |
|
Rd = FI1R |
not generate flags |
|
|
|
|
|
|
0E0 |
224 |
○ |
System Register Write |
store SPR |
|
SRSPW |
0011100000 |
O1 |
|
SPR = Rd |
not generate flags |
|
|
|
|
|
|
0E1 |
225 |
|
|
store PDTR |
|
SRPDTW |
0011100001 |
O1 |
|
PDTR = Rd |
not generate flags |
|
|
カーネルモードのみ実行可能 |
|
特権違反 |
|
0E5 |
229 |
○ |
|
store PSR_IM |
|
SRIEIW |
0011100101 |
O1 |
I11 |
PSR = (PSR & 0xFFFFFFFB) | ((Rs « 2) & 0x00000004) |
not generate flags |
|
|
ルートモードのみ実行可能 |
3 |
特権違反 |
1で許可 |
0E8 |
232 |
|
|
store TISR |
|
SRTISW |
0011101000 |
O1 |
|
TISPR = Rd |
not generate flags |
|
|
ルートモードのみ実行可能 |
3 |
特権違反 |
|
0E9 |
233 |
|
|
store KPDTR |
|
SRKPDTW |
0011101001 |
O1 |
|
KPDTR = Rd |
not generate flags |
|
|
ルートモードのみ実行可能 |
3 |
特権違反 |
|
0EA |
234 |
|
|
store PSR_MMUMOD |
|
SRMMUW |
0011101010 |
O1 |
I11 |
PSR = (PSR & 0xFFFFFFFC) | (Rs & 0x0000003) |
not generate flags |
|
|
ルートモードのみ実行可能 |
3 |
特権違反 |
0=アドレス変換なし, 1=予約, 2=1段変換, 3=2段変換 |
0ED |
237 |
○ |
|
store PPSR |
|
SRPPSW |
0011101101 |
O1 |
|
PPSR = Rd |
not generate flags |
|
|
|
|
|
|
0EE |
238 |
○ |
|
store PPCR |
|
SRPPCW |
0011101110 |
O1 |
|
PPCR = Rd |
not generate flags |
|
|
|
|
|
|
0F0 |
240 |
|
|
store PPDTR |
|
SRPPDTW |
0011110000 |
O1 |
|
PPDTR = Rd |
not generate flags |
|
|
|
|
|
|
0F1 |
241 |
|
|
store PTIDR |
|
SRPTIDW |
0011110001 |
O1 |
|
PTIDR = Rd |
not generate flags |
|
|
|
|
|
|
0F2 |
242 |
○ |
|
store IDTR |
|
SRIDTW |
0011110010 |
O1 |
|
IDTR = Rd |
not generate flags |
|
|
|
|
|
|
0F3 |
243 |
○ |
|
store PSR |
|
SRPSW |
0011110011 |
O1 |
|
PSR = Rd |
not generate flags |
|
|
|
|
|
|
0F4 |
244 |
○ |
|
store FRCR from {FRCLR, FRCHR} |
|
SRFRCW |
0011110100 |
C |
|
FRCR = {FRCLR, FRCHR} |
not generate flags |
|
|
|
|
|
|
0F5 |
245 |
○ |
|
store FRCLR |
|
SRFRCLW |
0011110101 |
O1 |
|
FRCLR |
not generate flags |
|
|
|
|
|
|
0F6 |
246 |
○ |
|
store FRCHR |
|
SRFRCHW |
0011110110 |
O1 |
|
FRCHR |
not generate flags |
|
|
|
|
|
|
0FF |
255 |
○ |
|
store PSR add immediate |
sign extension・2bit left shift |
SRSPADD |
0011111111 |
|
CI16 |
SPR = SPR + immediate |
not generate flags |
|
|
|
|
|
|
100 |
256 |
○ |
Other |
no operation |
|
NOP |
0100000000 |
C |
|
no operation |
not generate flags |
|
|
|
|
|
|
101 |
257 |
|
|
pipline halt |
|
HALT |
0100000001 |
C |
|
halt |
not generate flags |
|
|
kernelモードのみ実行可能 |
3 |
特権違反 |
|
102 |
258 |
○ |
|
move data |
|
MOVE |
0100000010 |
O2 |
|
Rd = Rs |
not generate flags |
|
|
|
|
|
|
103 |
259 |
○ |
|
move PCR add immediate |
sign extension・2bit left shift |
MOVEPC |
0100000011 |
O2 |
I11 |
Rd = Rs + PCR |
not generate flags |
|
|
|
|
|
|
120 |
288 |
|
OS & Interrupt Support |
software interrupt |
|
SWI |
0100100000 |
|
I11 |
Software Interrupt, Interrupt Vector:Mask8bit(Rs) |
not generate flags |
|
|
|
|
|
|
121 |
289 |
|
|
test and set |
|
TAS |
0100100001 |
O2 |
I11 |
tas gr[src0], mem[src1] |
not generate flags |
|
|
|
|
|
|
122 |
290 |
○ |
|
set interrupt discriptor table |
|
IDTS |
0100100010 |
C |
|
CoreIDT = MEMORY[IDTR] |
フラグを発生しない |
|
|
カーネルモードのみ |
|
特権違反 |
IDTRの情報をもとにハードウェア割り込みの情報を内部レジスタに退避 |
123 |
291 |
|
|
load linked |
|
LDL |
0100100011 |
|
|
|
|
|
|
|
|
|
|
124 |
292 |
|
|
store conditional |
|
STC |
0100100100 |
|
|
|
|
|
|
|
|
|
|