dumpconf.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 459 行 · 第 1/2 页

C
459
字号
        if( Check(&name,HW_B27) ) { DumpLiteral( "B27" ); continue; }
        if( Check(&name,HW_B28) ) { DumpLiteral( "B28" ); continue; }
        if( Check(&name,HW_B29) ) { DumpLiteral( "B29" ); continue; }
        if( Check(&name,HW_B30) ) { DumpLiteral( "B30" ); continue; }
        if( Check(&name,HW_B31) ) { DumpLiteral( "B31" ); continue; }

        if( Check(&name,HW_F0) ) { DumpLiteral( "F0" ); continue; }
        if( Check(&name,HW_F1) ) { DumpLiteral( "F1" ); continue; }
        if( Check(&name,HW_F2) ) { DumpLiteral( "F2" ); continue; }
        if( Check(&name,HW_F3) ) { DumpLiteral( "F3" ); continue; }
        if( Check(&name,HW_F4) ) { DumpLiteral( "F4" ); continue; }
        if( Check(&name,HW_F5) ) { DumpLiteral( "F5" ); continue; }
        if( Check(&name,HW_F6) ) { DumpLiteral( "F6" ); continue; }
        if( Check(&name,HW_F7) ) { DumpLiteral( "F7" ); continue; }
        if( Check(&name,HW_F8) ) { DumpLiteral( "F8" ); continue; }
        if( Check(&name,HW_F9) ) { DumpLiteral( "F9" ); continue; }
        if( Check(&name,HW_F10) ) { DumpLiteral( "F10" ); continue; }
        if( Check(&name,HW_F11) ) { DumpLiteral( "F11" ); continue; }
        if( Check(&name,HW_F12) ) { DumpLiteral( "F12" ); continue; }
        if( Check(&name,HW_F13) ) { DumpLiteral( "F13" ); continue; }
        if( Check(&name,HW_F14) ) { DumpLiteral( "F14" ); continue; }
        if( Check(&name,HW_F15) ) { DumpLiteral( "F15" ); continue; }
        if( Check(&name,HW_F16) ) { DumpLiteral( "F16" ); continue; }
        if( Check(&name,HW_F17) ) { DumpLiteral( "F17" ); continue; }
        if( Check(&name,HW_F18) ) { DumpLiteral( "F18" ); continue; }
        if( Check(&name,HW_F19) ) { DumpLiteral( "F19" ); continue; }
        if( Check(&name,HW_F20) ) { DumpLiteral( "F20" ); continue; }
        if( Check(&name,HW_F21) ) { DumpLiteral( "F21" ); continue; }
        if( Check(&name,HW_F22) ) { DumpLiteral( "F22" ); continue; }
        if( Check(&name,HW_F23) ) { DumpLiteral( "F23" ); continue; }
        if( Check(&name,HW_F24) ) { DumpLiteral( "F24" ); continue; }
        if( Check(&name,HW_F25) ) { DumpLiteral( "F25" ); continue; }
        if( Check(&name,HW_F26) ) { DumpLiteral( "F26" ); continue; }
        if( Check(&name,HW_F27) ) { DumpLiteral( "F27" ); continue; }
        if( Check(&name,HW_F28) ) { DumpLiteral( "F28" ); continue; }
        if( Check(&name,HW_F29) ) { DumpLiteral( "F29" ); continue; }
        if( Check(&name,HW_F30) ) { DumpLiteral( "F30" ); continue; }
        if( Check(&name,HW_F31) ) { DumpLiteral( "F31" ); continue; }
#endif
#if 0
#if _TARGET & _TARG_PPC
            if( Check(&name,HW_CTR) ) { DumpLiteral( "CTR" ); continue; }
            if( Check(&name,HW_CR) ) { DumpLiteral( "CR" ); continue; }
            if( Check(&name,HW_MQ) ) { DumpLiteral( "MQ" ); continue; }
            if( Check(&name,HW_LR) ) { DumpLiteral( "LR" ); continue; }
#endif
#endif
#if _TARGET & ( _TARG_80386 | _TARG_IAPX86 )
            if( Check(&name,HW_EAX)) { DumpLiteral("EAX"); continue; }
            if( Check(&name,HW_EBX)) { DumpLiteral("EBX"); continue; }
            if( Check(&name,HW_ECX)) { DumpLiteral("ECX"); continue; }
            if( Check(&name,HW_EDX)) { DumpLiteral("EDX"); continue; }
            if( Check(&name,HW_EDI)) { DumpLiteral("EDI"); continue; }
            if( Check(&name,HW_ESI)) { DumpLiteral("ESI"); continue; }
            if( Check(&name,HW_BP))  { DumpLiteral("EBP"); continue; }
            if( Check(&name,HW_SP))  { DumpLiteral("ESP"); continue; }
            if( Check(&name,HW_GS) ) { DumpLiteral( "GS"); continue; }
            if( Check(&name,HW_FS) ) { DumpLiteral( "FS"); continue; }
            if( Check(&name,HW_ES) ) { DumpLiteral( "ES"); continue; }
            if( Check(&name,HW_DS) ) { DumpLiteral( "DS"); continue; }
            if( Check(&name,HW_CS) ) { DumpLiteral( "CS"); continue; }
            if( Check(&name,HW_SS) ) { DumpLiteral( "SS"); continue; }
            if( Check(&name,HW_AX) ) { DumpLiteral( "AX"); continue; }
            if( Check(&name,HW_BX) ) { DumpLiteral( "BX"); continue; }
            if( Check(&name,HW_CX) ) { DumpLiteral( "CX"); continue; }
            if( Check(&name,HW_DX) ) { DumpLiteral( "DX"); continue; }
            if( Check(&name,HW_AL) ) { DumpLiteral( "AL"); continue; }
            if( Check(&name,HW_BL) ) { DumpLiteral( "BL"); continue; }
            if( Check(&name,HW_CL) ) { DumpLiteral( "CL"); continue; }
            if( Check(&name,HW_DL) ) { DumpLiteral( "DL"); continue; }
            if( Check(&name,HW_AH) ) { DumpLiteral( "AH"); continue; }
            if( Check(&name,HW_BH) ) { DumpLiteral( "BH"); continue; }
            if( Check(&name,HW_CH) ) { DumpLiteral( "CH"); continue; }
            if( Check(&name,HW_DH) ) { DumpLiteral( "DH"); continue; }
            if( Check(&name,HW_SI) ) { DumpLiteral( "SI"); continue; }
            if( Check(&name,HW_DI) ) { DumpLiteral( "DI"); continue; }
            if( Check(&name,HW_BP) ) { DumpLiteral( "BP"); continue; }
            if( Check(&name,HW_SP) ) { DumpLiteral( "SP"); continue; }
            if( Check(&name,HW_ST0) ) { DumpLiteral( "ST(0)"); continue; }
            if( Check(&name,HW_ST1) ) { DumpLiteral( "ST(1)"); continue; }
            if( Check(&name,HW_ST2) ) { DumpLiteral( "ST(2)"); continue; }
            if( Check(&name,HW_ST3) ) { DumpLiteral( "ST(3)"); continue; }
            if( Check(&name,HW_ST4) ) { DumpLiteral( "ST(4)"); continue; }
            if( Check(&name,HW_ST5) ) { DumpLiteral( "ST(5)"); continue; }
            if( Check(&name,HW_ST6) ) { DumpLiteral( "ST(6)"); continue; }
            if( Check(&name,HW_ST7) ) { DumpLiteral( "ST(7)"); continue; }
#endif
            break;
        }
    }
}


static  void    DumpRgSet( hw_reg_set *possible ) {
/**************************************************/

    int i;

    if( possible != NULL ) {
        i = 0;
        DumpLiteral( " Choices " );
        while( !HW_CEqual( *possible, HW_EMPTY ) ) {
            DumpRegName( *possible );
            ++ possible;
            DumpLiteral( " " );
        }
    }
}


static  void    DumpInsRange( conflict_node *conf ) {
/***************************************************/

    if( conf->ins_range.first != NULL ) {
        DumpLiteral( " Instruction " );
        DumpInt( conf->ins_range.first->id );
        if( conf->ins_range.first != conf->ins_range.last
         && conf->ins_range.last != NULL ) {
            DumpLiteral( " to Instruction " );
            DumpInt( conf->ins_range.last->id );
        }
    }
}


extern  void    DumpPossible( byte idx ) {
/****************************************/


    if( idx == RL_NUMBER_OF_SETS ) {
        DumpLiteral( " Choices ANY" );
    } else {
        DumpRgSet( RegSets[  idx  ] );
    }
}


extern  void    DumpRegSet( hw_reg_set reg ) {
/********************************************/

    DumpRegName( reg );
    DumpNL();
}


extern  void    DumpAConf( conflict_node *conf ) {
/************************************************/

    DumpOperand( conf->name );
    DumpLiteral( " id " );
    DumpGBit( &conf->id.out_of_block );
    DumpLiteral( " " );
    DumpLBit( &conf->id.within_block );
    DumpPossible( conf->possible );
    DumpNL();
    DumpLiteral( "    " );
    DumpInsRange( conf );
    DumpLiteral( " Start block " );
    DumpPtr( conf->start_block );
    DumpNL();
    DumpLiteral( "    Conflicts with " );
    DumpGBit( &conf->with.out_of_block );
    DumpLiteral( " " );
    DumpLBit( &conf->with.within_block );
    DumpLiteral( " " );
    DumpRegName( conf->with.regs );
    DumpNL();
    DumpLiteral( "    Constrained " );
    DumpInt( conf->num_constrained );
    DumpLiteral( " vs " );
    DumpInt( conf->available );
    DumpNL();
    if( _Is( conf, SAVINGS_CALCULATED ) ) {
        DumpLiteral( "    Savings " );
        DumpLong( conf->savings );
        DumpNL();
    }
    if( _Is( conf, CONFLICT_ON_HOLD ) ) {
        DumpLiteral( "    On hold" );
        DumpNL();
    }
    if( _Is( conf, CHANGES_OTHERS ) ) {
        DumpLiteral( "    Changes Others" );
        DumpNL();
    }
    if( _Is( conf, NEEDS_SEGMENT ) ) {
        DumpLiteral( "    Needs segment" );
        DumpNL();
    }
    if( _Is( conf, NEEDS_SEGMENT_SPLIT ) ) {
        DumpLiteral( "    Needs segment split" );
        DumpNL();
    }
    if( _Is( conf, SEGMENT_SPLIT ) ) {
        DumpLiteral( "    Is segment split" );
        DumpNL();
    }
    if( _Is( conf, NEEDS_INDEX ) ) {
        DumpLiteral( "    Needs index" );
        DumpNL();
    }
    if( _Is( conf, NEEDS_INDEX_SPLIT ) ) {
        DumpLiteral( "    Needs index split" );
        DumpNL();
    }
    if( _Is( conf, INDEX_SPLIT ) ) {
        DumpLiteral( "    Is index split" );
        DumpNL();
    }
}


extern  void    DumpConflicts() {
/*******************************/

    conflict_node       *conf;

    DumpLiteral( "Conflict graph" );
    DumpNL();
    conf = ConfList;
    while( conf != NULL ) {
        DumpPtr( conf );
        DumpLiteral( " " );
        DumpAConf( conf );
        conf = conf->next_conflict;
    }
    DumpNL();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?