📄 gencode.c
字号:
{ "n", "m", "mov.l @(<disp>,<REG_M>),<REG_N>", "0101nnnnmmmmi4*4", "MA (1);", "R[n] = RLAT (i + R[m]);", "L (n);", }, { "n", "m0", "mov.l @(R0,<REG_M>),<REG_N>", "0000nnnnmmmm1110", "MA (1);", "R[n] = RLAT (R0 + R[m]);", "L (n);", }, { "nm", "m", "mov.l @<REG_M>+,<REG_N>", "0110nnnnmmmm0110", "MA (1);", "R[n] = RLAT (R[m]);", "R[m] += 4;", "L (n);", }, { "n", "m", "mov.l @<REG_M>,<REG_N>", "0110nnnnmmmm0010", "MA (1);", "R[n] = RLAT (R[m]);", "L (n);", }, { "", "0", "mov.l R0,@(<disp>,GBR)", "11000010i8*4....", "MA (1);", "WLAT (i + GBR, R0);", }, { "", "nm", "mov.l <REG_M>,@(<disp>,<REG_N>)", "0001nnnnmmmmi4*4", "MA (1);", "WLAT (i + R[n], R[m]);", }, { "", "nm0", "mov.l <REG_M>,@(R0,<REG_N>)", "0000nnnnmmmm0110", "MA (1);", "WLAT (R0 + R[n], R[m]);", }, { "", "nm", "mov.l <REG_M>,@-<REG_N>", "0010nnnnmmmm0110", "MA (1) ;", "R[n] -= 4;", "WLAT (R[n], R[m]);", }, { "", "nm", "mov.l <REG_M>,@<REG_N>", "0010nnnnmmmm0010", "MA (1);", "WLAT (R[n], R[m]);", }, { "0", "", "mov.w @(<disp>,GBR),R0", "11000101i8*2....", "MA (1)", ";R0 = RSWAT (i + GBR);", "L (0);", }, { "n", "", "mov.w @(<disp>,PC),<REG_N>", "1001nnnni8p2....", "MA (1);", "R[n] = RSWAT (PH2T (PC + 4 + i));", "L (n);", }, { "0", "m", "mov.w @(<disp>,<REG_M>),R0", "10000101mmmmi4*2", "MA (1);", "R0 = RSWAT (i + R[m]);", "L (0);", }, { "n", "m0", "mov.w @(R0,<REG_M>),<REG_N>", "0000nnnnmmmm1101", "MA (1);", "R[n] = RSWAT (R0 + R[m]);", "L (n);", }, { "nm", "n", "mov.w @<REG_M>+,<REG_N>", "0110nnnnmmmm0101", "MA (1);", "R[n] = RSWAT (R[m]);", "R[m] += 2;", "L (n);", }, { "n", "m", "mov.w @<REG_M>,<REG_N>", "0110nnnnmmmm0001", "MA (1);", "R[n] = RSWAT (R[m]);", "L (n);", }, { "", "0", "mov.w R0,@(<disp>,GBR)", "11000001i8*2....", "MA (1);", "WWAT (i + GBR, R0);", }, { "", "0m", "mov.w R0,@(<disp>,<REG_M>)", "10000001mmmmi4*2", "MA (1);", "WWAT (i + R[m], R0);", }, { "", "m0n", "mov.w <REG_M>,@(R0,<REG_N>)", "0000nnnnmmmm0101", "MA (1);", "WWAT (R0 + R[n], R[m]);", }, { "n", "mn", "mov.w <REG_M>,@-<REG_N>", "0010nnnnmmmm0101", "MA (1);", "R[n] -= 2;", "WWAT (R[n], R[m]);", }, { "", "nm", "mov.w <REG_M>,@<REG_N>", "0010nnnnmmmm0001", "MA (1);", "WWAT (R[n], R[m]);", }, { "0", "", "mova @(<disp>,PC),R0", "11000111i8p4....", "R0 = ((i + 4 + PH2T (PC)) & ~0x3);", }, { "0", "", "movca.l @R0, <REG_N>", "0000nnnn11000011", "/* FIXME: Not implemented */", "RAISE_EXCEPTION (SIGILL);", }, { "n", "", "movt <REG_N>", "0000nnnn00101001", "R[n] = T;", }, { "", "mn", "mul.l <REG_M>,<REG_N>", "0000nnnnmmmm0111", "MACL = ((int)R[n]) * ((int)R[m]);", },#if 0 { "", "nm", "mul.l <REG_M>,<REG_N>", "0000nnnnmmmm0111", "MACL = R[n] * R[m];", },#endif /* muls.w - see muls */ { "", "mn", "muls <REG_M>,<REG_N>", "0010nnnnmmmm1111", "MACL = ((int)(short)R[n]) * ((int)(short)R[m]);", }, /* mulu.w - see mulu */ { "", "mn", "mulu <REG_M>,<REG_N>", "0010nnnnmmmm1110", "MACL = (((unsigned int)(unsigned short)R[n])", " * ((unsigned int)(unsigned short)R[m]));", }, { "n", "m", "neg <REG_M>,<REG_N>", "0110nnnnmmmm1011", "R[n] = - R[m];", }, { "n", "m", "negc <REG_M>,<REG_N>", "0110nnnnmmmm1010", "ult = -T;", "SET_SR_T (ult > 0);", "R[n] = ult - R[m];", "SET_SR_T (T || (R[n] > ult));", }, { "", "", "nop", "0000000000001001", "/* nop */", }, { "n", "m", "not <REG_M>,<REG_N>", "0110nnnnmmmm0111", "R[n] = ~R[m];", }, { "0", "", "ocbi @<REG_N>", "0000nnnn10010011", "/* FIXME: Not implemented */", "RAISE_EXCEPTION (SIGILL);", }, { "0", "", "ocbp @<REG_N>", "0000nnnn10100011", "/* FIXME: Not implemented */", "RAISE_EXCEPTION (SIGILL);", }, { "", "n", "ocbwb @<REG_N>", "0000nnnn10110011", "RSBAT (R[n]); /* Take exceptions like byte load. */", "/* FIXME: Cache not implemented */", }, { "0", "", "or #<imm>,R0", "11001011i8*1....", "R0 |= i;", }, { "n", "m", "or <REG_M>,<REG_N>", "0010nnnnmmmm1011", "R[n] |= R[m];", }, { "", "0", "or.b #<imm>,@(R0,GBR)", "11001111i8*1....", "MA (1);", "WBAT (R0 + GBR, (RBAT (R0 + GBR) | i));", }, { "", "n", "pref @<REG_N>", "0000nnnn10000011", "/* Except for the effect on the cache - which is not simulated -", " this is like a nop. */", }, { "n", "n", "rotcl <REG_N>", "0100nnnn00100100", "ult = R[n] < 0;", "R[n] = (R[n] << 1) | T;", "SET_SR_T (ult);", }, { "n", "n", "rotcr <REG_N>", "0100nnnn00100101", "ult = R[n] & 1;", "R[n] = (UR[n] >> 1) | (T << 31);", "SET_SR_T (ult);", }, { "n", "n", "rotl <REG_N>", "0100nnnn00000100", "SET_SR_T (R[n] < 0);", "R[n] <<= 1;", "R[n] |= T;", }, { "n", "n", "rotr <REG_N>", "0100nnnn00000101", "SET_SR_T (R[n] & 1);", "R[n] = UR[n] >> 1;", "R[n] |= (T << 31);", }, { "", "", "rte", "0000000000101011", #if 0 /* SH-[12] */ "int tmp = PC;", "SET_NIP (PT2H (RLAT (R[15]) + 2));", "R[15] += 4;", "SET_SR (RLAT (R[15]) & 0x3f3);", "R[15] += 4;", "Delay_Slot (PC + 2);",#else "SET_SR (SSR);", "SET_NIP (PT2H (SPC));", "cycles += 2;", "Delay_Slot (PC + 2);",#endif }, { "", "", "rts", "0000000000001011", "SET_NIP (PT2H (PR));", "cycles += 2;", "Delay_Slot (PC + 2);", }, /* sh-dsp */ { "", "n", "setrc <REG_N>", "0100nnnn00010100", "SET_RC (R[n]);", }, { "", "n", "setrc #<imm>", "10000010i8*1....", /* It would be more realistic to let loop_start point to some static memory that contains an illegal opcode and then give a bus error when the loop is eventually encountered, but it seems not only simpler, but also more debugging-friendly to just catch the failure here. */ "if (BUSERROR (RS | RE, maskw))", " RAISE_EXCEPTION (SIGILL);", "else {", " SET_RC (i);", " loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw);", " CHECK_INSN_PTR (insn_ptr);", "}", }, { "", "", "sets", "0000000001011000", "SET_SR_S (1);", }, { "", "", "sett", "0000000000011000", "SET_SR_T (1);", }, { "n", "mn", "shad <REG_M>,<REG_N>", "0100nnnnmmmm1100", "R[n] = (R[m] < 0) ? (R[n] >> ((-R[m])&0x1f)) : (R[n] << (R[m] & 0x1f));", }, { "n", "n", "shal <REG_N>", "0100nnnn00100000", "SET_SR_T (R[n] < 0);", "R[n] <<= 1;", }, { "n", "n", "shar <REG_N>", "0100nnnn00100001", "SET_SR_T (R[n] & 1);", "R[n] = R[n] >> 1;", }, { "n", "mn", "shld <REG_M>,<REG_N>", "0100nnnnmmmm1101", "R[n] = (R[m] < 0) ? (UR[n] >> ((-R[m])&0x1f)): (R[n] << (R[m] & 0x1f));", }, { "n", "n", "shll <REG_N>", "0100nnnn00000000", "SET_SR_T (R[n] < 0);", "R[n] <<= 1;", }, { "n", "n", "shll2 <REG_N>", "0100nnnn00001000", "R[n] <<= 2;", }, { "n", "n", "shll8 <REG_N>", "0100nnnn00011000", "R[n] <<= 8;", }, { "n", "n", "shll16 <REG_N>", "0100nnnn00101000", "R[n] <<= 16;", }, { "n", "n", "shlr <REG_N>", "0100nnnn00000001", "SET_SR_T (R[n] & 1);", "R[n] = UR[n] >> 1;", }, { "n", "n", "shlr2 <REG_N>", "0100nnnn00001001", "R[n] = UR[n] >> 2;", }, { "n", "n", "shlr8 <REG_N>", "0100nnnn00011001", "R[n] = UR[n] >> 8;", }, { "n", "n", "shlr16 <REG_N>", "0100nnnn00101001", "R[n] = UR[n] >> 16;", }, { "", "", "sleep", "0000000000011011", "nip += trap (0xc3, R0, PC, memory, maskl, maskw, endianw);", }, { "n", "", "stc <CREG_M>,<REG_N>", "0000nnnnmmmm0010", "R[n] = CREG (m);", },#if 0 { "n", "", "stc SGR,<REG_N>", "0000nnnn00111010", "R[n] = SGR;", }, { "n", "", "stc DBR,<REG_N>", "0000nnnn11111010", "R[n] = DBR;", },#endif { "n", "n", "stc.l <CREG_M>,@-<REG_N>", "0100nnnnmmmm0011", "MA (1);", "R[n] -= 4;", "WLAT (R[n], CREG (m));", },#if 0 { "n", "n", "stc.l SGR,@-<REG_N>", "0100nnnn00110010", "MA (1);", "R[n] -= 4;", "WLAT (R[n], SGR);", }, { "n", "n", "stc.l DBR,@-<REG_N>", "0100nnnn11110010", "MA (1);", "R[n] -= 4;", "WLAT (R[n], DBR);", },#endif { "n", "", "sts <SREG_M>,<REG_N>", "0000nnnnssss1010", "R[n] = SREG (m);", }, { "n", "n", "sts.l <SREG_M>,@-<REG_N>", "0100nnnnssss0010", "MA (1);", "R[n] -= 4;", "WLAT (R[n], SREG (m));", }, { "n", "nm", "sub <REG_M>,<REG_N>", "0011nnnnmmmm1000", "R[n] -= R[m];", }, { "n", "nm", "subc <REG_M>,<REG_N>", "0011nnnnmmmm1010", "ult = R[n] - T;", "SET_SR_T (ult > R[n]);", "R[n] = ult - R[m];", "SET_SR_T (T || (R[n] > ult));", }, { "n", "nm", "subv <REG_M>,<REG_N>", "0011nnnnmmmm1011", "ult = R[n] - R[m];", "SET_SR_T (((R[n] ^ R[m]) & (ult ^ R[n])) >> 31);", "R[n] = ult;", }, { "n", "nm", "swap.b <REG_M>,<REG_N>", "0110nnnnmmmm1000", "R[n] = ((R[m] & 0xffff0000)", " | ((R[m] << 8) & 0xff00)", " | ((R[m] >> 8) & 0x00ff));", }, { "n", "nm", "swap.w <REG_M>,<REG_N>", "0110nnnnmmmm1001", "R[n] = (((R[m] << 16) & 0xffff0000)", " | ((R[m] >> 16) & 0x00ffff));", }, { "", "n", "tas.b @<REG_N>", "0100nnnn00011011", "MA (1);", "ult = RBAT(R[n]);", "SET_SR_T (ult == 0);", "WBAT(R[n],ult|0x80);", }, { "0", "", "trapa #<imm>", "11000011i8*1....", "long imm = 0xff & i;", "if (i < 20 || i == 33 || i == 34 || i == 0xc3)", " nip += trap (i, R, PC, memory, maskl, maskw,endianw);",#if 0 "else {", /* SH-[12] */ " R[15]-=4;", " WLAT (R[15], GET_SR());", " R[15]-=4;", " WLAT (R[15], PH2T (PC + 2));",#else "else if (!SR_BL) {", " SSR = GET_SR();", " SPC = PH2T (PC + 2);", " SET_SR (GET_SR() | SR_MASK_MD | SR_MASK_BL | SR_MASK_RB);", " /* FIXME: EXPEVT = 0x00000160; */",#endif " SET_NIP (PT2H (RLAT (VBR + (imm<<2))));", "}", }, { "", "mn", "tst <REG_M>,<REG_N>", "0010nnnnmmmm1000", "SET_SR_T ((R[n] & R[m]) == 0);", }, { "", "0", "tst #<imm>,R0", "11001000i8*1....", "SET_SR_T ((R0 & i) == 0);", }, { "", "0", "tst.b #<imm>,@(R0,GBR)", "11001100i8*1....", "MA (1);", "SET_SR_T ((RBAT (GBR+R0) & i) == 0);", }, { "", "0", "xor #<imm>,R0", "11001010i8*1....", "R0 ^= i;", }, { "n", "mn", "xor <REG_M>,<REG_N>", "0010nnnnmmmm1010", "R[n] ^= R[m];", }, { "", "0", "xor.b #<imm>,@(R0,GBR)", "11001110i8*1....", "MA (1);", "ult = RBAT (GBR+R0);", "ult ^= i;", "WBAT (GBR + R0, ult);", }, { "n", "nm", "xtrct <REG_M>,<REG_N>", "0010nnnnmmmm1101", "R[n] = (((R[n] >> 16) & 0xffff)", " | ((R[m] << 16) & 0xffff0000));", },#if 0 { "divs.l <REG_M>,<REG_N>", "0100nnnnmmmm1110", "divl(0,R[n],R[m]);", }, { "divu.l <REG_M>,<REG_N>", "0100nnnnmmmm1101", "divl(0,R[n],R[m]);", },#endif {0, 0}};op movsxy_tab[] ={/* If this is disabled, the simulator speeds up by about 12% on a 450 MHz PIII - 9% with ACE_FAST. Maybe we should have separate simulator loops? */#if 1 { "n", "n", "movs.w @-<REG_N>,<DSP_REG_M>", "111101NNMMMM0000", "MA (1);", "R[n] -= 2;", "DSP_R (m) = RSWAT (R[n]) << 16;", "DSP_GRD (m) = SIGN32 (DSP_R (m));", }, { "", "n", "movs.w @<REG_N>,<DSP_REG_M>", "111101NNMMMM0100", "MA (1);", "DSP_R (m) = RSWAT (R[n]) << 16;", "DSP_GRD (m) = SIGN32 (DSP_R (m));", }, { "n", "n", "movs.w @<REG_N>+,<DSP_REG_M>", "111101NNMMMM1000", "MA (1);", "DSP_R (m) = RSWAT (R[n]) << 16;", "DSP_GRD (m) = SIGN32 (DSP_R (m));", "R[n] += 2;", }, { "n", "n8","movs.w @<REG_N>+REG_8,<DSP_REG_M>", "111101NNMMMM1100", "MA (1);", "DSP_R (m) = RSWAT (R[n]) << 16;", "DSP_GRD (m) = SIGN32 (DSP_R (m));", "R[n] += R[8];", }, { "n", "n", "movs.w @-<REG_N>,<DSP_GRD_M>", "111101NNGGGG0000", "MA (1);", "R[n] -= 2;", "DSP_R (m) = RSWAT (R[n]);", }, { "", "n", "movs.w @<REG_N>,<DSP_GRD_M>", "111101NNGGGG0100", "MA (1);", "DSP_R (m) = RSWAT (R[n]);", }, { "n", "n", "movs.w @<REG_N>+,<DSP_GRD_M>", "111101NNGGGG1000", "MA (1);", "DSP_R (m) = RSWAT (R[n]);", "R[n] += 2;", }, { "n", "n8","movs.w @<REG_N>+REG_8,<DSP_GRD_M>", "111101NNGGGG1100", "MA (1);", "DSP_R (m) = RSWAT (R[n]);", "R[n] += R[8];", }, { "n", "n", "<DSP_REG_M>,movs.w @-<REG_N>", "111101NNMMMM0001", "MA (1);", "R[n] -= 2;", "WWAT (R[n], DSP_R (m) >> 16);", }, { "", "n", "movs.w <DSP_REG_M>,@<REG_N>", "111101NNMMMM0101", "MA (1);", "WWAT (R[n], DSP_R (m) >> 16);", }, { "n", "n", "movs.w <DSP_REG_M>,@<REG_N>+", "111101NNMMMM1001", "MA (1);", "WWAT (R[n], DSP_R (m) >> 16);", "R[n] += 2;", }, { "n", "n8","movs.w <DSP_REG_M>,@<REG_N>+REG_8", "111101NNMMMM1101", "MA (1);", "WWAT (R[n], DSP_R (m) >> 16);", "R[n] += R[8];", }, { "n", "n", "movs.w <DSP_GRD_M>,@-<REG_N>", "111101NNGGGG0001", "MA (1);", "R[n] -= 2;", "WWAT (R[n], SEXT (DSP_R (m)));", }, { "", "n", "movs.w <DSP_GRD_M>,@<REG_N>", "111101NNGGGG0101", "MA (1);", "WWAT (R[n], SEXT (DSP_R (m)));", }, { "n", "n", "movs.w <DSP_GRD_M>,@<REG_N>+", "111101NNGGGG1001", "MA (1);", "WWAT (R[n], SEXT (DSP_R (m)));", "R[n] += 2;", }, { "n", "n8","movs.w <DSP_GRD_M>,@<REG_N>+REG_8", "111101NNGGGG1101", "MA (1);", "WWAT (R[n], SEXT (DSP_R (m)));", "R[n] += R[8];", }, { "n", "n", "movs.l @-<REG_N>,<DSP_REG_M>", "111101NNMMMM0010", "MA (1);", "R[n] -= 4;", "DSP_R (m) = RLAT (R[n]);", "DSP_GRD (m) = SIGN32 (DSP_R (m));", }, { "", "n", "movs.l @<REG_N>,<DSP_REG_M>", "111101NNMMMM0110", "MA (1);", "DSP_R (m) = RLAT (R[n]);", "DSP_GRD (m) = SIGN32 (DSP_R (m));", }, { "n", "n", "movs.l @<REG_N>+,<DSP_REG_M>", "111101NNMMMM1010", "MA (1);", "DSP_R (m) = RLAT (R[n]);", "DSP_GRD (m) = SIGN32 (DSP_R (m));", "R[n] += 4;", }, { "n", "n8","movs.l @<REG_N>+REG_8,<DSP_REG_M>", "111101NNMMMM1110", "MA (1);", "DSP_R (m) = RLAT (R[n]);", "DSP_GRD (m) = SIGN32 (DSP_R (m));", "R[n] += R[8];", }, { "n", "n", "<DSP_REG_M>,movs.l @-<REG_N>", "111101NNMMMM0011", "MA (1);", "R[n] -= 4;", "WLAT (R[n], DSP_R (m));", }, { "", "n", "movs.l <DSP_REG_M>,@<REG_N>", "111101NNMMMM0111", "MA (1);", "WLAT (R[n], DSP_R (m));", }, { "n", "n", "movs.l <DSP_REG_M>,@<REG_N>+", "111101NNMMMM1011", "MA (1);", "WLAT (R[n], DSP_R (m));", "R[n] += 4;", }, { "n", "n8","movs.l <DSP_REG_M>,@<REG_N>+REG_8", "111101NNMMMM1111", "MA (1);", "WLAT (R[n], DSP_R (m));", "R[n] += R[8];", }, { "n", "n", "<DSP_GRD_M>,movs.l @-<REG_N>", "111101NNGGGG0011", "MA (1);", "R[n] -= 4;", "WLAT (R[n], SEXT (DSP_R (m)));", }, { "", "n", "movs.l <DSP_GRD_M>,@<REG_N>", "111101NNGGGG0111", "MA (1);", "WLAT (R[n], SEXT (DSP_R (m)));", }, { "n", "n", "movs.l <DSP_GRD_M>,@<REG_N>+", "111101NNGGGG1011", "MA (1);", "WLAT (R[n], SEXT (DSP_R (m)));", "R[n] += 4;", }, { "n", "n8","movs.l <DSP_GRD_M>,@<REG_N>+REG_8", "111101NNGGGG1111", "MA (1);", "WLAT (R[n], SEXT (DSP_R (m)));", "R[n] += R[8];", }, { "", "n", "movx.w @<REG_x>,<DSP_XX>", "111100xxXX000100", "DSP_R (m) = RSWAT (R[n]) << 16;", "iword &= 0xfd53; goto top;", }, { "n", "n", "movx.w @<REG_x>+,<DSP_XX>", "111100xxXX001000", "DSP_R (m) = RSWAT (R[n]) << 16;", "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;", "iword &= 0xfd53; goto top;", }, { "n", "n8","movx.w @<REG_x>+REG_8,<DSP_XX>", "111100xxXX001000", "DSP_R (m) = RSWAT (R[n]) << 16;", "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];", "iword &= 0xfd53; goto top;", }, { "", "n", "movx.w <DSP_Aa>,@<REG_x>", "111100xxaa100100", "WWAT (R[n], DSP_R (m) >> 16);", "iword &= 0xfd53; goto top;", }, { "n", "n", "movx.w <DSP_Aa>,@<REG_x>+", "111100xxaa101000", "WWAT (R[n], DSP_R (m) >> 16);", "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;", "iword &= 0xfd53; goto top;", }, { "n", "n8","movx.w <DSP_Aa>,@<REG_x>+REG_8","111100xxaa101000", "WWAT (R[n], DSP_R (m) >> 16);", "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];", "iword &= 0xfd53; goto top;", }, { "", "n", "movy.w @<REG_y>,<DSP_YY>", "111100yyYY000001", "DSP_R (m) = RSWAT (R[n]) << 16;", }, { "n", "n", "movy.w @<REG_x>+,<DSP_YY>", "111100yyYY000010", "DSP_R (m) = RSWAT (R[n]) << 16;", "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;", }, { "n", "n9","movy.w @<REG_x>+REG_9,<DSP_YY>", "111100yyYY000010", "DSP_R (m) = RSWAT (R[n]) << 16;", "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];", }, { "", "n", "movy.w <DSP_Aa>,@<REG_x>", "111100yyAA010001", "WWAT (R[n], DSP_R (m) >> 16);", }, { "n", "n", "movy.w <DSP_Aa>,@<REG_x>+", "111100yyAA010010", "WWAT (R[n], DSP_R (m) >> 16);", "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;", }, { "n", "n9", "movy.w <DSP_Aa>,@<REG_x>+REG_9", "111100yyAA010010", "WWAT (R[n], DSP_R (m) >> 16);", "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];", }, { "", "", "nopx nopy", "1111000000000000", "/* nop */", }, { "", "", "ppi", "1111100000000000", "ppi_insn (RIAT (nip));", "nip += 2;", "iword &= 0xf7ff; goto top;", },#endif {0, 0}};op ppi_tab[] ={ { "","", "pshl #<imm>,dz", "00000iiim16.zzzz", "int Sz = DSP_R (z) & 0xffff0000;", "",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -