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

📄 cpuops.s

📁 著名SFC模拟器Snes9x的源代码。
💻 S
📖 第 1 页 / 共 4 页
字号:
OpAEX0:	Absolute8 LDX2	call S9xGetWord	Ldx16 ABSOpBEX1:	AbsoluteIndexedY8 LDX	call S9xGetByte	Ldx8 ABSYOpBEX0:	AbsoluteIndexedY8 LDX2	call S9xGetWord	Ldx16 ABSY/* LDY */OpA0X1:	Immediate8 LDY	Ldy8 IMMOpA0X0:	Immediate16 LDY	Ldy16 IMMOpA4X1:	Direct8 LDY	call S9xGetByte	Ldy8 DIROpA4X0:	Direct8 LDY2	call S9xGetWord	Ldy16 DIROpB4X1:	DirectIndexedX8 LDY	call S9xGetByte	Ldy8 DIXOpB4X0:	DirectIndexedX8 LDY2	call S9xGetWord	Ldy16 DIXOpACX1:	Absolute8 LDY	call S9xGetByte	Ldy8 ABSOpACX0:	Absolute8 LDY2	call S9xGetWord	Ldy16 ABSOpBCX1:	AbsoluteIndexedX8 LDY	call S9xGetByte	Ldy8 ABSXOpBCX0:	AbsoluteIndexedX8 LDY2	call S9xGetWord	Ldy16 ABSX/* LSR */Op4AM1:	movb AL, %al#ifdef VAR_CYCLES	addl $6, CYCLES#endif	shrb %al	movb %al, AL	SetZNC	jmp MainAsmLoopOp4AM0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	shrw AA	setnz _Zero	setc _Carry	movb AH, %ah	movb %ah, _Negative	jmp MainAsmLoopOp46M1:	Direct8 LSR	Lsr8 DIROp46M0:	Direct8 LSR2	Lsr16 DIROp56M1:	DirectIndexedX8 LSR	Lsr8 DIXOp56M0:	DirectIndexedX8 LSR2	Lsr16 DIXOp4EM1:	Absolute8 LSR	Lsr8 ABSOp4EM0:	Absolute8 LSR2	Lsr16 ABSOp5EM1:	AbsoluteIndexedX8 LSR	Lsr8 ABSXOp5EM0:	AbsoluteIndexedX8 LSR2	Lsr16 ABSX/* ORA */Op09M1:	Immediate8 ORA	Ora8 IMMOp09M0:	Immediate16 ORA	Ora16 IMMOp05M1:	Direct8 ORA	call S9xGetByte	Ora8 DIROp05M0:	Direct8 ORA2	call S9xGetWord	Ora16 DIROp15M1:	DirectIndexedX8 ORA	call S9xGetByte	Ora8 DIXOp15M0:	DirectIndexedX8 ORA2	call S9xGetWord	Ora16 DIXOp12M1:	DirectIndirect8 ORA	call S9xGetByte	Ora8 DIOp12M0:	DirectIndirect8 ORA2	call S9xGetWord	Ora16 DIOp01M1:	DirectIndexedIndirect8 ORA	call S9xGetByte	Ora8 DIIOp01M0:	DirectIndexedIndirect8 ORA2	call S9xGetWord	Ora16 DIIOp11M1:	DirectIndirectIndexed8 ORA	call S9xGetByte	Ora8 DIIYOp11M0:	DirectIndirectIndexed8 ORA2	call S9xGetWord	Ora16 DIIYOp07M1:	DirectIndirectLong8 ORA	call S9xGetByte	Ora8 DILOp07M0:	DirectIndirectLong8 ORA2	call S9xGetWord	Ora16 DILOp17M1:	DirectIndirectIndexedLong8 ORA	call S9xGetByte	Ora8 DIILOp17M0:	DirectIndirectIndexedLong8 ORA2	call S9xGetWord	Ora16 DIILOp0DM1:	Absolute8 ORA	call S9xGetByte	Ora8 ABSOp0DM0:	Absolute8 ORA2	call S9xGetWord	Ora16 ABSOp1DM1:	AbsoluteIndexedX8 ORA	call S9xGetByte	Ora8 ABSXOp1DM0:	AbsoluteIndexedX8 ORA2	call S9xGetWord	Ora16 ABSXOp19M1:	AbsoluteIndexedY8 ORA	call S9xGetByte	Ora8 ABSYOp19M0:	AbsoluteIndexedY8 ORA2	call S9xGetWord	Ora16 ABSYOp0FM1:	AbsoluteLong8 ORA	call S9xGetByte	Ora8 ABSLOp0FM0:	AbsoluteLong8 ORA2	call S9xGetWord	Ora16 ABSLOp1FM1:	AbsoluteLongIndexedX8 ORA	call S9xGetByte	Ora8 ALXOp1FM0:	AbsoluteLongIndexedX8 ORA2	call S9xGetWord	Ora16 ALXOp03M1:	StackRelative8 ORA	call S9xGetByte	Ora8 SRELOp03M0:	StackRelative8 ORA2	call S9xGetWord	Ora16 SRELOp13M1:	StackRelativeIndirectIndexed8 ORA	call S9xGetByte	Ora8 SRIIOp13M0:	StackRelativeIndirectIndexed8 ORA2	call S9xGetWord	Ora16 SRII/* ROL */Op2AM1:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	movb AL, %al	GetCarry	rclb %al	movb %al, AL	SetZNC	jmp MainAsmLoopOp2AM0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	GetCarry	movw AA, %ax	rclw %ax	movw %ax, AA	setc _Carry	movb %ah, _Negative	orb %ah, %al	movb %al, _Zero	jmp MainAsmLoopOp26M1:	Direct8 ROL	Rol8 DIROp26M0:	Direct8 ROL2	Rol16 DIROp36M1:	DirectIndexedX8 ROL	Rol8 DIXOp36M0:	DirectIndexedX8 ROL2	Rol16 DIXOp2EM1:	Absolute8 ROL	Rol8 ABSOp2EM0:	Absolute8 ROL2	Rol16 ABSOp3EM1:	AbsoluteIndexedX8 ROL	Rol8 ABSXOp3EM0:	AbsoluteIndexedX8 ROL2	Rol16 ABSX/* ROR */Op6AM1:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	movb AL, %al	GetCarry	rcrb %al	movb %al, AL	SetZNC	jmp MainAsmLoopOp6AM0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	GetCarry	movw AA, %ax	rcrw %ax	movw %ax, AA	setc _Carry	movb %ah, _Negative	orb %ah, %al	movb %al, _Zero	jmp MainAsmLoop	Op66M1:	Direct8 ROR	Ror8 DIROp66M0:	Direct8 ROR2	Ror16 DIROp76M1:	DirectIndexedX8 ROR	Ror8 DIXOp76M0:	DirectIndexedX8 ROR2	Ror16 DIXOp6EM1:	Absolute8 ROR	Ror8 ABSOp6EM0:	Absolute8 ROR2	Ror16 ABSOp7EM1:	AbsoluteIndexedX8 ROR	Ror8 ABSXOp7EM0:	AbsoluteIndexedX8 ROR2	Ror16 ABSX/* SBC */OpE9M1:	Immediate8 SBC	Sbc8 IMMOpE9M0:	Immediate16 SBC	Sbc16 IMMOpE5M1:	Direct8 SBC	call S9xGetByte	Sbc8 DIROpE5M0:	Direct8 SBC2	call S9xGetWord	Sbc16 DIROpF5M1:	DirectIndexedX8 SBC	call S9xGetByte	Sbc8 DIXOpF5M0:	DirectIndexedX8 SBC2	call S9xGetWord	Sbc16 DIXOpF2M1:	DirectIndirect8 SBC	call S9xGetByte	Sbc8 DIOpF2M0:	DirectIndirect8 SBC2	call S9xGetWord	Sbc16 DIOpE1M1:	DirectIndexedIndirect8 SBC	call S9xGetByte	Sbc8 DIIOpE1M0:	DirectIndexedIndirect8 SBC2	call S9xGetWord	Sbc16 DIIOpF1M1:	DirectIndirectIndexed8 SBC	call S9xGetByte	Sbc8 DIIYOpF1M0:	DirectIndirectIndexed8 SBC2	call S9xGetWord	Sbc16 DIIYOpE7M1:	DirectIndirectLong8 SBC	call S9xGetByte	Sbc8 DILOpE7M0:	DirectIndirectLong8 SBC2	call S9xGetWord	Sbc16 DILOpF7M1:	DirectIndirectIndexedLong8 SBC	call S9xGetByte	Sbc8 DIILOpF7M0:	DirectIndirectIndexedLong8 SBC2	call S9xGetWord	Sbc16 DIILOpEDM1:	Absolute8 SBC	call S9xGetByte	Sbc8 ABSOpEDM0:	Absolute8 SBC2	call S9xGetWord	Sbc16 ABSOpFDM1:	AbsoluteIndexedX8 SBC	call S9xGetByte	Sbc8 ABSXOpFDM0:	AbsoluteIndexedX8 SBC2	call S9xGetWord	Sbc16 ABSXOpF9M1:	AbsoluteIndexedY8 SBC	call S9xGetByte	Sbc8 ABSYOpF9M0:	AbsoluteIndexedY8 SBC2	call S9xGetWord	Sbc16 ABSYOpEFM1:	AbsoluteLong8 SBC	call S9xGetByte	Sbc8 ABSLOpEFM0:	AbsoluteLong8 SBC2	call S9xGetWord	Sbc16 ABSLOpFFM1:	AbsoluteLongIndexedX8 SBC	call S9xGetByte	Sbc8 ALXOpFFM0:	AbsoluteLongIndexedX8 SBC2	call S9xGetWord	Sbc16 ALXOpE3M1:	StackRelative8 SBC	call S9xGetByte	Sbc8 SRELOpE3M0:	StackRelative8 SBC2	call S9xGetWord	Sbc16 SRELOpF3M1:	StackRelativeIndirectIndexed8 SBC	call S9xGetByte	Sbc8 SRIIOpF3M0:	StackRelativeIndirectIndexed8 SBC2	call S9xGetWord	Sbc16 SRII/* STA */Op85M1:	Direct8 STA	Sta8 DIROp85M0:	Direct8 STA2	Sta16 DIROp95M1:	DirectIndexedX8 STA	Sta8 DIXOp95M0:	DirectIndexedX8 STA2	Sta16 DIXOp92M1:	DirectIndirect8 STA	Sta8 DIOp92M0:	DirectIndirect8 STA2	Sta16 DIOp81M1:	DirectIndexedIndirect8 STA	Sta8 DIIOp81M0:	DirectIndexedIndirect8 STA2	Sta16 DIIOp91M1:	DirectIndirectIndexed8 STA	Sta8 DIIYOp91M0:	DirectIndirectIndexed8 STA2	Sta16 DIIYOp87M1:	DirectIndirectLong8 STA	Sta8 DILOp87M0:	DirectIndirectLong8 STA2	Sta16 DILOp97M1:	DirectIndirectIndexedLong8 STA	Sta8 DIILOp97M0:	DirectIndirectIndexedLong8 STA2	Sta16 DIILOp8DM1:	Absolute8 STA	Sta8 ABSOp8DM0:	Absolute8 STA	Sta16 ABSOp9DM1:	AbsoluteIndexedX8 STA	Sta8 ABSXOp9DM0:	AbsoluteIndexedX8 STA2	Sta16 ABSXOp99M1:	AbsoluteIndexedY8 STA	Sta8 ABSYOp99M0:	AbsoluteIndexedY8 STA2	Sta16 ABSYOp8FM1:	AbsoluteLong8 STA	Sta8 ABSLOp8FM0:	AbsoluteLong8 STA2	Sta16 ABSLOp9FM1:	AbsoluteLongIndexedX8 STA	Sta8 ALXOp9FM0:	AbsoluteLongIndexedX8 STA2	Sta16 ALXOp83M1:	StackRelative8 STA	Sta8 SRELOp83M0:	StackRelative8 STA2	Sta16 SRELOp93M1:	StackRelativeIndirectIndexed8 STA	Sta8 SRIIOp93M0:	StackRelativeIndirectIndexed8 STA2	Sta16 SRII/* STX */Op86X1:	Direct8 STX	Stx8 DIROp86X0:	Direct8 STX2	Stx16 DIROp96X1:	DirectIndexedY8 STX	Stx8 DIYOp96X0:	DirectIndexedY8 STX2	Stx16 DIYOp8EX1:	Absolute8 STX	Stx8 ABSOp8EX0:	Absolute8 STX2	Stx16 ABS/* STY */Op84X1:	Direct8 STY	Sty8 DIROp84X0:	Direct8 STY2	Sty16 DIROp94X1:	DirectIndexedX8 STY	Sty8 DIXOp94X0:	DirectIndexedX8 STY2	Sty16 DIXOp8CX1:	Absolute8 STY	Sty8 ABSOp8CX0:	Absolute8 STY2	Sty16 ABS/* STZ */Op64M1:	Direct8 STZ	Stz8 DIROp64M0:	Direct8 STZ2	Stz16 DIROp74M1:	DirectIndexedX8 STZ	Stz8 DIXOp74M0:	DirectIndexedX8 STZ2	Stz16 DIXOp9CM1:	Absolute8 STZ	Stz8 ABSOp9CM0:	Absolute8 STZ2	Stz16 ABSOp9EM1:	AbsoluteIndexedX8 STZ	Stz8 ABSXOp9EM0:	AbsoluteIndexedX8 STZ2	Stz16 ABSX/* TRB */Op14M1:	Direct8 TRB	Trb8 DIROp14M0:	Direct8 TRB2	Trb16 DIROp1CM1:	Absolute8 TRB	Trb8 ABSOp1CM0:	Absolute8 TRB2	Trb16 ABS/* TSB */Op04M1:	Direct8 TSB	Tsb8 DIROp04M0:	Direct8 TSB2	Tsb16 DIROp0CM1:	Absolute8 TSB	Tsb8 ABSOp0CM0:	Absolute8 TSB2	Tsb16 ABS/* BCC */Op90:	Relative	BranchCheck0 BCC	testb $0xff, _Carry	jnz .BCC_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC.BCC_EXIT:	jmp MainAsmLoop/* BCS */OpB0:	Relative	BranchCheck0 BCS	testb $0xff, _Carry	jz .BCS_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC.BCS_EXIT:	jmp MainAsmLoop/* BEQ */OpF0:	Relative	BranchCheck2 BEQ	testb $0xff, _Zero	jnz .BEQ_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	CPUShutdown BEQ.BEQ_EXIT:	jmp MainAsmLoop/* BMI */Op30:	Relative	BranchCheck1 BMI	testb $0x80, _Negative	jz .BMI_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	CPUShutdown BMI.BMI_EXIT:	jmp MainAsmLoop/* BNE */OpD0:	Relative	BranchCheck1 BNE	testb $0xff, _Zero	jz .BNE_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	CPUShutdown BNE.BNE_EXIT:	jmp MainAsmLoop/* BPL */Op10:	Relative	BranchCheck1 BPL	testb $0x80, _Negative	jnz .BPL_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	CPUShutdown BPL.BPL_EXIT:	jmp MainAsmLoop/* BRA */Op80:	Relative#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	jmp MainAsmLoop/* BVC */Op50:	Relative	BranchCheck0 BVC	testb $0xff, _Overflow	jnz .BVC_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	CPUShutdown BVC.BVC_EXIT:	jmp MainAsmLoop/* BVS */Op70:	Relative	BranchCheck0 BVS	testb $0xff, _Overflow	jz .BVS_EXIT#ifdef VAR_CYCLES	addl $6, CYCLES#else	incl CYCLES#endif	andl $0xffff, %edx	addl PCBase, %edx	movl %edx, PC	CPUShutdown BVS.BVS_EXIT:	jmp MainAsmLoop/* BRL */Op82:	RelativeLong BRL	andl $0xffff, %edx	orl ShiftedPB, %edx	call S9xSetPCBase	jmp MainAsmLoop/* CLC */Op18:	movb $0, _Carry#ifdef VAR_CYCLES	addl $6, CYCLES#endif	jmp MainAsmLoop/* CLD */OpD8:	andb $~Decimal, FLAGS#ifdef VAR_CYCLES	addl $6, CYCLES#endif	jmp MainAsmLoop/* CLI */Op58:	andb $~IRQ, FLAGS#ifdef VAR_CYCLES	addl $6, CYCLES#endif	cmpb $0, IRQActive	jz .CLI_EXIT	/* XXX: test for Settings.DisableIRQ */	call S9xOpcode_IRQ.CLI_EXIT:	jmp MainAsmLoop/* CLV */OpB8:	movb $0, _Overflow#ifdef VAR_CYCLES	addl $6, CYCLES#endif	jmp MainAsmLoop/* DEX */OpCAX1:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	movb XL, %al	decb %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, XL	SetZN	jmp MainAsmLoopOpCAX0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	decw XX	setnz _Zero	movb XH, %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, _Negative	jmp MainAsmLoop/* DEY */Op88X1:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	movb YL, %al	decb %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, YL	SetZN	jmp MainAsmLoopOp88X0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	decw YY	setnz _Zero	movb YH, %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, _Negative	jmp MainAsmLoop/* INX */OpE8X1:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	movb XL, %al	incb %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, XL	SetZN	jmp MainAsmLoopOpE8X0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	incw XX	setnz _Zero	movb XH, %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, _Negative	jmp MainAsmLoop/* INY */OpC8X1:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	movb YL, %al	incb %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, YL	SetZN	jmp MainAsmLoopOpC8X0:#ifdef VAR_CYCLES	addl $6, CYCLES#endif	incw YY	setnz _Zero	movb YH, %al#ifdef CPU_SHUTDOWN	movl $0, WaitAddress#endif	movb %al, _Negative	jmp MainAsmLoop/* NOP */OpEA:#ifdef VAR_CYCLES	addl $6,CYCLES#endif	jmp MainAsmLoop/* PEA */OpF4:	Immediate16 PEA	PushWord PEA	jmp MainAsmLoop/* PEI */OpD4:	DirectIndirect8 PEI	movl %edx, %eax	PushWord PEI	jmp MainAsmLoop/* PER */Op62:	RelativeLong PER	movl %edx, %eax	PushWord PER	jmp MainAsmLoop	/* PHA */Op48M1:#ifdef VAR_CYCLES

⌨️ 快捷键说明

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