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

📄 cpuops.s

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 S
📖 第 1 页 / 共 5 页
字号:
		PushByte NMI3	xorl %ecx, %ecx	movl %ecx, ShiftedPB	movb %cl, PB	addl $12, CYCLES	movl $0xFFEA, %edx	call S9xGetWord	movl %eax, %edx	andl $0xffff, %edx	jmp S9xSetPCBase.NMI_EMULATION:	movl PC, %eax	subl PCBase, %eax	PushWord NMI4		S9xPackStatus NMI2	movb FLAGS, %al	movb %al, OpenBus	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte NMI5	xorl %ecx, %ecx	movl %ecx, ShiftedPB	movb %cl, PB	addl $6, CYCLES	movl $0xFFFA, %edx	call S9xGetWord	movl %eax, %edx	andl $0xffff, %edx	jmp S9xSetPCBase.data.LC3:	.string	"*** COP".textOp02:#ifdef DEBUGGER	testb $TRACE_FLAG, Flags	je .COP_NO_TRACE	pushl $.LC3	ccall S9xTraceMessage	addl $4,%esp.COP_NO_TRACE:#endif	testw $Emulation, FLAGS16	jnz .COP_EMULATION	movb PB, %al	PushByte COP1	movl PC, %eax	subl PCBase, %eax	incl %eax	PushWord COP2		S9xPackStatus COP	movb FLAGS, %al	movb %al, OpenBus	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte COP3	xorl %ecx, %ecx	movl %ecx, ShiftedPB	movb %cl, PB	addl $12, CYCLES	movl $0xFFE4, %edx	call S9xGetWord	movl %eax, %edx	andl $0xffff, %edx	call S9xSetPCBase	jmp MainAsmLoop.COP_EMULATION:	movl PC, %eax	subl PCBase, %eax	incl %eax	PushWord COP4		S9xPackStatus COP2	movb FLAGS, %al	movb %al, OpenBus	andb $~Decimal, FLAGS	orb $IRQ, FLAGS		PushByte COP5	xorl %ecx, %ecx	movl %ecx, ShiftedPB	movb %cl, PB	addl $6, CYCLES	movl $0xFFF4, %edx	call S9xGetWord	movl %eax, %edx	andl $0xffff, %edx	call S9xSetPCBase	jmp MainAsmLoop/* JML */OpDC:	AbsoluteIndirectLong8 JML JUMP	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, ShiftedPB	sarl $16, %ecx	movb %cl, PB	addl $12, CYCLES	call S9xSetPCBase	jmp MainAsmLoopOp5C:	AbsoluteLong8 JML JUMP	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSetPCBase	jmp MainAsmLoop/* JMP */Op4C:	Absolute8 JMP JUMP	andl $0xffff, %edx	orl  ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoopOp6C:	AbsoluteIndirect8 JMP JUMP	andl $0xffff, %edx	orl  ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoopOp7C:	AbsoluteIndexedIndirect8 JMP JUMP	addl $6, CYCLES	andl $0xffff, %edx	orl ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoop/* JSL */Op22E1:	movb PB, %al	PushByte JSL_ABSL_E	movl PC, %eax	subl PCBase, %eax	addl $2, %eax	PushWordENew JSL_ABSL_E	AbsoluteLong8 JSL JUMP	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSetPCBase	jmp MainAsmLoopOp22:	movb PB, %al	PushByte JSL_ABSL	movl PC, %eax	subl PCBase, %eax	addl $2, %eax	PushWord JSL_ABSL	AbsoluteLong8 JSL JUMP	movl %edx, %ecx	andl $0xff0000, %ecx	movl %ecx, ShiftedPB	sarl $16, %ecx	movb %cl, PB	call S9xSetPCBase	jmp MainAsmLoop/* RTL */Op6BE1:	addl $12, CYCLES	PullWord RTL_E	pushl %eax	PullByte RTL_E	movl SS, %edx	addl $0xFF, %edx	movb $0x01, %dh	movw %dx, SS	popl %edx	movb %al, PB	incw %dx	andl $0xff, %eax	andl $0xffff, %edx	sall $16, %eax	movl %eax, ShiftedPB	orl %eax, %edx	call S9xSetPCBase	jmp MainAsmLoopOp6B:	addl $12, CYCLES	PullWord RTL	pushl %eax	PullByte RTL	popl %edx	movb %al, PB	incw %dx	andl $0xff, %eax	andl $0xffff, %edx	sall $16, %eax	movl %eax, ShiftedPB	orl %eax, %edx	call S9xSetPCBase	jmp MainAsmLoop/* JSR ABS */Op20:	addl $6, CYCLES	movl PC, %eax	subl PCBase, %eax	incl %eax	PushWord JSR_ABS	Absolute8 JSR_ABS JUMP	andl $0xffff, %edx	orl  ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoop/* JSR ABS INDEXED INDIRECT */OpFCE1:	addl $6, CYCLES	movl PC, %eax	subl PCBase, %eax	incl %eax	PushWordENew JSR_AII_E	AbsoluteIndexedIndirect8 JSR JUMP	andl $0xffff, %edx	orl  ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoopOpFC:	addl $6, CYCLES	movl PC, %eax	subl PCBase, %eax	incl %eax	PushWord JSR_AII	AbsoluteIndexedIndirect8 JSR JUMP	andl $0xffff, %edx	orl  ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoop/* RTS */Op60:	addl $6 * 3, CYCLES	PullWord RTS	incl %eax	movl %eax, %edx	andl $0xffff, %edx	orl  ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoop/* MVN */Op54X1:	addl MemSpeedx2, CYCLES	addl $12, CYCLES	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, ShiftedDB	movb 1(PC), %dl	movb %dl, OpenBus	sall $16, %edx	movw XX, %dx	call S9xGetByte	movl ShiftedDB, %edx	movw YY, %dx	call S9xSetByte	incb XL	incb YL	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVN_EXIT8	decl PC	jmp MainAsmLoop.MVN_EXIT8:	addl $2, PC	jmp MainAsmLoopOp54X0:	addl MemSpeedx2, CYCLES	addl $12, CYCLES	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, ShiftedDB	movb 1(PC), %dl	movb %dl, OpenBus	sall $16, %edx	movw XX, %dx	call S9xGetByte	movl ShiftedDB, %edx	movw YY, %dx	call S9xSetByte	incw XX	incw YY	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVN_EXIT16	decl PC	jmp MainAsmLoop.MVN_EXIT16:	addl $2, PC	jmp MainAsmLoop/* MVP */Op44X1:	addl MemSpeedx2, CYCLES	addl $12, CYCLES	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, ShiftedDB	movb 1(PC), %dl	movb %dl, OpenBus	sall $16, %edx	movw XX, %dx	call S9xGetByte	movl ShiftedDB, %edx	movw YY, %dx	call S9xSetByte	decb XL	decb YL	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVP_EXIT8	decl PC	jmp MainAsmLoop.MVP_EXIT8:	addl $2, PC	jmp MainAsmLoopOp44X0:	addl MemSpeedx2, CYCLES	addl $12, CYCLES	xorl %edx, %edx	movb (PC), %dl	movb %dl, DB	sall $16, %edx	movl %edx, ShiftedDB	movb 1(PC), %dl	movb %dl, OpenBus	sall $16, %edx	movw XX, %dx	call S9xGetByte	movl ShiftedDB, %edx	movw YY, %dx	call S9xSetByte	decw XX	decw YY	movw AA, %ax	decw %ax	movw %ax, AA	cmpw $0xffff, %ax	je .MVP_EXIT16	decl PC	jmp MainAsmLoop.MVP_EXIT16:	addl $2, PC	jmp MainAsmLoop/* REP */OpC2:	addl MemSpeed, CYCLES	addl $6, CYCLES	movb (PC), %al	incl PC	notb %al	andb %al, FLAGS	andb %al, _Negative	andb %al, _Carry	testb $Zero, %al	setz %ah	orb %ah, _Zero	shrb $6, %al	andb %al, _Overflow	testw $Emulation, FLAGS16	jz .REP_NO_EMU	orb $(MemoryFlag | IndexFlag), FLAGS	.REP_NO_EMU:	testb $IndexFlag, FLAGS	jz .REP16	xorb %al, %al	movb %al, XH	movb %al, YH.REP16:	S9xFixCycles REP/*	CheckForIrq REP */	jmp MainAsmLoop/* SEP */OpE2:	addl MemSpeed, CYCLES	addl $6, CYCLES	movb (PC), %al	incl PC	orb %al, FLAGS	orb %al, _Negative	movb %al, %ah	shrb $6, %ah	andb $1, %ah	orb %ah, _Overflow	test $Zero, %al	jz .SEP_NO_ZERO	movb $0, _Zero.SEP_NO_ZERO:	andb $1, %al	orb %al, _Carry	testw $Emulation, FLAGS16	jz .SEP_NO_EMU	orb $(MemoryFlag | IndexFlag), FLAGS	.SEP_NO_EMU:	testb $IndexFlag, FLAGS	jz .SEP16	xorb %al, %al	movb %al, XH	movb %al, YH.SEP16:	S9xFixCycles SEP	jmp MainAsmLoop/* XBA */OpEB:	addl $12, CYCLES	movb AL, %ah	movb AH, %al	movb %ah, AH	movb %al, AL	SetZN	jmp MainAsmLoop/* RTI */Op40:	addl $12, CYCLES	PullByte RTI	movb %al, FLAGS	PullWord RTI	andl $0xffff, %eax	pushl %eax	testw $Emulation, FLAGS16	jnz .RTI_EMU	PullByte RTI2	andl $0xff, %eax	jmp .RTI_SKIP_EMU.RTI_EMU:	orb $(MemoryFlag | IndexFlag), FLAGS	/*XXX: HERE xorl %eax, %eax*/	movl ShiftedPB, %eax	sarl $16, %eax.RTI_SKIP_EMU:	movb %al, PB	popl %edx	sall $16, %eax	orl %eax, %edx	movl %eax, ShiftedPB	call S9xSetPCBase	testb $IndexFlag, FLAGS	jz .RTI16	xorb %al, %al	movb %al, XH	movb %al, YH.RTI16:	S9xUnpackStatus RTI	S9xFixCycles RTI/*	CheckForIrq RTI */	jmp MainAsmLoop/* WAI */OpCB:#if 0	cmpb $0, IRQActive	je .L5334	addl $12, CYCLES	jmp MainAsmLoop.L5334:#endif	movb $1, WaitingForInterrupt	decl PC	movb Shutdown, %al	testb %al, %al	je .NoShutdown	movl NextEvent, CYCLES	SAVE_CYCLES	ccall S9xUpdateAPUTimer	cmpb $0, APUExecuting	je MainAsmLoop	movb $0, CPUExecuting.WAITExecAPU:#ifdef DEBUGGER	testb $2,APUFlags	je .WAITNoAPUS9xTrace	STORE_REGISTERS	ccall S9xTraceAPU	LOAD_REGISTERS.WAITNoAPUS9xTrace:#endif	xorl %eax,%eax#ifdef SPC700_C	movl APUPC,%edx	SAVE_CYCLES	movb (%edx),%al#else	movb (APUPC),%al#endif	movl S9xAPUCycles(,%eax,4), %edx	movl S9xApuOpcodes(,%eax,4),%eax	addl %edx, APUCycles	call *%eax#ifdef SPC700_C        LOAD_CYCLES#endif	movl NextEvent, %eax	cmpl %eax, APUCycles	jl .WAITExecAPU	movb $1, CPUExecuting	jmp MainAsmLoop.NoShutdown:	addl $12, CYCLES	jmp MainAsmLoop/* STP */OpDB:	decl PC	orb $DEBUG_MODE_FLAG, Flags	jmp MainAsmLoop/* Reserved opcode (WDM) */Op42:	jmp MainAsmLoop.globl S9xOpcodesM1X1.data	.align 4S9xOpcodesM1X1:	.long Op00	.long Op01M1	.long Op02	.long Op03M1	.long Op04M1	.long Op05M1	.long Op06M1	.long Op07M1	.long Op08	.long Op09M1	.long Op0AM1	.long Op0B	.long Op0CM1	.long Op0DM1	.long Op0EM1	.long Op0FM1	.long Op10	.long Op11M1	.long Op12M1	.long Op13M1	.long Op14M1	.long Op15M1	.long Op16M1	.long Op17M1	.long Op18	.long Op19M1	.long Op1AM1	.long Op1B	.long Op1CM1	.long Op1DM1	.long Op1EM1	.long Op1FM1	.long Op20	.long Op21M1	.long Op22	.long Op23M1	.long Op24M1	.long Op25M1	.long Op26M1	.long Op27M1	.long Op28	.long Op29M1	.long Op2AM1	.long Op2B	.long Op2CM1	.long Op2DM1	.long Op2EM1	.long Op2FM1	.long Op30	.long Op31M1	.long Op32M1	.long Op33M1	.long Op34M1	.long Op35M1	.long Op36M1	.long Op37M1	.long Op38	.long Op39M1	.long Op3AM1	.long Op3B	.long Op3CM1	.long Op3DM1	.long Op3EM1	.long Op3FM1	.long Op40	.long Op41M1	.long Op42	.long Op43M1	.long Op44X1	.long Op45M1	.long Op46M1	.long Op47M1	.long Op48M1	.long Op49M1	.long Op4AM1	.long Op4B	.long Op4C	.long Op4DM1	.long Op4EM1	.long Op4FM1	.long Op50	.long Op51M1	.long Op52M1	.long Op53M1	.long Op54X1	.long Op55M1	.long Op56M1	.long Op57M1	.long Op58	.long Op59M1	.long Op5AX1	.long Op5B	.long Op5C	.long Op5DM1	.long Op5EM1	.long Op5FM1	.long Op60	.long Op61M1	.long Op62	.long Op63M1	.long Op64M1	.long Op65M1	.long Op66M1	.long Op67M1	.long Op68M1	.long Op69M1	.long Op6AM1	.long Op6B	.long Op6C	.long Op6DM1	.long Op6EM1	.long Op6FM1	.long Op70	.long Op71M1	.long Op72M1	.long Op73M1	.long Op74M1	.long Op75M1	.long Op76M1	.long Op77M1	.long Op78	.long Op79M1	.long Op7AX1	.long Op7B	.long Op7C	.long Op7DM1	.long Op7EM1	.long Op7FM1	.long Op80	.long Op81M1	.long Op82	.long Op83M1	.long Op84X1	.long Op85M1	.long Op86X1	.long Op87M1	.long Op88X1	.long Op89M1	.long Op8AM1	.long Op8B	.long Op8CX1	.long Op8DM1	.long Op8EX1	.long Op8FM1	.long Op90	.long Op91M1	.long Op92M1	.long Op93M1	.long Op94X1	.long Op95M1	.long Op96X1	.long Op97M1	.long Op98M1	.long Op99M1	.long Op9A	.long Op9BX1	.long Op9CM1	.long Op9DM1	.long Op9EM1	.long Op9FM1	.long OpA0X1	.long OpA1M1	.long OpA2X1	.long OpA3M1	.long OpA4X1	.long OpA5M1	.long OpA6X1	.long OpA7M1	.long OpA8X1	.long OpA9M1	.long OpAAX1	.long OpAB	.long OpACX1	.long OpADM1	.long OpAEX1	.long OpAFM1	.long OpB0	.long OpB1M1	.long OpB2M1	.long OpB3M1	.long OpB4X1	.long OpB5M1	.long OpB6X1	.long OpB7M1	.long OpB8	.long OpB9M1	.long OpBAX1	.long OpBBX1	.long OpBCX1	.long OpBDM1	.long OpBEX1	.long OpBFM1	.long OpC0X1	.long OpC1M1	.long OpC2	.long OpC3M1	.long OpC4X1	.long OpC5M1	.long OpC6M1	.long OpC7M1	.long OpC8X1	.long OpC9M1	.long OpCAX1	.long OpCB	.long OpCCX1	.long OpCDM1	.long OpCEM1	.long OpCFM1	.long OpD0	.long OpD1M1	.long OpD2M1	.long OpD3M1	.long OpD4	.long OpD5M1	.long OpD6M1	.long OpD7M1	.long OpD8	.long OpD9M1	.long OpDAX1	.long OpDB	.long OpDC	.long OpDDM1	.long OpDEM1	.long OpDFM1	.long OpE0X1	.long OpE1M1	.long OpE2	.long OpE3M1	.long OpE4X1	.long OpE5M1	.long OpE6M1	.long OpE7M1	.long OpE8X1	.long OpE9M1	.long OpEA	.long OpEB	.long OpECX1	.long OpEDM1	.long OpEEM1	.long OpEFM1	.long OpF0	.long OpF1M1	.long OpF2M1	.long OpF3M1	.long OpF4	.long OpF5M1	.long OpF6M1	.long OpF7M1	.long OpF8	.long OpF9M1	.long OpFAX1	.long OpFB	.long OpFC	.long OpFDM1	.long OpFEM1	.long OpFFM1.globl S9xOpcodesE1.data	.align 4S9xOpcodesE1:	.long Op00	.long Op01M1	.long Op02	.long Op03M1	.long Op04M1	.long Op05M1	.long Op06M1	.long Op07M1	.long Op08E1	.long Op09M1	.long Op0AM1	.long Op0BE1	.long Op0CM1	.long Op0DM1	.long Op0EM1	.long Op0FM1	.long Op10	.long Op11M1	.long Op12M1	.long Op13M1	.long Op14M1	.long Op15M1	.long Op16M1	.long Op17M1	.long Op18	.long Op19M1	.long Op1AM1	.long Op1B	.long Op1CM1	.long Op1DM1	.long Op1EM1	.long Op1FM1	.long Op20	.long Op21M1	.long Op22E1	.long Op23M1	.long Op24M1	.long Op25M1	.long Op26M1	.long Op27M1	.long Op28E1	.long Op29M1	.long Op2AM1	.long Op2BE1	.long Op2CM1	.long Op2DM1	.long Op2EM1	.long Op2FM1	.long Op30	.long Op31M1	.long Op32M1	.long Op33M1	.long Op34M1	.long Op35M1	.long Op36M1	.long Op37M1	.long Op38	.long Op39M1	.long Op3AM1	.long Op3B	.long Op3CM1	.long Op3DM1	.long Op3EM1	.long Op3FM1	.long Op40	.long Op41M1	.long Op42	.long Op43M1	.long Op44X1	.long Op45M1	.long Op46M1	.long Op47M1	.long Op48E1	.long Op49M1	.long Op4AM1	.long Op4BE1	.long Op4C	.long Op4DM1	.long Op4EM1	.long Op4FM1	.long Op50	.long Op51M1	.long Op52M1	.long Op53M1	.long Op54X1	.long Op55M1	.long Op56M1	.long Op57M1	.long Op58	.long Op59M1	.long Op5AE1	.long Op5B	.long Op5C	.long Op5DM1	.long Op5EM1	.long Op5FM1	.long Op60	.long Op61M1	.long Op62E1	.long Op63M1	.long Op64M1	.long Op65M1	.long Op66M1	.long Op67M1	.long Op68E1	.long Op69M1	.long Op6AM1	.long Op6BE1	.long Op6C	.long Op6DM1	.long Op6EM1

⌨️ 快捷键说明

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