📄 asm.c
字号:
break; case SUBC0: result = asm_arith_logic(instr, parm, 3); break; case SUBC1: result = asm_arith_logic(instr, parm, 3); break; case CPBYTE0: result = asm_arith_logic(instr, parm, 3); break; case CPBYTE1: result = asm_arith_logic(instr, parm, 3); break; /* Opcodes 0x30 to 0x3F */ case SUBRS0: result = asm_arith_logic(instr, parm, 3); break; case SUBRS1: result = asm_arith_logic(instr, parm, 3); break; case SUBRU0: result = asm_arith_logic(instr, parm, 3); break; case SUBRU1: result = asm_arith_logic(instr, parm, 3); break; case SUBR0: result = asm_arith_logic(instr, parm, 3); break; case SUBR1: result = asm_arith_logic(instr, parm, 3); break; case LOADM0: result = asm_load_store(instr, parm, 4); break; case LOADM1: result = asm_load_store(instr, parm, 4); break; case SUBRCS0: result = asm_arith_logic(instr, parm, 3); break; case SUBRCS1: result = asm_arith_logic(instr, parm, 3); break; case SUBRCU0: result = asm_arith_logic(instr, parm, 3); break; case SUBRCU1: result = asm_arith_logic(instr, parm, 3); break; case SUBRC0: result = asm_arith_logic(instr, parm, 3); break; case SUBRC1: result = asm_arith_logic(instr, parm, 3); break; case STOREM0: result = asm_load_store(instr, parm, 4); break; case STOREM1: result = asm_load_store(instr, parm, 4); break; /* Opcodes 0x40 to 0x4F */ case CPLT0: result = asm_arith_logic(instr, parm, 3); break; case CPLT1: result = asm_arith_logic(instr, parm, 3); break; case CPLTU0: result = asm_arith_logic(instr, parm, 3); break; case CPLTU1: result = asm_arith_logic(instr, parm, 3); break; case CPLE0: result = asm_arith_logic(instr, parm, 3); break; case CPLE1: result = asm_arith_logic(instr, parm, 3); break; case CPLEU0: result = asm_arith_logic(instr, parm, 3); break; case CPLEU1: result = asm_arith_logic(instr, parm, 3); break; case CPGT0: result = asm_arith_logic(instr, parm, 3); break; case CPGT1: result = asm_arith_logic(instr, parm, 3); break; case CPGTU0: result = asm_arith_logic(instr, parm, 3); break; case CPGTU1: result = asm_arith_logic(instr, parm, 3); break; case CPGE0: result = asm_arith_logic(instr, parm, 3); break; case CPGE1: result = asm_arith_logic(instr, parm, 3); break; case CPGEU0: result = asm_arith_logic(instr, parm, 3); break; case CPGEU1: result = asm_arith_logic(instr, parm, 3); break; /* Opcodes 0x50 to 0x5F */ case ASLT0: result = asm_vector(instr, parm, 3); break; case ASLT1: result = asm_vector(instr, parm, 3); break; case ASLTU0: result = asm_vector(instr, parm, 3); break; case ASLTU1: result = asm_vector(instr, parm, 3); break; case ASLE0: result = asm_vector(instr, parm, 3); break; case ASLE1: result = asm_vector(instr, parm, 3); break; case ASLEU0: result = asm_vector(instr, parm, 3); break; case ASLEU1: result = asm_vector(instr, parm, 3); break; case ASGT0: result = asm_vector(instr, parm, 3); break; case ASGT1: result = asm_vector(instr, parm, 3); break; case ASGTU0: result = asm_vector(instr, parm, 3); break; case ASGTU1: result = asm_vector(instr, parm, 3); break; case ASGE0: result = asm_vector(instr, parm, 3); break; case ASGE1: result = asm_vector(instr, parm, 3); break; case ASGEU0: result = asm_vector(instr, parm, 3); break; case ASGEU1: result = asm_vector(instr, parm, 3); break; /* Opcodes 0x60 to 0x6F */ case CPEQ0: result = asm_arith_logic(instr, parm, 3); break; case CPEQ1: result = asm_arith_logic(instr, parm, 3); break; case CPNEQ0: result = asm_arith_logic(instr, parm, 3); break; case CPNEQ1: result = asm_arith_logic(instr, parm, 3); break; case MUL0: result = asm_arith_logic(instr, parm, 3); break; case MUL1: result = asm_arith_logic(instr, parm, 3); break; case MULL0: result = asm_arith_logic(instr, parm, 3); break; case MULL1: result = asm_arith_logic(instr, parm, 3); break; case DIV0_OP0: result = asm_div0(instr, parm, 2); break; case DIV0_OP1: result = asm_div0(instr, parm, 2); break; case DIV_OP0: result = asm_arith_logic(instr, parm, 3); break; case DIV_OP1: result = asm_arith_logic(instr, parm, 3); break; case DIVL0: result = asm_arith_logic(instr, parm, 3); break; case DIVL1: result = asm_arith_logic(instr, parm, 3); break; case DIVREM0: result = asm_arith_logic(instr, parm, 3); break; case DIVREM1: result = asm_arith_logic(instr, parm, 3); break; /* Opcodes 0x70 to 0x7F */ case ASEQ0: result = asm_vector(instr, parm, 3); break; case ASEQ1: result = asm_vector(instr, parm, 3); break; case ASNEQ0: result = asm_vector(instr, parm, 3); break; case ASNEQ1: result = asm_vector(instr, parm, 3); break; case MULU0: result = asm_arith_logic(instr, parm, 3); break; case MULU1: result = asm_arith_logic(instr, parm, 3); break; case ILLEGAL_76: result = EMSYNTAX; break; case ILLEGAL_77: result = EMSYNTAX; break; case INHW0: result = asm_arith_logic(instr, parm, 3); break; case INHW1: result = asm_arith_logic(instr, parm, 3); break; case EXTRACT0: result = asm_arith_logic(instr, parm, 3); break; case EXTRACT1: result = asm_arith_logic(instr, parm, 3); break; case EXHW0: result = asm_arith_logic(instr, parm, 3); break; case EXHW1: result = asm_arith_logic(instr, parm, 3); break; case EXHWS: result = asm_exhws(instr, parm, 2); break; case ILLEGAL_7F: result = EMSYNTAX; break; /* Opcodes 0x80 to 0x8F */ case SLL0: result = asm_arith_logic(instr, parm, 3); break; case SLL1: result = asm_arith_logic(instr, parm, 3); break; case SRL0: result = asm_arith_logic(instr, parm, 3); break; case SRL1: result = asm_arith_logic(instr, parm, 3); break; case ILLEGAL_84: result = EMSYNTAX; break; case ILLEGAL_85: result = EMSYNTAX; break; case SRA0: result = asm_arith_logic(instr, parm, 3); break; case SRA1: result = asm_arith_logic(instr, parm, 3); break; case IRET: result = asm_no_parms(instr, parm, 0); break; case HALT_OP: result = asm_no_parms(instr, parm, 0); break; case ILLEGAL_8A: result = EMSYNTAX; break; case ILLEGAL_8B: result = EMSYNTAX; break; case IRETINV: if (token_count > 1) result = asm_one_parms(instr, parm, 1); else result = asm_no_parms(instr, parm, 0); break; case ILLEGAL_8D: result = EMSYNTAX; break; case ILLEGAL_8E: result = EMSYNTAX; break; case ILLEGAL_8F: result = EMSYNTAX; break; /* Opcodes 0x90 to 0x9F */ case AND_OP0: result = asm_arith_logic(instr, parm, 3); break; case AND_OP1: result = asm_arith_logic(instr, parm, 3); break; case OR_OP0: result = asm_arith_logic(instr, parm, 3); break; case OR_OP1: result = asm_arith_logic(instr, parm, 3); break; case XOR_OP0: result = asm_arith_logic(instr, parm, 3); break; case XOR_OP1: result = asm_arith_logic(instr, parm, 3); break; case XNOR0: result = asm_arith_logic(instr, parm, 3); break; case XNOR1: result = asm_arith_logic(instr, parm, 3); break; case NOR0: result = asm_arith_logic(instr, parm, 3); break; case NOR1: result = asm_arith_logic(instr, parm, 3); break; case NAND0: result = asm_arith_logic(instr, parm, 3); break; case NAND1: result = asm_arith_logic(instr, parm, 3); break; case ANDN0: result = asm_arith_logic(instr, parm, 3); break; case ANDN1: result = asm_arith_logic(instr, parm, 3); break; case SETIP: result = asm_float(instr, parm, 3); break; case INV: if (token_count > 1) result = asm_one_parms(instr, parm, 1); else result = asm_no_parms(instr, parm, 0); break; /* Opcodes 0xA0 to 0xAF */ case JMP0: result = asm_jmp(instr, parm, 1); break; case JMP1: result = asm_jmp(instr, parm, 1); break; case ILLEGAL_A2: result = EMSYNTAX; break; case ILLEGAL_A3: result = EMSYNTAX; break; case JMPF0: result = asm_call_jmp(instr, parm, 2); break; case JMPF1: result = asm_call_jmp(instr, parm, 2); break; case ILLEGAL_A6: result = EMSYNTAX; break; case ILLEGAL_A7: result = EMSYNTAX; break; case CALL0: result = asm_call_jmp(instr, parm, 2); break; case CALL1: result = asm_call_jmp(instr, parm, 2); break; case ORN_OP0: result = EMSYNTAX; break; case ORN_OP1: result = EMSYNTAX; break; case JMPT0: result = asm_call_jmp(instr, parm, 2); break; case JMPT1: result = asm_call_jmp(instr, parm, 2); break; case ILLEGAL_AE: result = EMSYNTAX; break; case ILLEGAL_AF: result = EMSYNTAX; break; /* Opcodes 0xB0 to 0xBF */ case ILLEGAL_B0: result = EMSYNTAX; break; case ILLEGAL_B1: result = EMSYNTAX; break; case ILLEGAL_B2: result = EMSYNTAX; break; case ILLEGAL_B3: result = EMSYNTAX; break; case JMPFDEC0: result = asm_call_jmp(instr, parm, 2); break; case JMPFDEC1: result = asm_call_jmp(instr, parm, 2); break; case MFTLB: result = asm_mftlb(instr, parm, 2); break; case ILLEGAL_B7: result = EMSYNTAX; break; case ILLEGAL_B8: result = EMSYNTAX; break; case ILLEGAL_B9: result = EMSYNTAX; break; case ILLEGAL_BA: result = EMSYNTAX; break; case ILLEGAL_BB: result = EMSYNTAX; break; case ILLEGAL_BC: result = EMSYNTAX; break; case ILLEGAL_BD: result = EMSYNTAX; break; case MTTLB: result = asm_mttlb(instr, parm, 2); break; case ILLEGAL_BF: result = EMSYNTAX; break; /* Opcodes 0xC0 to 0xCF */ case JMPI: result = asm_jmpi(instr, parm, 1); break; case ILLEGAL_C1: result = EMSYNTAX; break; case ILLEGAL_C2: result = EMSYNTAX; break; case ILLEGAL_C3: result = EMSYNTAX; break; case JMPFI: result = asm_calli_jmpi(instr, parm, 2); break; case ILLEGAL_C5: result = EMSYNTAX; break; case MFSR: result = asm_mfsr(instr, parm, 2); break; case ILLEGAL_C7: result = EMSYNTAX; break; case CALLI: result = asm_calli_jmpi(instr, parm, 2); break; case ILLEGAL_C9: result = EMSYNTAX; break; case ILLEGAL_CA: result = EMSYNTAX; break; case ILLEGAL_CB: result = EMSYNTAX; break; case JMPTI: result = asm_calli_jmpi(instr, parm, 2); break; case ILLEGAL_CD: result = EMSYNTAX; break; case MTSR: result = asm_mtsr(instr, parm, 2); break; case ILLEGAL_CF: result = EMSYNTAX; break; /* Opcodes 0xD0 to 0xDF */ case ILLEGAL_D0: result = EMSYNTAX; break; case ILLEGAL_D1: result = EMSYNTAX; break; case ILLEGAL_D2: result = EMSYNTAX; break; case ILLEGAL_D3: result = EMSYNTAX; break; case ILLEGAL_D4: result = EMSYNTAX; break; case ILLEGAL_D5: result = EMSYNTAX; break; case ILLEGAL_D6: result = EMSYNTAX; break; case EMULATE: result = asm_emulate(instr, parm, 3); break; case ILLEGAL_D8: result = EMSYNTAX; break; case ILLEGAL_D9: result = EMSYNTAX; break; case ILLEGAL_DA: result = EMSYNTAX; break; case ILLEGAL_DB: result = EMSYNTAX; break; case ILLEGAL_DC: result = EMSYNTAX; break; case ILLEGAL_DD: result = EMSYNTAX; break; case MULTM: result = asm_float(instr, parm, 3); break; case MULTMU: result = asm_float(instr, parm, 3); break; /* Opcodes 0xE0 to 0xEF */ case MULTIPLY: result = asm_float(instr, parm, 3); break; case DIVIDE: result = asm_float(instr, parm, 3); break; case MULTIPLU: result = asm_float(instr, parm, 3); break; case DIVIDU: result = asm_float(instr, parm, 3); break; case CONVERT: result = asm_convert(instr, parm, 6); break; case SQRT: result = asm_sqrt(instr, parm, 3); break; case CLASS: result = asm_class(instr, parm, 3); break; case ILLEGAL_E7: result = EMSYNTAX; break; case ILLEGAL_E8: result = EMSYNTAX; break; case ILLEGAL_E9: result = EMSYNTAX; break; case FEQ: result = asm_float(instr, parm, 3); break; case DEQ: result = asm_float(instr, parm, 3); break; case FGT: result = asm_float(instr, parm, 3); break; case DGT: result = asm_float(instr, parm, 3); break; case FGE: result = asm_float(instr, parm, 3); break; case DGE: result = asm_float(instr, parm, 3); break; /* Opcodes 0xF0 to 0xFF */ case FADD: result = asm_float(instr, parm, 3); break; case DADD: result = asm_float(instr, parm, 3); break; case FSUB: result = asm_float(instr, parm, 3); break; case DSUB: result = asm_float(instr, parm, 3); break; case FMUL: result = asm_float(instr, parm, 3); break; case DMUL: result = asm_float(instr, parm, 3); break; case FDIV: result = asm_float(instr, parm, 3); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -