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

📄 cpuemu_02.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT8)(src)) > ((UINT8)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(4);return 8;}unsigned long op_5130_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT8)(src)) > ((UINT8)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}}return 9;}unsigned long op_5138_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT8)(src)) > ((UINT8)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(4);return 8;}unsigned long op_5139_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT8)(src)) > ((UINT8)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24(dsta,newv);}}}}}}}m68k_incpc(6);return 10;}unsigned long op_5140_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	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_5148_0(UINT32 opcode) /* SUBA */{	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_5150_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(2);return 6;}unsigned long op_5158_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(2);return 6;}unsigned long op_5160_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(2);return 7;}unsigned long op_5168_0(UINT32 opcode) /* SUB */{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(4);return 8;}unsigned long op_5170_0(UINT32 opcode) /* SUB */{	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());{	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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}}return 9;}unsigned long op_5178_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];{{	UINT32 src = srcreg;{	unsigned int dsta = (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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(4);return 8;}unsigned long op_5179_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];{{	UINT32 src = srcreg;{	unsigned int dsta = get_ilong(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 ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT16)(src)) > ((UINT16)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_word(dsta,newv);}}}}}}}m68k_incpc(6);return 10;}unsigned long op_5180_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	INT32 dst = m68k_dreg(regs, dstreg);{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	m68k_dreg(regs, dstreg) = (newv);}}}}}}m68k_incpc(2);return 2;}unsigned long op_5188_0(UINT32 opcode) /* SUBA */{	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_5190_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg);{	INT32 dst = cpu_readmem24_dword(dsta);{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}m68k_incpc(2);return 10;}unsigned long op_5198_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg);{	INT32 dst = cpu_readmem24_dword(dsta);	m68k_areg(regs, dstreg) += 4;{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}m68k_incpc(2);return 10;}unsigned long op_51a0_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];	UINT32 dstreg = opcode & 7;{{	UINT32 src = srcreg;{	unsigned int dsta = m68k_areg(regs, dstreg) - 4;{	INT32 dst = cpu_readmem24_dword(dsta);	m68k_areg (regs, dstreg) = dsta;{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}m68k_incpc(2);return 11;}unsigned long op_51a8_0(UINT32 opcode) /* SUB */{	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);{	INT32 dst = cpu_readmem24_dword(dsta);{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}m68k_incpc(4);return 12;}unsigned long op_51b0_0(UINT32 opcode) /* SUB */{	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());{	INT32 dst = cpu_readmem24_dword(dsta);{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}}return 13;}unsigned long op_51b8_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];{{	UINT32 src = srcreg;{	unsigned int dsta = (INT32)(INT16)get_iword(2);{	INT32 dst = cpu_readmem24_dword(dsta);{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}m68k_incpc(4);return 12;}unsigned long op_51b9_0(UINT32 opcode) /* SUB */{	UINT32 srcreg = imm8_table[((opcode >> 9) & 7)];{{	UINT32 src = srcreg;{	unsigned int dsta = get_ilong(2);{	INT32 dst = cpu_readmem24_dword(dsta);{{UINT32 newv = ((INT32)(dst)) - ((INT32)(src));{	int flgs = ((INT32)(src)) < 0;	int flgo = ((INT32)(dst)) < 0;	int flgn = ((INT32)(newv)) < 0;	SET_ZFLG (((INT32)(newv)) == 0);	SET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));	SET_CFLG (((UINT32)(src)) > ((UINT32)(dst)));	COPY_CARRY;	SET_NFLG (flgn != 0);	cpu_writemem24_dword(dsta,newv);}}}}}}}m68k_incpc(6);return 14;}

⌨️ 快捷键说明

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