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

📄 cpuemu_02.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
}}}return 8;}unsigned long op_4e75_0(UINT32 opcode) /* RTS */{	(void)(opcode);{	m68k_do_rts();}return 2;}unsigned long op_4e76_0(UINT32 opcode) /* TRAPV */{	(void)(opcode);{m68k_incpc(2);	if (GET_VFLG) { Exception(7,m68k_getpc()); goto endlabel909; }}endlabel909: ;return 2;}unsigned long op_4e77_0(UINT32 opcode) /* RTR */{	(void)(opcode);{	MakeSR();{	unsigned int sra = m68k_areg(regs, 7);{	INT16 sr = cpu_readmem24_word(sra);	m68k_areg(regs, 7) += 2;{	unsigned int pca = m68k_areg(regs, 7);{	INT32 pc = cpu_readmem24_dword(pca);	m68k_areg(regs, 7) += 4;	regs.sr &= 0xFF00; sr &= 0xFF;	regs.sr |= sr; m68k_setpc(pc);	MakeFromSR();}}}}}return 8;}unsigned long op_4e7a_0(UINT32 opcode) /* MOVEC2 */{	(void)(opcode);{if (!regs.s) { Exception(8,0); goto endlabel911; }{{	INT16 src = get_iword(2);{	int regno = (src >> 12) & 15;	UINT32 *regp = regs.regs + regno;	if (! m68k_movec2(src & 0xFFF, regp)) goto endlabel911;}}}}m68k_incpc(4);endlabel911: ;return 4;}unsigned long op_4e7b_0(UINT32 opcode) /* MOVE2C */{	(void)(opcode);{if (!regs.s) { Exception(8,0); goto endlabel912; }{{	INT16 src = get_iword(2);{	int regno = (src >> 12) & 15;	UINT32 *regp = regs.regs + regno;	if (! m68k_move2c(src & 0xFFF, regp)) goto endlabel912;}}}}m68k_incpc(4);endlabel912: ;return 4;}unsigned long op_4e90_0(UINT32 opcode) /* JSR */{	UINT32 srcreg = (opcode & 7);{{	unsigned int srca = m68k_areg(regs, srcreg);	m68k_do_jsr(m68k_getpc() + 2, srca);}}return 2;}unsigned long op_4ea8_0(UINT32 opcode) /* JSR */{	UINT32 srcreg = (opcode & 7);{{	unsigned int srca = m68k_areg(regs, srcreg) + (INT32)(INT16)get_iword(2);	m68k_do_jsr(m68k_getpc() + 4, srca);}}return 4;}unsigned long op_4eb0_0(UINT32 opcode) /* JSR */{	UINT32 srcreg = (opcode & 7);{{m68k_incpc(2);{	unsigned int srca = get_disp_ea_020(m68k_areg(regs, srcreg), next_iword());	m68k_do_jsr(m68k_getpc() + 0, srca);}}}return 5;}unsigned long op_4eb8_0(UINT32 opcode) /* JSR */{	(void)(opcode);{{	unsigned int srca = (INT32)(INT16)get_iword(2);	m68k_do_jsr(m68k_getpc() + 4, srca);}}return 4;}unsigned long op_4eb9_0(UINT32 opcode) /* JSR */{	(void)(opcode);{{	unsigned int srca = get_ilong(2);	m68k_do_jsr(m68k_getpc() + 6, srca);}}return 6;}unsigned long op_4eba_0(UINT32 opcode) /* JSR */{	(void)(opcode);{{	unsigned int srca = m68k_getpc () + 2;	srca += (INT32)(INT16)get_iword(2);	m68k_do_jsr(m68k_getpc() + 4, srca);}}return 4;}unsigned long op_4ebb_0(UINT32 opcode) /* JSR */{	(void)(opcode);{{m68k_incpc(2);{	unsigned int tmppc = m68k_getpc();	unsigned int srca = get_disp_ea_020(tmppc, next_iword());	m68k_do_jsr(m68k_getpc() + 0, srca);}}}return 5;}unsigned long op_4ed0_0(UINT32 opcode) /* JMP */{	UINT32 srcreg = (opcode & 7);{{	unsigned int srca = m68k_areg(regs, srcreg);	m68k_setpc(srca);}}return 2;}unsigned long op_4ee8_0(UINT32 opcode) /* JMP */{	UINT32 srcreg = (opcode & 7);{{	unsigned int srca = m68k_areg(regs, srcreg) + (INT32)(INT16)get_iword(2);	m68k_setpc(srca);}}return 4;}unsigned long op_4ef0_0(UINT32 opcode) /* JMP */{	UINT32 srcreg = (opcode & 7);{{m68k_incpc(2);{	unsigned int srca = get_disp_ea_020(m68k_areg(regs, srcreg), next_iword());	m68k_setpc(srca);}}}return 5;}unsigned long op_4ef8_0(UINT32 opcode) /* JMP */{	(void)(opcode);{{	unsigned int srca = (INT32)(INT16)get_iword(2);	m68k_setpc(srca);}}return 4;}unsigned long op_4ef9_0(UINT32 opcode) /* JMP */{	(void)(opcode);{{	unsigned int srca = get_ilong(2);	m68k_setpc(srca);}}return 6;}unsigned long op_4efa_0(UINT32 opcode) /* JMP */{	(void)(opcode);{{	unsigned int srca = m68k_getpc () + 2;	srca += (INT32)(INT16)get_iword(2);	m68k_setpc(srca);}}return 4;}unsigned long op_4efb_0(UINT32 opcode) /* JMP */{	(void)(opcode);{{m68k_incpc(2);{	unsigned int tmppc = m68k_getpc();	unsigned int srca = get_disp_ea_020(tmppc, next_iword());	m68k_setpc(srca);}}}return 5;}unsigned long op_5000_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	INT8 dst = m68k_dreg(regs, dstreg);{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff);}}}}}}m68k_incpc(2);return 2;}unsigned long op_5010_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg);{	INT8 dst = cpu_readmem24(dsta);{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(2);return 6;}unsigned long op_5018_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg);{	INT8 dst = cpu_readmem24(dsta);	m68k_areg(regs, dstreg) += areg_byteinc[dstreg];{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(2);return 6;}unsigned long op_5020_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg) - areg_byteinc[dstreg];{	INT8 dst = cpu_readmem24(dsta);	m68k_areg (regs, dstreg) = dsta;{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(2);return 7;}unsigned long op_5028_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg) + (INT32)(INT16)get_iword(2);{	INT8 dst = cpu_readmem24(dsta);{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(4);return 8;}unsigned long op_5030_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{m68k_incpc(2);{	unsigned int dsta = get_disp_ea_020(m68k_areg(regs, dstreg), next_iword());{	INT8 dst = cpu_readmem24(dsta);{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}}return 9;}unsigned long op_5038_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];{{	UINT32 src = srcreg;{	unsigned int dsta = (INT32)(INT16)get_iword(2);{	INT8 dst = cpu_readmem24(dsta);{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(4);return 8;}unsigned long op_5039_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];{{	UINT32 src = srcreg;{	unsigned int dsta = get_ilong(2);{	INT8 dst = cpu_readmem24(dsta);{{UINT32 newv = ((INT8)(dst)) + ((INT8)(src));{	int flgs = ((INT8)(src)) < 0;	int flgo = ((INT8)(dst)) < 0;	int flgn = ((INT8)(newv)) < 0;	SET_ZFLG (((INT8)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT8)(~dst)) < ((UINT8)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(6);return 10;}unsigned long op_5040_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	INT16 dst = m68k_dreg(regs, dstreg);{{UINT32 newv = ((INT16)(dst)) + ((INT16)(src));{	int flgs = ((INT16)(src)) < 0;	int flgo = ((INT16)(dst)) < 0;	int flgn = ((INT16)(newv)) < 0;	SET_ZFLG (((INT16)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT16)(~dst)) < ((UINT16)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff);}}}}}}m68k_incpc(2);return 2;}unsigned long op_5048_0(UINT32 opcode) /* ADDA */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	INT32 dst = m68k_areg(regs, dstreg);{	UINT32 newv = dst + src;	m68k_areg(regs, dstreg) = (newv);}}}}m68k_incpc(2);return 2;}unsigned long op_5050_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg);{	INT16 dst = cpu_readmem24_word(dsta);{{UINT32 newv = ((INT16)(dst)) + ((INT16)(src));{	int flgs = ((INT16)(src)) < 0;	int flgo = ((INT16)(dst)) < 0;	int flgn = ((INT16)(newv)) < 0;	SET_ZFLG (((INT16)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT16)(~dst)) < ((UINT16)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(2);return 6;}unsigned long op_5058_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg);{	INT16 dst = cpu_readmem24_word(dsta);	m68k_areg(regs, dstreg) += 2;{{UINT32 newv = ((INT16)(dst)) + ((INT16)(src));{	int flgs = ((INT16)(src)) < 0;	int flgo = ((INT16)(dst)) < 0;	int flgn = ((INT16)(newv)) < 0;	SET_ZFLG (((INT16)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT16)(~dst)) < ((UINT16)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(2);return 6;}unsigned long op_5060_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg) - 2;{	INT16 dst = cpu_readmem24_word(dsta);	m68k_areg (regs, dstreg) = dsta;{{UINT32 newv = ((INT16)(dst)) + ((INT16)(src));{	int flgs = ((INT16)(src)) < 0;	int flgo = ((INT16)(dst)) < 0;	int flgn = ((INT16)(newv)) < 0;	SET_ZFLG (((INT16)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT16)(~dst)) < ((UINT16)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(2);return 7;}unsigned long op_5068_0(UINT32 opcode) /* ADD */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg) + (INT32)(INT16)get_iword(2);{	INT16 dst = cpu_readmem24_word(dsta);{{UINT32 newv = ((INT16)(dst)) + ((INT16)(src));{	int flgs = ((INT16)(src)) < 0;	int flgo = ((INT16)(dst)) < 0;	int flgn = ((INT16)(newv)) < 0;	SET_ZFLG (((INT16)(newv)) == 0);	SET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));	SET_CFLG (((UINT16)(~dst)) < ((UINT16)(src)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -