📄 dis_cf.c
字号:
break; case -1: need_slash = more_bits_set(0x0100,-1,dir,reg_mask); break; default: break; } } }}static voidfunc27 (int index, WORD opword){ /* MOVEM */ int mask; mask = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); if (opword & 0x0040) { /* long */ append_size(dstr,0x0002,1,TRUE); } else { /* word */ append_size(dstr,0x0002,2,TRUE); } if (opword & 0x0400) { /* memory to register */ append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_reg_list(mask,opword); } else { /* register to memory */ append_reg_list(mask,opword); append_string(dstr,","); append_ea(dstr,opword,5,isa[index].ea_mask); }}static voidfunc28 (int index, WORD opword){ /* CMPA ADDA SUBA */ if (opword & 0x0100) { /* long */ append_size(dstr,0x0002,1,TRUE); } else { /* word */ append_size(dstr,0x0002,2,TRUE); } append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword,ADDRESS_REGISTER,11);}static voidfunc29 (int index, WORD opword){ /* SUBQ ADDQ */ int data; data = ((opword & 0x0E00) >> 9); if (data == 0) data = 8; append_size(dstr,opword,7,TRUE); append_string(dstr,"#"); append_value(dstr,data,8); append_string(dstr,","); append_ea(dstr,opword,5,isa[index].ea_mask);}#ifndef MCF5200static voidfunc30 (int index, WORD opword){ /* MOVES */ int opword2; append_size(dstr,opword,7,TRUE); opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); if (opword2 & 0x000800) { /* MOVES Rn,<ea> */ append_register(dstr,opword2,15,14); append_string(dstr,","); append_ea(dstr,opword,5,isa[index].ea_mask); } else { /* MOVES <ea>,Rn */ append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword2,15,14); }}#endif /* MCF5200 */static voidfunc31 (int index, WORD opword){ /* AND OR EOR */ append_size(dstr,opword,7,TRUE); append_register(dstr,opword,DATA_REGISTER,11); append_string(dstr,","); append_ea(dstr,opword,5,isa[index].ea_mask);}static voidfunc32 (int index, WORD opword){ /* LEA */ append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword,ADDRESS_REGISTER,11);}static voidfunc33 (int index, WORD opword){ /* SUB AND ADD OR CMP */ append_size(dstr,opword,7,TRUE); append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword,DATA_REGISTER,11);}static voidfunc34 (int index, WORD opword){ /* LSL,LSR,ROL,ROR,ROXL,ROXR,ASL,ASR #<data> */ int data; (void)index; data = ((opword & 0x0E00) >> 9); if (data == 0) data = 8; append_size(dstr,opword,7,TRUE); append_string(dstr,"#"); append_value(dstr,data,8); append_string(dstr,","); append_register(dstr,opword,DATA_REGISTER,2);}static voidfunc35 (int index, WORD opword){ /* LSL,LSR,ROL,ROR,ROXL,ROXR,ASL,ASR Dx */ (void)index; append_size(dstr,opword,7,TRUE); append_register(dstr,opword,DATA_REGISTER,11); append_string(dstr,","); append_register(dstr,opword,DATA_REGISTER,2);}static voidfunc36 (int index, WORD opword){ /* MOVEC */ int opword2; char buffer[9]; (void)index; opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); if (opword & 0x0001) { append_register(dstr,opword2,15,14); append_string(dstr,","); } switch (opword2 & 0x0FFF) {#if (defined(MCF5202) || defined(MCF5204) || defined(MCF5206)) case 0x002: append_string(dstr,"CACR"); break; case 0x004: append_string(dstr,"ACR0"); break; case 0x005: append_string(dstr,"ACR1"); break;#endif#if (defined(MCF5200D) || defined(MCF5202) || \ defined(MCF5204) || defined(MCF5206)) case 0x801: append_string(dstr,"VBR"); break;#endif#if (defined(MCF5204) || defined(MCF5206)) case 0xC04: append_string(dstr,"RAMBAR"); break; case 0xC0F: append_string(dstr,"MBAR"); break;#endif#if (defined(MC68010) || defined(MC68020) || defined(MC68030) || \ defined(MC68040) || defined(MC68EC040) || defined(CPU32)) case 0x000: append_string(dstr,"SFC"); break; case 0x001: append_string(dstr,"DFC"); break; case 0x800: append_string(dstr,"USP"); break; case 0x801: append_string(dstr,"VBR"); break;#endif#if (defined(MC68020) || defined(MC68030) || defined(MC68040) || \ defined(MC68EC040)) case 0x002: append_string(dstr,"CACR"); break; case 0x802: append_string(dstr,"CAAR"); break; case 0x803: append_string(dstr,"MSP"); break; case 0x804: append_string(dstr,"ISP"); break;#endif#if (defined(MC68040) || defined(MC68LC040)) case 0x003: append_string(dstr,"TCR"); break; case 0x004: append_string(dstr,"ITT0"); break; case 0x005: append_string(dstr,"ITT1"); break; case 0x006: append_string(dstr,"DTT0"); break; case 0x007: append_string(dstr,"DTT1"); break; case 0x805: append_string(dstr,"MMUSR"); break; case 0x806: append_string(dstr,"URP"); break; case 0x807: append_string(dstr,"SRP"); break;#endif#ifdef MC68EC040 case 0x004: append_string(dstr,"IACR0"); break; case 0x005: append_string(dstr,"IACR1"); break; case 0x006: append_string(dstr,"DACR0"); break; case 0x007: append_string(dstr,"DACR1"); break;#endif default: sprintf(buffer,"Rc%03X",opword2); append_string(dstr,buffer); break; } if (!(opword & 0x0001)) { append_string(dstr,","); append_register(dstr,opword2,15,14); }}#ifdef MCF5200static voidfunc37 (int index, WORD opword){ /* WDEBUG */ int opword2; opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); if (opword2 & 0x0003) { append_ea(dstr,opword,5,isa[index].ea_mask); } else { valid_instruction = FALSE; }}#endifstatic voidfunc38 (int index, WORD opword){ /* MULS MULU .W */ append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword,DATA_REGISTER,11);}static voidfunc39 (int index, WORD opword){ /* MULS MULU .L */ int opword2,size; opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); switch (opword2 & 0x8FF8) { case 0x0000: append_instruction(dstr,"MULU.L"); size=32; break; case 0x0400: append_instruction(dstr,"MULU.L"); size=64; break; case 0x0800: append_instruction(dstr,"MULS.L"); size=32; break; case 0x0C00: append_instruction(dstr,"MULS.L"); size=64; break; default: valid_instruction = FALSE; return; break; } if (size == 32) { /* 32 bit */ append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword2,DATA_REGISTER,14); } else { /* 64 bit */ append_ea(dstr,opword,5,isa[index].ea_mask); append_string(dstr,","); append_register(dstr,opword2,DATA_REGISTER,2); append_string(dstr,"-"); append_register(dstr,opword2,DATA_REGISTER,14); }}#ifndef MCF5200static voidfunc40 (int index, WORD opword){ /* CAS2 */ int opword2, opword3; (void)index; opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); opword3 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); if (opword & 0x0200) { /* long */ append_size(dstr,0x0002,1,TRUE); } else { /* word */ append_size(dstr,0x0002,2,TRUE); } append_register(dstr,opword2,DATA_REGISTER,2); append_string(dstr,":"); append_register(dstr,opword3,DATA_REGISTER,2); append_string(dstr,","); append_register(dstr,opword2,DATA_REGISTER,8); append_string(dstr,":"); append_register(dstr,opword3,DATA_REGISTER,8); append_string(dstr,",("); append_register(dstr,opword2,15,14); append_string(dstr,"),("); append_register(dstr,opword3,15,14); append_string(dstr,")");}static voidfunc41 (int index, WORD opword){ /* CAS */ int opword2; opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); append_size2(dstr,opword,10,TRUE); append_register(dstr,opword2,DATA_REGISTER,2); append_string(dstr,","); append_register(dstr,opword2,DATA_REGISTER,8); append_string(dstr,","); append_ea(dstr,opword,5,isa[index].ea_mask);}static voidfunc42 (int index, WORD opword){ /* MOVEP */ int opword2; (void)index; opword2 = (int)((WORD)cpu_read_data((ADDRESS)disasm_pc,16)); inc_disasm_pc(2); if (opword & 0x0040) { /* long */ append_size(dstr,opword,6,TRUE); } else { /* word */ append_size(dstr,opword,4,TRUE); } if (opword & 0x0080) { /* MOVEP Dx,(d16,Ay) */ append_register(dstr,opword,DATA_REGISTER,11); append_string(dstr,",("); append_value(dstr,opword2,16); append_string(dstr,","); append_register(dstr,opword,ADDRESS_REGISTER,2); append_string(dstr,")"); } else { /* MOVEP (d16,Ay),Dx */ append_string(dstr,"("); append_value(dstr,opword2,16); append_string(dstr,","); append_register(dstr,opword,ADDRESS_REGISTER,2); append_string(dstr,"),"); append_register(dstr,opword,DATA_REGISTER,11); }}static voidfunc43 (int index, WORD opword){ /* LINK long */ int disp; char buffer[20]; (void)index;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -