📄 dasm.c
字号:
case MUL1: dasm_rc_ra_const8(instr, addr); break; case MULL0: dasm_rc_ra_rb(instr, addr); break; case MULL1: dasm_rc_ra_const8(instr, addr); break; case DIV0_OP0: dasm_rc_rb(instr, addr); break; case DIV0_OP1: dasm_rc_const8(instr, addr); break; case DIV_OP0: dasm_rc_ra_rb(instr, addr); break; case DIV_OP1: dasm_rc_ra_const8(instr, addr); break; case DIVL0: dasm_rc_ra_rb(instr, addr); break; case DIVL1: dasm_rc_ra_const8(instr, addr); break; case DIVREM0: dasm_rc_ra_rb(instr, addr); break; case DIVREM1: dasm_rc_ra_const8(instr, addr); break; /* Opcodes 0x70 to 0x7F */ case ASEQ0: dasm_vn_ra_rb(instr, addr); break; case ASEQ1: dasm_vn_ra_const8(instr, addr); break; case ASNEQ0: dasm_vn_ra_rb(instr, addr); break; case ASNEQ1: dasm_vn_ra_const8(instr, addr); break; case MULU0: dasm_rc_ra_rb(instr, addr); break; case MULU1: dasm_rc_ra_const8(instr, addr); break; case ILLEGAL_76: dasm_undefined(instr, addr); break; case ILLEGAL_77: dasm_undefined(instr, addr); break; case INHW0: dasm_rc_ra_rb(instr, addr); break; case INHW1: dasm_rc_ra_const8(instr, addr); break; case EXTRACT0: dasm_rc_ra_rb(instr, addr); break; case EXTRACT1: dasm_rc_ra_const8(instr, addr); break; case EXHW0: dasm_rc_ra_rb(instr, addr); break; case EXHW1: dasm_rc_ra_const8(instr, addr); break; case EXHWS: dasm_rc_ra(instr, addr); break; case ILLEGAL_7F: dasm_undefined(instr, addr); break; /* Opcodes 0x80 to 0x8F */ case SLL0: dasm_rc_ra_rb(instr, addr); break; case SLL1: dasm_rc_ra_const8(instr, addr); break; case SRL0: dasm_rc_ra_rb(instr, addr); break; case SRL1: dasm_rc_ra_const8(instr, addr); break; case ILLEGAL_84: dasm_undefined(instr, addr); break; case ILLEGAL_85: dasm_undefined(instr, addr); break; case SRA0: dasm_rc_ra_rb(instr, addr); break; case SRA1: dasm_rc_ra_const8(instr, addr); break; case IRET: dasm_none(instr, addr); break; case HALT_OP: dasm_none(instr, addr); break; case ILLEGAL_8A: dasm_undefined(instr, addr); break; case ILLEGAL_8B: dasm_undefined(instr, addr); break; case IRETINV: if ((target_config.processor_id & 0x60) == 0x60) dasm_one(instr, addr); else dasm_none(instr, addr); break; case ILLEGAL_8D: dasm_undefined(instr, addr); break; case ILLEGAL_8E: dasm_undefined(instr, addr); break; case ILLEGAL_8F: dasm_undefined(instr, addr); break; /* Opcodes 0x90 to 0x9F */ case AND_OP0: dasm_rc_ra_rb(instr, addr); break; case AND_OP1: dasm_rc_ra_const8(instr, addr); break; case OR_OP0: dasm_rc_ra_rb(instr, addr); break; case OR_OP1: dasm_rc_ra_const8(instr, addr); break; case XOR_OP0: dasm_rc_ra_rb(instr, addr); break; case XOR_OP1: dasm_rc_ra_const8(instr, addr); break; case XNOR0: dasm_rc_ra_rb(instr, addr); break; case XNOR1: dasm_rc_ra_const8(instr, addr); break; case NOR0: dasm_rc_ra_rb(instr, addr); break; case NOR1: dasm_rc_ra_const8(instr, addr); break; case NAND0: dasm_rc_ra_rb(instr, addr); break; case NAND1: dasm_rc_ra_const8(instr, addr); break; case ANDN0: dasm_rc_ra_rb(instr, addr); break; case ANDN1: dasm_rc_ra_const8(instr, addr); break; case SETIP: dasm_rc_ra_rb(instr, addr); break; case INV: if ((target_config.processor_id & 0x60) == 0x60) dasm_one(instr, addr); else dasm_none(instr, addr); break; /* Opcodes 0xA0 to 0xAF */ case JMP0: dasm_rtarget(instr, addr); break; case JMP1: dasm_atarget(instr, addr); break; case ILLEGAL_A2: dasm_undefined(instr, addr); break; case ILLEGAL_A3: dasm_undefined(instr, addr); break; case JMPF0: dasm_ra_rtarget(instr, addr); break; case JMPF1: dasm_ra_atarget(instr, addr); break; case ILLEGAL_A6: dasm_undefined(instr, addr); break; case ILLEGAL_A7: dasm_undefined(instr, addr); break; case CALL0: dasm_ra_rtarget(instr, addr); break; case CALL1: dasm_ra_atarget(instr, addr); break; case ORN_OP0: dasm_undefined(instr, addr); break; case ORN_OP1: dasm_undefined(instr, addr); break; case JMPT0: dasm_ra_rtarget(instr, addr); break; case JMPT1: dasm_ra_atarget(instr, addr); break; case ILLEGAL_AE: dasm_undefined(instr, addr); break; case ILLEGAL_AF: dasm_undefined(instr, addr); break; /* Opcodes 0xB0 to 0xBF */ case ILLEGAL_B0: dasm_undefined(instr, addr); break; case ILLEGAL_B1: dasm_undefined(instr, addr); break; case ILLEGAL_B2: dasm_undefined(instr, addr); break; case ILLEGAL_B3: dasm_undefined(instr, addr); break; case JMPFDEC0: dasm_ra_rtarget(instr, addr); break; case JMPFDEC1: dasm_ra_atarget(instr, addr); break; case MFTLB: dasm_rc_ra(instr, addr); break; case ILLEGAL_B7: dasm_undefined(instr, addr); break; case ILLEGAL_B8: dasm_undefined(instr, addr); break; case ILLEGAL_B9: dasm_undefined(instr, addr); break; case ILLEGAL_BA: dasm_undefined(instr, addr); break; case ILLEGAL_BB: dasm_undefined(instr, addr); break; case ILLEGAL_BC: dasm_undefined(instr, addr); break; case ILLEGAL_BD: dasm_undefined(instr, addr); break; case MTTLB: dasm_ra_rb(instr, addr); break; case ILLEGAL_BF: dasm_undefined(instr, addr); break; /* Opcodes 0xC0 to 0xCF */ case JMPI: dasm_rb(instr, addr); break; case ILLEGAL_C1: dasm_undefined(instr, addr); break; case ILLEGAL_C2: dasm_undefined(instr, addr); break; case ILLEGAL_C3: dasm_undefined(instr, addr); break; case JMPFI: dasm_ra_rb(instr, addr); break; case ILLEGAL_C5: dasm_undefined(instr, addr); break; case MFSR: dasm_rc_spid(instr, addr); break; case ILLEGAL_C7: dasm_undefined(instr, addr); break; case CALLI: dasm_ra_rb(instr, addr); break; case ILLEGAL_C9: dasm_undefined(instr, addr); break; case ILLEGAL_CA: dasm_undefined(instr, addr); break; case ILLEGAL_CB: dasm_undefined(instr, addr); break; case JMPTI: dasm_ra_rb(instr, addr); break; case ILLEGAL_CD: dasm_undefined(instr, addr); break; case MTSR: dasm_spid_rb(instr, addr); break; case ILLEGAL_CF: dasm_undefined(instr, addr); break; /* Opcodes 0xD0 to 0xDF */ case ILLEGAL_D0: dasm_undefined(instr, addr); break; case ILLEGAL_D1: dasm_undefined(instr, addr); break; case ILLEGAL_D2: dasm_undefined(instr, addr); break; case ILLEGAL_D3: dasm_undefined(instr, addr); break; case ILLEGAL_D4: dasm_undefined(instr, addr); break; case ILLEGAL_D5: dasm_undefined(instr, addr); break; case ILLEGAL_D6: dasm_undefined(instr, addr); break; case EMULATE: dasm_vn_ra_rb(instr, addr); break; case ILLEGAL_D8: dasm_undefined(instr, addr); break; case ILLEGAL_D9: dasm_undefined(instr, addr); break; case ILLEGAL_DA: dasm_undefined(instr, addr); break; case ILLEGAL_DB: dasm_undefined(instr, addr); break; case ILLEGAL_DC: dasm_undefined(instr, addr); break; case ILLEGAL_DD: dasm_undefined(instr, addr); break; case MULTM: dasm_rc_ra_rb(instr, addr); break; case MULTMU: dasm_rc_ra_rb(instr, addr); break; /* Opcodes 0xE0 to 0xEF */ case MULTIPLY: dasm_rc_ra_rb(instr, addr); break; case DIVIDE: dasm_rc_ra_rb(instr, addr); break; case MULTIPLU: dasm_rc_ra_rb(instr, addr); break; case DIVIDU: dasm_rc_ra_rb(instr, addr); break; case CONVERT: dasm_convert(instr, addr); break; case SQRT: dasm_rc_ra_const8(instr, addr); break; case CLASS: dasm_dc_ra_rb(instr, addr); break; case ILLEGAL_E7: dasm_undefined(instr, addr); break; case ILLEGAL_E8: dasm_undefined(instr, addr); break; case ILLEGAL_E9: dasm_undefined(instr, addr); break; case FEQ: dasm_rc_ra_rb(instr, addr); break; case DEQ: dasm_rc_ra_rb(instr, addr); break; case FGT: dasm_rc_ra_rb(instr, addr); break; case DGT: dasm_rc_ra_rb(instr, addr); break; case FGE: dasm_rc_ra_rb(instr, addr); break; case DGE: dasm_rc_ra_rb(instr, addr); break; /* Opcodes 0xF0 to 0xFF */ case FADD: dasm_rc_ra_rb(instr, addr); break; case DADD: dasm_rc_ra_rb(instr, addr); break; case FSUB: dasm_rc_ra_rb(instr, addr); break; case DSUB: dasm_rc_ra_rb(instr, addr); break; case FMUL: dasm_rc_ra_rb(instr, addr); break; case DMUL: dasm_rc_ra_rb(instr, addr); break; case FDIV: dasm_rc_ra_rb(instr, addr); break; case DDIV: dasm_rc_ra_rb(instr, addr); break; case ILLEGAL_F8: dasm_undefined(instr, addr); break; case FDMUL: dasm_rc_ra_rb(instr, addr); break; case ILLEGAL_FA: dasm_undefined(instr, addr); break; case ILLEGAL_FB: dasm_undefined(instr, addr); break; case ILLEGAL_FC: dasm_undefined(instr, addr); break; case ILLEGAL_FD: dasm_undefined(instr, addr); break; case ILLEGAL_FE: dasm_undefined(instr, addr); break; case ILLEGAL_FF: dasm_undefined(instr, addr); break; } /* end switch */ } /* End dasm_instr() *//*** The following functions are used to format an instruction** into human-readable form. All of the Am29000 instruction** formats are supported below.*//*** Format: 0xnnnnnnnn*//*ARGSUSED*/voiddasm_undefined(instr, pc) struct instr_t *instr; ADDR32 pc; { if (io_config.echo_mode == (INT32) TRUE) fprintf(io_config.echo_file, ".word 0x%02x%02x%02x%02x", instr->op, instr->c, instr->a, instr->b); (void) fprintf(stderr, ".word 0x%02x%02x%02x%02x", instr->op, instr->c, instr->a, instr->b); }/*** Format: <Mnemonic> ra, const16**** (See CONSTN)*//*ARGSUSED*/voiddasm_ra_const16n(instr, pc) struct instr_t *instr; ADDR32 pc; { INT32 const16; const16 = (INT32) ((instr->b | (instr->c << 8)) | 0xffff0000); if (io_config.echo_mode == (INT32) TRUE) (void) fprintf(io_config.echo_file, "%s %s,0x%lx", opcode_name[instr->op], reg[instr->a], const16); (void) fprintf(stderr, "%s %s,0x%lx", opcode_name[instr->op], reg[instr->a], const16); }/*** Format: <Mnemonic> ra, const16**** (See CONSTH)*//*ARGSUSED*/voiddasm_ra_const16h(instr, pc) struct instr_t *instr; ADDR32 pc; { INT32 const32; INT32 i_15_8; INT32 i_7_0; i_15_8 = (INT32) instr->c; i_7_0 = (INT32) instr->b; const32 = ((i_15_8 << 24) | (i_7_0 << 16)); if (io_config.echo_mode == (INT32) TRUE) (void) fprintf(io_config.echo_file, "%s %s,0x%lx", opcode_name[instr->op], reg[instr->a], const32); (void) fprintf(stderr, "%s %s,0x%lx", opcode_name[instr->op], reg[instr->a], const32); }/*** Format: <Mnemonic> ra, const16**** (See CONST)*//*ARGSUSED*/voiddasm_ra_const16(instr, pc) struct instr_t *instr; ADDR32 pc; { INT32 const16; const16 = (INT32) (instr->b | (instr->c << 8)); if (io_config.echo_mode == (INT32) TRUE) (void) fprintf(io_config.echo_file, "%s %s,0x%x", opcode_name[instr->op], reg[instr->a], const16); (void) fprintf(stderr, "%s %s,0x%x", opcode_name[instr->op], reg[instr->a], const16); }/*** Format: <Mnemonic> spid, const16**** (See MTSRIM)*//*ARGSUSED*/voiddasm_spid_const16(instr, pc) struct instr_t *instr; ADDR32 pc; { INT32 const16; INT32 i_15_8; INT32 i_7_0; i_15_8 = (INT32) instr->c; i_7_0 = (INT32) instr->b; const16 = ((i_15_8 << 8) | i_7_0); if (io_config.echo_mode == (INT32) TRUE) (void) fprintf(io_config.echo_file, "%s %s,0x%x", opcode_name[instr->op], spreg[instr->a], const16); (void) fprintf(stderr, "%s %s,0x%x", opcode_name[instr->op], spreg[instr->a], const16); }/*** Format: <Mnemonic> ce, cntl, ra, rb**** (See LOADM, LOADSET, STORE, STOREL, etc...)*//*ARGSUSED*/voiddasm_ce_cntl_ra_rb(instr, pc) struct instr_t *instr; ADDR32 pc; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -