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 + -
显示快捷键?