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

📄 cpuops.s

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 S
📖 第 1 页 / 共 5 页
字号:
/* BCC */Op90:	Relative	BranchCheck0 BCC	GetNotCarry	bf .BCC_EXIT#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BCC.BCC_EXIT:	jmp @r13	nop/* BCS */OpB0:	Relative	BranchCheck0 BCS	GetNotCarry	bt .BCS_EXIT#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BCS.BCS_EXIT:	jmp @r13	nop/* BEQ */OpF0:	Relative	BranchCheck2 BEQ	extu.w r7,r3	tst r3,r3	bf .BEQ_EXIT#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BEQ.BEQ_EXIT:	jmp @r13	nop/* BMI */Op30:	Relative	BranchCheck1 BMI	cmp/pz r7	bt .BMI_EXIT#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BMI.BMI_EXIT:	jmp @r13	nop/* BNE */OpD0:	Relative	BranchCheck1 BNE	extu.w r7,r3	tst r3,r3	bt .BNE_EXIT#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BNE.BNE_EXIT:	jmp @r13	nop/* BPL */Op10:	Relative	BranchCheck1 BPL	cmp/pz r7	bf .BPL_EXIT#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BPL.BPL_EXIT:	jmp @r13	nop/* BRA */Op80:	Relative#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	extu.w r4,PC	mov.l PCBase,r3	jmp @r13	add r3,PC/* BVC */Op50:	Relative	BranchCheck0 BVC	mov #Overflow,r1	tst r1,FLAGS	bf .BVC_EXIT:#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BVC.BVC_EXIT:	jmp @r13	nop/* BVS */Op70:	Relative	BranchCheck0 BVS	mov #Overflow,r1	tst r1,FLAGS	bt .BVS_EXIT:#ifdef VAR_CYCLES	add #6,CYCLES#else	add #1,CYCLES#endif	mov.l PCBase,r3	extu.w r4,PC	add r3,PC	CPUShutdown BVS.BVS_EXIT:	jmp @r13	nop	/* BRL */Op82:	RelativeLong BRL	extu.w r4,r4	mov.l ICPU,r0	mov.l @(16,r0),r2	mov.l S9xSetPCBase,r3	or r2,r4	Xlink/* CLC */Op18:	mov #~Carry,r0#ifdef VAR_CYCLES	add #6,CYCLES#endif	jmp @r13	and r0,FLAGS/* CLD */OpD8:	mov #~Decimal,r0#ifdef VAR_CYCLES	add #6,CYCLES#endif	jmp @r13	and r0,FLAGS/* CLI */Op58:	mov #~IRQ,r2#ifdef VAR_CYCLES	add #6,CYCLES#endif	mov.b IRQActive,r0	tst r0,r0	bt .CLI_EXIT	/* XXX: test for Settings.DisableIRQ */	mov.l S9xOpcode_IRQ,r3	and r2,FLAGS	Xlink.CLI_EXIT:	jmp @r13	and r2,FLAGS/* CLV */OpB8:	mov #~Overflow,r0#ifdef VAR_CYCLES	add #6,CYCLES#endif	jmp @r13	and r0,FLAGS/* DEX */OpCAX1:#ifdef VAR_CYCLES	add #6,CYCLES#endif	mov.b XL,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #-1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.b r0,XL	SetZNjmp r0OpCAX0:#ifdef VAR_CYCLES	add #6,CYCLES#endif	mov.w XX,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #-1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.w r0,XX	Set16ZNjmp r0/* DEY */Op88X1:#ifdef VAR_CYCLES	add #6,CYCLES#endif	mov.b YL,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #-1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.b r0,YL	SetZNjmp r0Op88X0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w YY,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #-1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.w r0,YY	Set16ZNjmp r0/* INX */OpE8X1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b XL,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.b r0, XL	SetZNjmp r0OpE8X0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w XX,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.w r0, XX	Set16ZNjmp r0/* INY */OpC8X1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b YL,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.b r0, YL	SetZNjmp r0OpC8X0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w YY,r0#ifdef CPU_SHUTDOWN	mov #0,r3#endif	add #1,r0#ifdef CPU_SHUTDOWN	mov.l r3,WaitAddress#endif	mov.w r0,YY	Set16ZNjmp r0/* NOP */OpEA:	jmp @r13#ifdef VAR_CYCLES	add #6,CYCLES#else	nop#endif/* PEA */OpF4:	Immediate16 PEA	PushWordjmp PEA/* PEI */OpD4:	DirectIndirect8 PEI	extu.w r4,r0	PushWordjmp PEI/* PER */Op62:	RelativeLong PER	extu.w r4,r0	PushWordjmp PER/* PHA */Op48M1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.b A,r0	PushBytejmp PHAOp48M0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.w A,r0	PushWordjmp PHA/* PHB */Op8B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b DB, r0	PushBytejmp PHB/* PHD */Op0B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w DD, r0	PushWordjmp PHD/* PHK */Op4B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b PB, r0	PushBytejmp PHK/* PHP */Op08:#ifdef VAR_CYCLES	add #6, CYCLES#endif	S9xPackStatus PHP	extu.b FLAGS, r0	PushBytejmp PHP/* PHX */OpDAX1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b XL, r0	PushBytejmp PHXOpDAX0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w XX, r0	PushWordjmp PHX/* PHY */Op5AX1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b YL, r0	PushBytejmp PHYOp5AX0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w YY, r0	PushWordjmp PHY/* PLA */Op68M1:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullByte PLA	extu.b A,r1	add r0,A	sub r1,A	SetZNjmp AOp68M0:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullWord PLA	extu.w r0,A	Set16ZNjmp A/* PLB */OpAB:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullByte PLB	mov.b r0, DB	extu.b r0,r1	mov.l ICPU,r2	shll16 r1	mov.l r1,@(20,r2)	SetZNjmp r0/* PLD */Op2B:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullWord PLD	mov.w r0 DD	Set16ZNjmp r0	/* PLP */Op28:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullByte PLP	extu.b FLAGS,r1	add r0,FLAGS	mov #IndexFlag,r2	sub r1,FLAGS	tst r2,r0	bt .PLP16	mov #0,r0	mov.b r0,XH	mov.b r0,YH.PLP16:	S9xUnpackStatus PLP	S9xFixCycles PLP	CheckForIrqjmp PLP /* Removed in 1.39. See asmops.h *//* PLX */OpFAX1:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullByte PLX	mov.b r0, XL	SetZNjmp r0OpFAX0:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullWord PLX	mov.w r0, XX	Set16ZNjmp r0/* PLY */Op7AX1:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullByte PLY	mov.b r0, YL	SetZNjmp r0Op7AX0:#ifdef VAR_CYCLES	add #12, CYCLES#endif	PullWord PLY	mov.w r0, YY	Set16ZNjmp r0/* SEC */Op38:	mov #Carry,r0#ifdef VAR_CYCLES	add #6, CYCLES#endif	jmp @r13	or r0,FLAGS/* SED */OpF8:		mov #Decimal,r0#ifdef VAR_CYCLES	add #6, CYCLES#endif	jmp @r13	or r0,FLAGS/* SEI */Op78:	mov #IRQ,r0#ifdef VAR_CYCLES	add #6, CYCLES#endif	jmp @r13	or r0,FLAGS/* TAX */OpAAX1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.b A,r0	mov.b r0, XL	SetZNjmp r0OpAAX0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.w A,r0	mov.w r0, XX	Set16ZNjmp r0/* TAY */OpA8X1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.b A,r0	mov.b r0, YL	SetZNjmp r0OpA8X0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.w A,r0	mov.w r0, YY	Set16ZNjmp r0/* TCD */Op5B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.w A,r0	mov.w r0, DD	Set16ZNjmp r0/* TCS */Op1B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	extu.w A,r0	mov #Emulation/4,r1	mov.w r0, SS	shll2 r1	tst r1,FLAGS16	bt .TCS_EXIT	mov #1,r0	mov.b r0,SH.TCS_EXIT:	jmp @r13	nop/* TDC */Op7B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w DD, r0	extu.w r0,A	Set16ZNjmp A/* TSC */Op3B:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w SS, r0	extu.w r0,A	Set16ZNjmp A/* TSX */OpBAX1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b SL, r0	mov.b r0, XL	SetZNjmp r0OpBAX0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w SS, r0	mov.w r0, XX	Set16ZNjmp r0/* TXA */Op8AM1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b XL, r0	extu.b A,r1	extu.b r0,r0	sub r1,A	add r0,A	SetZNjmp AOp8AM0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w XX, r0	extu.w r0,A	Set16ZNjmp A/* TXS */Op9A:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w XX, r0	mov #Emulation/4,r1	mov.w r0, SS	shll2 r1	tst r1,FLAGS16	bt .TXS_EXIT	mov #1,r0	mov.b r0,SH.TXS_EXIT:	jmp @r13	nop/* TXY */Op9BX1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b XL, r0	mov.b r0, YL	SetZNjmp r0Op9BX0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w XX, r0	mov.w r0, YY	Set16ZNjmp r0/* TYA */Op98M1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b YL, r0	extu.b A,r1	extu.b r0,r0	sub r1,A	add r0,A	SetZNjmp AOp98M0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w YY, r0	extu.w r0,A	Set16ZNjmp A/* TYX */OpBBX1:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.b YL, r0	mov.b r0, XL	SetZNjmp r0OpBBX0:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov.w YY, r0	mov.w r0, XX	Set16ZNjmp r0/* XCE */OpFB:#ifdef VAR_CYCLES	add #6, CYCLES#endif	mov FLAGS16, r0	mov.w .notemcymask,r1	and r1,FLAGS16	tst #Carry,r0	mov.w .emflag0,r1	bt .XCE_NO_CARRY	or r1,FLAGS16.XCE_NO_CARRY:	tst r1,r0	bt/s .XCE_NO_EMU	tst r1,FLAGS	add #Carry,FLAGS.XCE_NO_EMU:	bt/s .XCE_NO_EMULATION2	mov #IndexFlag,r1	mov #MemoryFlag|IndexFlag,r0	or r0,FLAGS	mov #1,r0	mov.b r0,SH.XCE_NO_EMULATION2:	tst r1,FLAGS	bt .XCE_NO_INDEX	mov #0,r0	mov.b r0, XH	mov.b r0, YH.XCE_NO_INDEX:	S9xFixCycles XCE	jmp @r13	nop.emflag0:	.word	EmulationOp00:#ifdef DEBUGGER	testb $TRACE_FLAG, Flags	je .BRK_NO_TRACE	pushl $.LC0	ccall S9xTraceMessage	addl $4,%esp.BRK_NO_TRACE:#endif	mov #1,r0	mov.b r0,BRKTriggered	mov.w .emflag,r0	tst r0,FLAGS16	bf .BRK_EMULATION	mov.b PB, r0	PushByte BRK1	mov.l PCBase,r0	neg r0,r0	add PC, r0	add #1,r0	PushWord BRK2		S9xPackStatus BRK	extu.b FLAGS, r0	mov #Decimal|IRQ,r1	or r1,FLAGS	add #-Decimal, FLAGS		PushByte BRK3	mov.l ICPU,r3	mov #0,r0	mov.l r0,@(16,r3)	mov.b r0,PB#ifdef VAR_CYCLES	add #12, CYCLES#else	add #8, CYCLES#endif	mov.l S9xGetWord,r3	mov #-0x1a,r4	jsr @r3	extu.w r4,r4	mov.l S9xSetPCBase,r3	extu.w r0,r4	Xlink.BRK_EMULATION:	mov.l PCBase,r0	neg r0,r0	add PC, r0	add #1,r0	PushWord BRK2		S9xPackStatus BRK2	extu.b FLAGS, r0	mov #Decimal|IRQ,r1	or r1,FLAGS	add #-Decimal, FLAGS		PushByte BRK3	mov.l ICPU,r3	mov #0,r0	mov.l r0,@(16,r3)	mov.b r0,PB#ifdef VAR_CYCLES	add #6, CYCLES#else	add #6, CYCLES#endif	mov.l S9xGetWord,r3	mov #-2,r4	jsr @r3	extu.w r4,r4	mov.l S9xSetPCBase,r3	extu.w r0,r4	Xlink.notemcymask:	.word	~(Emulation|Carry).emflag:	.word	Emulation#ifdef DEBUGGER	.align 4.LC0:	.ascii	"*** BRK"	.byte 0#endif	.globl S9xOpcode_IRQ_rS9xOpcode_IRQ_r:#ifdef DEBUGGER	testb $TRACE_FLAG, Flags	je .IRQ_NO_TRACE	pushl $.LC1	ccall S9xTraceMessage	addl $4, %esp.IRQ_NO_TRACE:#endif	mov.w .emflag1,r0	sts.l pr,@-r15	tst r0,FLAGS16	bf .IRQ_EMULATION	mov.b PB, r0	PushByte IRQ1	mov.l PCBase,r0	neg r0,r0	add PC, r0	PushWord IRQ2		S9xPackStatus IRQ	extu.b FLAGS, r0	mov #Decimal|IRQ,r1	or r1,FLAGS	add #-Decimal, FLAGS		PushByte IRQ3	mov.l ICPU,r3	mov #0,r0	mov.l r0,@(16,r3)	mov.b r0,PB#ifdef VAR_CYCLES	add #12, CYCLES#else	add #8, CYCLES#endif	mov.l Settings,r3	add #82,r3	! Settings.SA1	mov.b @r3,r0	tst r0,r0	bt .noirqsa1vector	mov.l .FillRAM2,r3	mov.l @r3,r3	mov.w .n2209,r0	add r0,r3	mov.b @r3,r0	tst #0x40,r0	bt .noirqsa1vector	add #5,r3	lds.l @r15+,pr	mov.w @r3,r4	mov.l S9xSetPCBase,r3	jmp @r3	extu.w r4,r4.noirqsa1vector:	mov.l S9xGetWord,r3	mov #-0x12,r4	jsr @r3	extu.w r4,r4	mov.l S9xSetPCBase,r3	lds.l @r15+,pr	jmp @r3	extu.w r0,r4.IRQ_EMULATION:	mov.l PCBase,r0	neg r0,r0	add PC, r0	PushWord IRQ4		S9xPackStatus IRQ2	extu.b FLAGS, r0	mov #Decimal|IRQ,r1	or r1,FLAGS	add #-Decimal, FLAGS		PushByte IRQ5	mov.l ICPU,r3	mov #0,r0	mov.l r0,@(16,r3)	mov.b r0,PB#ifdef VAR_CYCLES	add #6, CYCLES#else	add #6, CYCLES#endif	mov.l S9xGetWord,r3	mov #-0x2,r4	jsr @r3	extu.w r4,r4	mov.l S9xSetPCBase,r3	lds.l @r15+,pr	jmp @r3	extu.w r0,r4.emflag1:	.word	Emulation

⌨️ 快捷键说明

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