⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upac.vhd

📁 X8086的VHDL源码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
-----------------------------------
--   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 + -