⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dis_cf.c

📁 完整的Bell实验室的嵌入式文件系统TFS
💻 C
📖 第 1 页 / 共 5 页
字号:
                    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 + -