📄 upac.vhd
字号:
-----------------------------------
-- FILE NAME : UPAC.vhd
-- FUNCTION : package
-- AUTHOR : Kazuma Mishima
-- DATE : 5/2001
------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package UPAC is
--RESET
constant RST_ACT :std_logic := '0';
--instruction
type INSTRUCTION is
(
S0,S00,S1,S2, --ALL instruction use this state
-- InternalInstruction start
MOV1,MOV2,MOV3, --MOV
MOVmr,MOVmr2, --MOV,MOVi,MOVireg (d=1)
MOVrm, --MOV (d=0)
MOVrr, --MOV (register mode)
MOVi1,MOVi2,MOVi3,MOVim3,MOVim4,MOVim5,MOVim6,MOVim7, --MOVi
MOVir3,MOVir4, --MOVi (register mode)
MOVir5,MOVir6, --MOVi (register mode,bw=1)
MOVireg1, --MOVireg
MOViregb2, --MOVireg (bw=0)
MOViregw2,MOViregw3, --MOVireg (bw=1)
MOVma1, --MOVma
MOVmab2, --MOVma (bw=0)
MOVmaw2,MOVmaw3, --MOVma (bw=1)
MOVma4,MOVma5, --MOVma
MOVam1, --MOVam
MOVamb2, --MOVam (bw=0)
MOVamw2,MOVamw3, --MOVam (bw=1)
MOVam4, --MOVam
MOVrms1,MOVrms2,MOVrms3,MOVms3,MOVms4, --MOVrms
MOVrs3, --MOVrms (register mode)
MOVsrm1,MOVsrm2,MOVsrm3,MOVsm3,MOVsm4, --MOVsrm
MOVsr3, --MOVsrm (register mode)
SP2,SPw, --PUSH,PUSHrs,PUSHcs
PUSHms1,PUSHms11,PUSHms2,PUSHms3,PUSHms4,PUSHms5, --PUSH
PUSHrs1,PUSHrs2, --PUSHrs
PUSHcs1,PUSHcs2,PUSHcs3, --PUSHcs
PUSHF1,PUSHF2,PUSHF3,PUSHF4, --PUSHF
-- POP1,POP2,POP3,POPm4,POPm5,POPm6, --POP
-- POPr4, --POP (register mode)
-- POP7,POP8, --POP,POPreg,POPsr,POPF
-- POPreg1,POPreg2,POPreg3, --POPreg
-- POPsr1,POPsr2,POPsr3, --POPsr
-- POPF1,POPF2,POPF3, --POPF
-- XCHGm1,XCHGm2,XCHGm3,XCHGmr3,XCHGmr4,XCHGmr5, --XCHG
-- XCHGrr3,XCHGrr4,XCHGrr5, --XCHG (register mode)
-- XCHGax1,XCHGax2,XCHGax3,XCHGax4, --XCHGax
-- INN1,INN2, --INN
-- INN3, --INN,INNdx
-- INdx1,INdx2, --INNdx
-- OUTT1,OUTT2, --OUTT
OUTdx1,OUTdx2,OUTdx3, --OUTdx
XLAT1,XLAT2,XLAT3,XLAT4,XLAT5, --XLAT
LEA1,LEA2,LEA22,LEA3, --LEA
LDSES1,LDSES2,LDSES22,LDSES3,LDSES4,LDSES5, --LDSES
LDS6, --LDSES (DS)
LES6, --LDSES (ES)
LAHF1, --LAHF
SAHF1, --SAHF
Imm2EA1,Imm2EA2,Imm2EA2mr, --Imm2EA
ADDie3,ADDie4,ADDie_c,ADDie4_2,ADDie4_3,ADDie5,ADDie6,--Imm2EA (ADDie)
SUBie3,SUBie4,SUBie_c,SUBie4_2,SUBie4_3,SUBie5,SUBie6,--IMM2EA (SUBie)
ADD1,ADD2,ADD3mr,ADD3mr2,ADD4,ADD5, --ADD
ADD3rr, --ADD (register mode)
ADDia1,ADDia2,ADDia3,ADDia_c,ADDia4,ADDia5,ADDia6, --ADDia
INC1,INC2,INC3,INC4, --INCDEC
INCr1,INCr2, --INCreg,DECreg
FF1,FF2,FF3, --not use
AAA1,AAA2, --AAA
DAA1,DAA2, --DAA
SUB1,SUB2,SUB3rr,SUB3mr,SUB3mr2,SUB4,SUB5, --SUB
SUBia1,SUBia2,SUBia3,SUBia_c,SUBia4,SUBia5,SUBia6, --SUBia
NEG1,NEG2,NEG3, --NEG
MUL1,MUL2mr,MUL2mr2,MUL2rr,MULlp1,MULlp2,MULlp3, --MUL
MULlp4,MUL3,MUL4, --MUL
IMUL1,IMUL1w,IMUL1c,IMUL2r,IMUL2rw,IMUL2rc,IMUL2m, --IMUL
IMUL2mw,IMUL2mc,IMUL2m2,IMUL2m2w,IMUL2m2c,IMULlp1, --IMUL
IMULlp2,IMULlp3,IMULlp4,IMUL3,IMUL4,IMUL5,IMUL6, --IMUL
IMUL7,IMUL8, --IMUL
AAM1,AAM2,AAM3,AAM4, --AAM
AAD1,AAD2, --AAD
CBW1,CBW2, --CBW
CWD1,CWD2, --CWD
DIV1,DIV11,DIV2,DIV3, --DIV
NOTO1,NOT11,NOTm2,NOTm3,NOTm4, --NOTO
NOTr2,NOTr3, --NOTO (register mode)
SFR1,SFR2,SFR22,SFRm3,SFRm4,SFR5,SFRrp5,SFR6, --SHIFT &ROTATE
ATOX1,ATOX2,ATOX22,ATOXm3,ATOXm4,ATOX5, --AND & OR & TEST & XOR
AOXr6, --AND,OR,XOR (d=1(write to register))
AOXer6, --AND,OR,XOR (register mode)
AOXem6, --AND,OR,XOR (EA mode)
TEST6, --TEST
AOXirm1,ATOXirm2,ATOXirm22,ATOXim3,ATOXim4,ATOXirm5, --AND,TEST&OR&XORirm
ATOXirm6,ATOXirm7,ATOXirm8, --AND,TEST&OR&XORirm
AOXir9, --AND,OR,XORirm (register mode)
AOXim9, --AND,OR,XORirm (EA mode)
TESTi9, --TESTirm
ATOXia1,ATOXia2,ATOXia3, --AND,TEST,OR,XORia
AOXia4, --AND,OR,XORia
TESTia4, --TESTia
-- REP1,REP2,REPc,REPd, --REP,MOVS,CMPS,SCAS,LODS,STOS
-- MOVS3,MOVS4,MOVS5,MOVS6,MOVS7,MOVS8,MOVS9,MOVSa,MOVSb,--MOVS
-- CMPS3,CMPS4,CMPS5,CMPS6,CMPS7,CMPS8,CMPS9, --CMPS
-- CMPSa,CMPSb,CMPSc,CMPSd, --CMPS
SCAS3,SCAS4,SCAS5,SCAS6,SCAS7,SCAS8,SCAS9, --SCAS
LODS3,LODS4,LODS5,LODS6,LODS7, --LODS
STOS3,STOS4,STOS5,STOS6, --STOS
CALL1,CALL2,CALL3,CALL4,CALL5, --CALL
CALLiw1,CALLiw2,CALLiw2mr,CALLiw3,CALLiw4,CALLiw5, --CALLiw
CALLiw6,CALLiw7,CALLiw8, --CALLiw
CALLdi1s,CALLdi1,CALLdi2,CALLdi3,CALLdi4,CALLdi4p, --CALLdi
CALLdi5,CALLdi6,CALLdi7,CALLdi8,CALLdi9,CALLdi10, --CALLdi
CALLii1,CALLii2,CALLii2mr,CALLii3,CALLii4,CALLii5, --CALLii
CALLii6,CALLii7,CALLii7p,CALLii8,CALLii9,CALLii10, --CALLii
CALLii11,CALLii12,CALLii13, --CALLii
JMP1,JMP2,JMP3, --JMP
JMPdw1,JMPdw2, --JMPdw
JMPiw1,JMPiw2,JMPiw2mr,JMPiw3,JMPiw4, --JMPiw
JMPdi1,JMPdi1e,JMPdi2,JMPdi2e,JMPdi3,JMPdi3e,JMPdi4, --JMPdi
JMPdi5,JMPdi6, --JMPdi
JMPii1,JMPii2,JMPii2mr,JMPii3,JMPii4,JMPii5, --JMPii
RET1,RET2,RET3,RET4,RET5, --RET
RETwa1,RETwa2,RETwa3,RETwa4,RETwa5,RETwa6, --RETwa
RETwa7,RETwa8, --RETwa
RETi1,RETi2,RETi3,RETi4,RETi5,RETi6, --RETi
RETia1,RETia2,RETia3,RETia4,RETia5,RETia6,RETia7, --RETia
RETia8,RETia9, --RETia
JJP1, --JUMP ALL
JJP2, --JUMP ALL,LOOP ALL
-- LOP1,LOP2,LOP3, --LOOP ALL
INT1,INT2,INT3,INT4,INT5,INT6,INT7,INT8,INT9,INTa, --INT,INT_3,INT0
INTb,INTc,INTd,INTe,INTf,INTg,INTh, --INT,INT_3,INT0
IRET1,IRET2,IRET3,IRET4,IRET5,IRET6,IRET7,IRET8, --IRET
IRET9,IRETa, --IRET
-- CLC1, --CLC
-- CMC1, --CMC
-- STC1, --STC
-- CLD1, --CLD
-- STD1, --STD
CLI1, --CLI
STI1, --STI
HLT1, --HLT
SOP1, --SOP
DNT1,DNT2 --DIV,MUL,NOT,NEG,ATOXirm
-- InternalInstruction end
);
constant CS : std_logic_vector( 1 downto 0 ) := "01";
constant DS : std_logic_vector( 1 downto 0 ) := "11";
constant SS : std_logic_vector( 1 downto 0 ) := "10";
constant ES : std_logic_vector( 1 downto 0 ) := "00";
constant OFR : integer := 8;
constant DFR : integer := 7;
constant IFR : integer := 6;
constant TFR : integer := 5;
constant SFR : integer := 4;
constant ZFR : integer := 3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -