w65-opc.h

来自「基于4个mips核的noc设计」· C头文件 代码 · 共 570 行 · 第 1/2 页

H
570
字号
	{0xA4,	O_ldy,	"ldy",	ADDR_DIR},	{0xB4,	O_ldy,	"ldy",	ADDR_DIR_IDX_X},	{0x4A,	O_lsr,	"lsr",	ADDR_ACC},	{0x4E,	O_lsr,	"lsr",	ADDR_ABS},	{0x5E,	O_lsr,	"lsr",	ADDR_ABS_IDX_X},	{0x46,	O_lsr,	"lsr",	ADDR_DIR},	{0x56,	O_lsr,	"lsr",	ADDR_DIR_IDX_X},	{0x54,	O_mvn,	"mvn",	ADDR_BLOCK_MOVE},	{0x44,	O_mvp,	"mvp",	ADDR_BLOCK_MOVE},	{0xEA,	O_nop,	"nop",	ADDR_IMPLIED},	{0x09,	O_ora,	"ora",	ADDR_IMMTOA},	{0x12,	O_ora,	"ora",	ADDR_DIR_IND},	{0x11,	O_ora,	"ora",	ADDR_DIR_IND_IDX_Y},	{0x13,	O_ora,	"ora",	ADDR_STACK_REL_INDX_IDX},	{0x01,	O_ora,	"ora",	ADDR_DIR_IDX_IND_X},	{0x07,	O_ora,	"ora",	ADDR_DIR_IND_LONG},	{0x17,	O_ora,	"ora",	ADDR_DIR_IND_IDX_Y_LONG},	{0x0D,	O_ora,	"ora",	ADDR_ABS},	{0x1D,	O_ora,	"ora",	ADDR_ABS_IDX_X},	{0x19,	O_ora,	"ora",	ADDR_ABS_IDX_Y},	{0x0F,	O_ora,	"ora",	ADDR_ABS_LONG},	{0x1F,	O_ora,	"ora",	ADDR_ABS_LONG_IDX_X},	{0x05,	O_ora,	"ora",	ADDR_DIR},	{0x03,	O_ora,	"ora",	ADDR_STACK_REL},	{0x15,	O_ora,	"ora",	ADDR_DIR_IDX_X},	{0xF4,	O_pea,	"pea",	ADDR_ABS},	{0xD4,	O_pei,	"pei",	ADDR_DIR},	{0x62,	O_per,	"per",	ADDR_PC_REL_LONG},	{0x48,	O_pha,	"pha",	ADDR_STACK},	{0x8B,	O_phb,	"phb",	ADDR_STACK},	{0x0B,	O_phd,	"phd",	ADDR_STACK},	{0x4B,	O_phk,	"phk",	ADDR_STACK},	{0x08,	O_php,	"php",	ADDR_STACK},	{0xDA,	O_phx,	"phx",	ADDR_STACK},	{0x5A,	O_phy,	"phy",	ADDR_STACK},	{0x68,	O_pla,	"pla",	ADDR_STACK},	{0xAB,	O_plb,	"plb",	ADDR_STACK},	{0x2B,	O_pld,	"pld",	ADDR_STACK},	{0x28,	O_plp,	"plp",	ADDR_STACK},	{0xFA,	O_plx,	"plx",	ADDR_STACK},	{0x7A,	O_ply,	"ply",	ADDR_STACK},	{0xC2,	O_rep,	"rep",	ADDR_IMMCOP},	{0x2A,	O_rol,	"rol",	ADDR_ACC},	{0x2E,	O_rol,	"rol",	ADDR_ABS},	{0x3E,	O_rol,	"rol",	ADDR_ABS_IDX_X},	{0x26,	O_rol,	"rol",	ADDR_DIR},	{0x36,	O_rol,	"rol",	ADDR_DIR_IDX_X},	{0x6A,	O_ror,	"ror",	ADDR_ACC},	{0x6E,	O_ror,	"ror",	ADDR_ABS},	{0x7E,	O_ror,	"ror",	ADDR_ABS_IDX_X},	{0x66,	O_ror,	"ror",	ADDR_DIR},	{0x76,	O_ror,	"ror",	ADDR_DIR_IDX_X},	{0x40,	O_rti,	"rti",	ADDR_STACK},	{0x6B,	O_rtl,	"rtl",	ADDR_STACK},	{0x60,	O_rts,	"rts",	ADDR_STACK},	{0xE9,	O_sbc,	"sbc",	ADDR_IMMTOA},	{0xF2,	O_sbc,	"sbc",	ADDR_DIR_IND},	{0xF1,	O_sbc,	"sbc",	ADDR_DIR_IND_IDX_Y},	{0xF3,	O_sbc,	"sbc",	ADDR_STACK_REL_INDX_IDX},	{0xE1,	O_sbc,	"sbc",	ADDR_DIR_IDX_IND_X},	{0xE7,	O_sbc,	"sbc",	ADDR_DIR_IND_LONG},	{0xF7,	O_sbc,	"sbc",	ADDR_DIR_IND_IDX_Y_LONG},	{0xED,	O_sbc,	"sbc",	ADDR_ABS},	{0xFD,	O_sbc,	"sbc",	ADDR_ABS_IDX_X},	{0xF9,	O_sbc,	"sbc",	ADDR_ABS_IDX_Y},	{0xEF,	O_sbc,	"sbc",	ADDR_ABS_LONG},	{0xFF,	O_sbc,	"sbc",	ADDR_ABS_LONG_IDX_X},	{0xE5,	O_sbc,	"sbc",	ADDR_DIR},	{0xE3,	O_sbc,	"sbc",	ADDR_STACK_REL},	{0xF5,	O_sbc,	"sbc",	ADDR_DIR_IDX_X},	{0x38,	O_sec,	"sec",	ADDR_IMPLIED},	{0xF8,	O_sed,	"sed",	ADDR_IMPLIED},	{0x78,	O_sei,	"sei",	ADDR_IMPLIED},	{0xE2,	O_sep,	"sep",	ADDR_IMMCOP},	{0x92,	O_sta,	"sta",	ADDR_DIR_IND},	{0x91,	O_sta,	"sta",	ADDR_DIR_IND_IDX_Y},	{0x93,	O_sta,	"sta",	ADDR_STACK_REL_INDX_IDX},	{0x81,	O_sta,	"sta",	ADDR_DIR_IDX_IND_X},	{0x87,	O_sta,	"sta",	ADDR_DIR_IND_LONG},	{0x97,	O_sta,	"sta",	ADDR_DIR_IND_IDX_Y_LONG},	{0x8D,	O_sta,	"sta",	ADDR_ABS},	{0x9D,	O_sta,	"sta",	ADDR_ABS_IDX_X},	{0x99,	O_sta,	"sta",	ADDR_ABS_IDX_Y},	{0x8F,	O_sta,	"sta",	ADDR_ABS_LONG},	{0x9F,	O_sta,	"sta",	ADDR_ABS_LONG_IDX_X},	{0x85,	O_sta,	"sta",	ADDR_DIR},	{0x83,	O_sta,	"sta",	ADDR_STACK_REL},	{0x95,	O_sta,	"sta",	ADDR_DIR_IDX_X},	{0xDB,	O_stp,	"stp",	ADDR_IMPLIED},	{0x8E,	O_stx,	"stx",	ADDR_ABS},	{0x86,	O_stx,	"stx",	ADDR_DIR},	{0x96,	O_stx,	"stx",	ADDR_DIR_IDX_X},	{0x8C,	O_sty,	"sty",	ADDR_ABS},	{0x84,	O_sty,	"sty",	ADDR_DIR},	{0x94,	O_sty,	"sty",	ADDR_DIR_IDX_X},	{0x9C,	O_stz,	"stz",	ADDR_ABS},	{0x9E,	O_stz,	"stz",	ADDR_ABS_IDX_X},	{0x64,	O_stz,	"stz",	ADDR_DIR},	{0x74,	O_stz,	"stz",	ADDR_DIR_IDX_X},	{0xAA,	O_tax,	"tax",	ADDR_IMPLIED},	{0xA8,	O_tay,	"tay",	ADDR_IMPLIED},	{0x5B,	O_tcd,	"tcd",	ADDR_IMPLIED},	{0x1B,	O_tcs,	"tcs",	ADDR_IMPLIED},	{0x7B,	O_tdc,	"tdc",	ADDR_IMPLIED},	{0x1C,	O_trb,	"trb",	ADDR_ABS},	{0x14,	O_trb,	"trb",	ADDR_DIR},	{0x0C,	O_tsb,	"tsb",	ADDR_ABS},	{0x04,	O_tsb,	"tsb",	ADDR_DIR},	{0x3B,	O_tsc,	"tsc",	ADDR_IMPLIED},	{0xBA,	O_tsx,	"tsx",	ADDR_IMPLIED},	{0x8A,	O_txa,	"txa",	ADDR_IMPLIED},	{0x9A,	O_txs,	"txs",	ADDR_IMPLIED},	{0x9B,	O_txy,	"txy",	ADDR_IMPLIED},	{0x98,	O_tya,	"tya",	ADDR_IMPLIED},	{0xBB,	O_tyx,	"tyx",	ADDR_IMPLIED},	{0xCB,	O_wai,	"wai",	ADDR_IMPLIED},	{0x42,	O_wdm,	"wdm",	ADDR_IMPLIED},	{0xEB,	O_xba,	"xba",	ADDR_IMPLIED},	{0xFB,	O_xce,	"xce",	ADDR_IMPLIED},	{ 0 }};#endif#define DISASM()\  case ADDR_IMMTOA:\	args[0] = M==0 ? asR_W65_ABS16 : asR_W65_ABS8;\	print_operand (0, "	#$0", args);\	size += M==0 ? 2:1;\	break;\  case ADDR_IMMCOP:\	args[0] = asR_W65_ABS8;\	print_operand (0, "	#$0", args);\	size += 1;\	break;\  case ADDR_IMMTOI:\	args[0] = X==0 ? asR_W65_ABS16 : asR_W65_ABS8;\	print_operand (0, "	#$0", args);\	size += X==0 ? 2:1;\	break;\  case ADDR_ACC:\	print_operand (0, "	a", 0);\	size += 0;\	break;\  case ADDR_PC_REL:\	args[0] = asR_W65_PCR8;\	print_operand (0, "	$0", args);\	size += 1;\	break;\  case ADDR_PC_REL_LONG:\	args[0] = asR_W65_PCR16;\	print_operand (0, "	$0", args);\	size += 2;\	break;\  case ADDR_IMPLIED:\		size += 0;\	break;\  case ADDR_STACK:\		size += 0;\	break;\  case ADDR_DIR:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	<$0", args);\	size += 1;\	break;\  case ADDR_DIR_IDX_X:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	<$0,x", args);\	size += 1;\	break;\  case ADDR_DIR_IDX_Y:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	<$0,y", args);\	size += 1;\	break;\  case ADDR_DIR_IND:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	(<$0)", args);\	size += 1;\	break;\  case ADDR_DIR_IDX_IND_X:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	(<$0,x)", args);\	size += 1;\	break;\  case ADDR_DIR_IND_IDX_Y:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	(<$0),y", args);\	size += 1;\	break;\  case ADDR_DIR_IND_LONG:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	[$0]", args);\	size += 1;\	break;\  case ADDR_DIR_IND_IDX_Y_LONG:\	args[0] = asR_W65_ABS8;\	print_operand (1, "	[$0],y", args);\	size += 1;\	break;\  case ADDR_ABS:\	args[0] = asR_W65_ABS16;\	print_operand (1, "	!$0", args);\	size += 2;\	break;\  case ADDR_ABS_IDX_X:\	args[0] = asR_W65_ABS16;\	print_operand (1, "	!$0,x", args);\	size += 2;\	break;\  case ADDR_ABS_IDX_Y:\	args[0] = asR_W65_ABS16;\	print_operand (1, "	!$0,y", args);\	size += 2;\	break;\  case ADDR_ABS_LONG:\	args[0] = asR_W65_ABS24;\	print_operand (1, "	>$0", args);\	size += 3;\	break;\  case ADDR_ABS_IND_LONG:\	args[0] = asR_W65_ABS16;\	print_operand (1, "	[>$0]", args);\	size += 2;\	break;\  case ADDR_ABS_LONG_IDX_X:\	args[0] = asR_W65_ABS24;\	print_operand (1, "	>$0,x", args);\	size += 3;\	break;\  case ADDR_STACK_REL:\	args[0] = asR_W65_ABS8;\	print_operand (0, "	$0,s", args);\	size += 1;\	break;\  case ADDR_STACK_REL_INDX_IDX:\	args[0] = asR_W65_ABS8;\	print_operand (0, "	($0,s),y", args);\	size += 1;\	break;\  case ADDR_ABS_IND:\	args[0] = asR_W65_ABS16;\	print_operand (1, "	($0)", args);\	size += 2;\	break;\  case ADDR_ABS_IND_IDX:\	args[0] = asR_W65_ABS16;\	print_operand (1, "	($0,x)", args);\	size += 2;\	break;\  case ADDR_BLOCK_MOVE:\	args[0] = (asR_W65_ABS16 >>8) &0xff;\	args[1] = ( asR_W65_ABS16 & 0xff);\	print_operand (0,"	$0,$1",args);\	size += 2;\	break;\#define GETINFO(size,type,pcrel)\	case ADDR_IMMTOA: size = M==0 ? 2:1;type=M==0 ? R_W65_ABS16 : R_W65_ABS8;pcrel=0;break;\	case ADDR_IMMCOP: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_IMMTOI: size = X==0 ? 2:1;type=X==0 ? R_W65_ABS16 : R_W65_ABS8;pcrel=0;break;\	case ADDR_ACC: size = 0;type=-1;pcrel=0;break;\	case ADDR_PC_REL: size = 1;type=R_W65_PCR8;pcrel=0;break;\	case ADDR_PC_REL_LONG: size = 2;type=R_W65_PCR16;pcrel=0;break;\	case ADDR_IMPLIED: size = 0;type=-1;pcrel=0;break;\	case ADDR_STACK: size = 0;type=-1;pcrel=0;break;\	case ADDR_DIR: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IDX_X: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IDX_Y: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IND: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IDX_IND_X: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IND_IDX_Y: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IND_LONG: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_DIR_IND_IDX_Y_LONG: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_ABS: size = 2;type=R_W65_ABS16;pcrel=0;break;\	case ADDR_ABS_IDX_X: size = 2;type=R_W65_ABS16;pcrel=0;break;\	case ADDR_ABS_IDX_Y: size = 2;type=R_W65_ABS16;pcrel=0;break;\	case ADDR_ABS_LONG: size = 3;type=R_W65_ABS24;pcrel=0;break;\	case ADDR_ABS_IND_LONG: size = 2;type=R_W65_ABS16;pcrel=0;break;\	case ADDR_ABS_LONG_IDX_X: size = 3;type=R_W65_ABS24;pcrel=0;break;\	case ADDR_STACK_REL: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_STACK_REL_INDX_IDX: size = 1;type=R_W65_ABS8;pcrel=0;break;\	case ADDR_ABS_IND: size = 2;type=R_W65_ABS16;pcrel=0;break;\	case ADDR_ABS_IND_IDX: size = 2;type=R_W65_ABS16;pcrel=0;break;\	case ADDR_BLOCK_MOVE: size = 2;type=-1;pcrel=0;break;\

⌨️ 快捷键说明

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