Fetch/Execute
Cycles for the MINIJVM Instruction Set
----------------------------------------------------
0. öPC=PC+1; fetch; goto (OP) öPCout öF0 F1 ENB INC PCin öCS RD OE Opin
IADD
(OP)ö= 60 ö
----------------------------------------------------------------
1. MAR=SP=SP-1;
rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS
ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR+H;
wr; End ö MDRout F0 F1 ENA ENB TOSin MDRin öCS /RD öEnd
ISUB
(OP)ö=
64
---------------------------------------------------------------
1. MAR=SP=SP-1;
rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS
ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR-H;
wr; End ö MDRout F0 F1 ENA ENB INVA INC TOSin MDRin CS /RD
ö ö ö ö ö ö ö ö ö ö ö ö ö ö End
IAND
(OP)ö=
7E
---------------------------------------------------------------
1. MAR=SP=SP-1;
rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS
ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR&&H;
wr; End öMDRout ENA ENB TOSin MDRin öCS /RD öEnd
IOR
(OP)ö=
80
---------------------------------------------------------------
1. MAR=SP=SP-1;
rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS
ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR||H;
wr; End öMDRout F1 ENA ENB TOSin MDRin öCS /RD öEnd
POP
(OP)ö=
57
---------------------------------------------------------------
1. MAR=SP=SP-1;
rd ö ö ö ö öSPout ö
F0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. TOS=MDR; End
ö ö ö ö ö ö
MDRout F1 ENB TOSin öEnd
IRETURN
(OP)ö= AC ö
----------------------------------------------------------------
1. Pwroff;
End ö ö ö ö ö ö öPwroff
ILOAD
(OP)ö= 15 ö
----------------------------------------------------------------
1.öPC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. MAR=MBR;
rd ö ö ö ö ö öMBRout F1 ENB öMARin ö ö ö ö ö ö öCS RD OE MDRin
3.
TOS=MDR ö ö ö ö ö ö ö öMDRout F1 ENB öTOSin
4.
MAR=SP=SP+1; wr; End ö SPout öF0 F1 ENB INC SPin MARin ö CS /RD öEnd
ö ö
BIPUSH
(OP)ö=
10
---------------------------------------------------------------
1.öPC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. MDR=TOS=MBRö
ö ö ö ö ö
MBRout F1 ENB MDRin TOSin
3.
MAR=SP=SP+1; wr; End ö SPout öF0 F1 ENB INC SPin MARin ö CS /RD öEnd
ISTORE
(OP)ö=
36
---------------------------------------------------------------
1.öPC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC PCin öCS RD OE MBRin
2. MAR=MBR ö ö
ö ö ö ö ö öMBRout F1
ENB öMARin
3. MDR=TOS; wrö
ö ö ö ö ö
TOSout F1 ENB öMDRin öCS /RD
4. MAR=SP=SP-1;
rd ö ö ö öSPout öF0
F1 ENB INVA SPin MARin öCS RD OE MDRin
5. TOS=MDR;
End ö ö ö ö ö MDRout F1 ENB öTOSin öEnd
GOTO
(OP)ö=
A7
---------------------------------------------------------------
1.öPC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC ö PCin ö ö ö CS RD OE MBRin
2. PC=MBR-1; End
ö ö ö ö öMBRout
F0 F1 ENB INVA öPCin öEnd
IFEQ
(OP)ö= 99 ö
----------------------------------------------------------------
1.öPC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. TOS=TOS
ö ö ö ö ö ö ö öTOSout F1 ENB öTOSin
3. if (Z)
PC=MBR-1 ö ö ö* Z -> (MBRout F0 F1 ENB INVA PCin)
4.
MAR=SP=SP-1; rd ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
5. TOS=MBR;
End ö ö ö ö ö MBRout F1 ENB öTOSin öEnd
IFLT
(OP)ö=
9B
---------------------------------------------------------------
1.öPC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. TOS=TOS
ö ö ö ö ö ö ö öTOSout F1 ENB öTOSin
3. if (N)
PC=MBR-1 ö ö ö* N -> (MBRout F0 F1 ENB INVA PCin)
4.
MAR=SP=SP-1; rd ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
5. TOS=MBR;
End ö ö ö ö ö MBRout F1 ENB öTOSin öEnd
IINC
(OP)ö= 84 ö
----------------------------------------------------------------
1. PC=PC+1;
fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö öCS RD OE MBRin
2. MAR=MBR;
rd ö ö ö ö ö öMBRoutö
F1 ENB
MARin ö ö ö ö öCS RD OE MDRin
3. MDR=MDR+1;
wr; End ö ö MDRout F0 F1 ENB INC MDRin ö CS /RD ö End
* Note: "N -> x" means "N implies x" which is logically equivalent
to "/N OR
x." öA circuit can easily be constructed for "/N OR x" using a NOT gate
and
an OR gate.