cmdlnx86.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 1,273 行 · 第 1/3 页
C
1,273 行
strcpy( DLL_CLIB_Name, "2clibdl?" );
}
}
if( data->bm ) {
strcpy( CLIB_Name, "2clibmt?" );
} else if( data->bd ) {
if( control & MMC_WIN ) {
strcpy( CLIB_Name, "2clib?" );
} else {
strcpy( CLIB_Name, "2clibdl?" );
}
} else {
strcpy( CLIB_Name, "2clib?" );
}
if( CompFlags.excs_enabled ) {
if( data->bm ) { // .DLL
strcpy( DLL_WCPPLIB_Name, "4plbxmt?" );
} else {
if( control & MMC_WIN ) {
strcpy( DLL_WCPPLIB_Name, "4plbx?" );
} else {
strcpy( DLL_WCPPLIB_Name, "4plbxmt?" );
}
}
if( data->bm ) {
strcpy( WCPPLIB_Name, "4plbxmt?" );
} else if( data->bd ) {
if( control & MMC_WIN ) {
strcpy( WCPPLIB_Name, "4plbx?" );
} else {
strcpy( WCPPLIB_Name, "4plbxmt?" );
}
} else {
strcpy( WCPPLIB_Name, "4plbx?" );
}
} else {
if( data->bm ) { // .DLL
strcpy( DLL_WCPPLIB_Name, "4plibmt?" );
} else {
if( control & MMC_WIN ) {
strcpy( DLL_WCPPLIB_Name, "4plib?" );
} else {
strcpy( DLL_WCPPLIB_Name, "4plibmt?" );
}
}
if( data->bm ) {
strcpy( WCPPLIB_Name, "4plibmt?" );
} else if( data->bd ) {
if( control & MMC_WIN ) {
strcpy( WCPPLIB_Name, "4plib?" );
} else {
strcpy( WCPPLIB_Name, "4plibmt?" );
}
} else {
strcpy( WCPPLIB_Name, "4plib?" );
}
}
if( GET_FPU_EMU( CpuSwitches ) ) {
strcpy( MATHLIB_Name, "8math87?" );
EmuLib_Name = "9emu87";
} else if( GET_FPU_LEVEL( CpuSwitches ) == FPU_NONE ) {
strcpy( MATHLIB_Name, "5math?" );
EmuLib_Name = NULL;
} else {
strcpy( MATHLIB_Name, "8math87?" );
EmuLib_Name = "9noemu87";
}
#else
if( CompFlags.register_conventions ) {
model = 'r';
PreDefineStringMacro( "__3R__" );
} else {
model = 's';
PreDefineStringMacro( "__3S__" );
}
strcpy( CDLL_Name, "1clb?dll" );
strcpy( CLIB_Name, "2clib3?" );
strcpy( DLL_CLIB_Name, "2clib3?" );
if( CompFlags.excs_enabled ) {
strcpy( WCPPDLL_Name, "3plb?dllx" );
if( data->bm ) { // .DLL
strcpy( DLL_WCPPLIB_Name, "4plbxmt3?" );
} else {
if( control & MMC_WIN ) {
strcpy( DLL_WCPPLIB_Name, "4plbx3?" );
} else {
strcpy( DLL_WCPPLIB_Name, "4plbxmt3?" );
}
}
if( data->bm ) {
strcpy( WCPPLIB_Name, "4plbxmt3?" );
} else if( data->bd ) {
if( control & MMC_WIN ) {
strcpy( WCPPLIB_Name, "4plbx3?" );
} else {
strcpy( WCPPLIB_Name, "4plbxmt3?" );
}
} else {
strcpy( WCPPLIB_Name, "4plbx3?" );
}
} else {
strcpy( WCPPDLL_Name, "3plb?dll" );
if( data->bm ) { // .DLL
strcpy( DLL_WCPPLIB_Name, "4plibmt3?" );
} else {
if( control & MMC_WIN ) {
strcpy( DLL_WCPPLIB_Name, "4plib3?" );
} else {
strcpy( DLL_WCPPLIB_Name, "4plibmt3?" );
}
}
if( data->bm ) {
strcpy( WCPPLIB_Name, "4plibmt3?" );
} else if( data->bd ) {
if( control & MMC_WIN ) {
strcpy( WCPPLIB_Name, "4plib3?" );
} else {
strcpy( WCPPLIB_Name, "4plibmt3?" );
}
} else {
strcpy( WCPPLIB_Name, "4plib3?" );
}
}
if( GET_FPU_EMU( CpuSwitches ) ) {
if( data->br ) {
strcpy( MATHLIB_Name, "8mt7?dll" );
} else {
strcpy( MATHLIB_Name, "8math387?" );
}
EmuLib_Name = "9emu387";
} else if( GET_FPU_LEVEL( CpuSwitches ) == FPU_NONE ) {
if( data->br ) {
strcpy( MATHLIB_Name, "5mth?dll" );
} else {
strcpy( MATHLIB_Name, "5math3?" );
}
EmuLib_Name = NULL;
} else {
if( data->br ) {
strcpy( MATHLIB_Name, "8mt7?dll" );
} else {
strcpy( MATHLIB_Name, "8math387?" );
}
EmuLib_Name = "9noemu387";
}
*strchr( CDLL_Name, '?' ) = model;
*strchr( WCPPDLL_Name, '?' ) = model;
#endif
*strchr( CLIB_Name, '?' ) = model;
*strchr( MATHLIB_Name, '?' ) = model;
*strchr( WCPPLIB_Name, '?' ) = model;
*strchr( DLL_CLIB_Name, '?' ) = model;
*strchr( DLL_WCPPLIB_Name, '?' ) = model;
}
static void setIntelArchitecture( OPT_STORAGE *data, mem_model_control control )
{
#if _CPU == 386
switch( data->arch_386 ) {
case OPT_arch_386__3s:
CompFlags.register_conventions = 0;
SET_CPU( CpuSwitches, CPU_386 );
break;
case OPT_arch_386__3r:
CompFlags.register_conventions = 1;
SET_CPU( CpuSwitches, CPU_386 );
break;
case OPT_arch_386__4s:
CompFlags.register_conventions = 0;
SET_CPU( CpuSwitches, CPU_486 );
break;
case OPT_arch_386__4r:
CompFlags.register_conventions = 1;
SET_CPU( CpuSwitches, CPU_486 );
break;
case OPT_arch_386__5s:
CompFlags.register_conventions = 0;
SET_CPU( CpuSwitches, CPU_586 );
break;
case OPT_arch_386__5r:
CompFlags.register_conventions = 1;
SET_CPU( CpuSwitches, CPU_586 );
break;
case OPT_arch_386__6s:
CompFlags.register_conventions = 0;
SET_CPU( CpuSwitches, CPU_686 );
break;
case OPT_arch_386__6r:
CompFlags.register_conventions = 1;
SET_CPU( CpuSwitches, CPU_686 );
break;
}
if( control & MMC_NETWARE ) {
CompFlags.register_conventions = 0;
}
#else
control = control;
switch( data->arch_i86 ) {
case OPT_arch_i86__0:
SET_CPU( CpuSwitches, CPU_86 );
break;
case OPT_arch_i86__1:
SET_CPU( CpuSwitches, CPU_186 );
break;
case OPT_arch_i86__2:
SET_CPU( CpuSwitches, CPU_286 );
break;
case OPT_arch_i86__3:
SET_CPU( CpuSwitches, CPU_386 );
break;
case OPT_arch_i86__4:
SET_CPU( CpuSwitches, CPU_486 );
break;
case OPT_arch_i86__5:
SET_CPU( CpuSwitches, CPU_586 );
break;
case OPT_arch_i86__6:
SET_CPU( CpuSwitches, CPU_686 );
break;
}
#endif
defineM_IX86Macro();
}
static void defineFSRegistration( void )
{
if( CompFlags.zo_switch_used ) {
CErr1( WARN_ZO_OBSOLETE );
}
CompFlags.rw_registration = TRUE;
#if _CPU == 386
if( TargetSystem == TS_NT
|| TargetSystem == TS_OS2 ) {
CompFlags.fs_registration = TRUE;
}
#endif
}
static void defEmu( void )
{
if( GET_FPU_EMU( CpuSwitches ) ) {
DefSwitchMacro( "FPI" );
} else {
DefSwitchMacro( "FPI87" );
}
}
static void macroDefs( void )
{
if( TargetSwitches & I_MATH_INLINE ) {
DefSwitchMacro( "OM" );
}
switch( TargetSwitches & (BIG_DATA|BIG_CODE|CHEAP_POINTER|FLAT_MODEL) ) {
case 0:
DefSwitchMacro( "MS" );
break;
case BIG_CODE:
DefSwitchMacro( "MM" );
break;
case BIG_DATA|CHEAP_POINTER:
DefSwitchMacro( "MC" );
break;
case BIG_CODE|BIG_DATA|CHEAP_POINTER:
DefSwitchMacro( "ML" );
break;
case BIG_CODE|BIG_DATA:
DefSwitchMacro( "MH" );
break;
case FLAT_MODEL:
DefSwitchMacro( "MF" );
break;
}
if( TargetSwitches & FLOATING_FS ) {
DefSwitchMacro( "ZFF" );
} else {
DefSwitchMacro( "ZFP" );
}
if( TargetSwitches & FLOATING_GS ) {
DefSwitchMacro( "ZGF" );
} else {
DefSwitchMacro( "ZGP" );
}
if( TargetSwitches & FLOATING_DS ) {
DefSwitchMacro( "ZDF" );
} else {
DefSwitchMacro( "ZDP" );
}
if( TargetSwitches & FLOATING_SS ) {
DefSwitchMacro( "ZU" );
}
if( TargetSwitches & INDEXED_GLOBALS ) {
DefSwitchMacro( "XGV" );
}
if( TargetSwitches & WINDOWS ) {
DefSwitchMacro( "ZW" );
}
if( TargetSwitches & SMART_WINDOWS ) {
DefSwitchMacro( "ZWS" );
}
if( TargetSwitches & NO_CALL_RET_TRANSFORM ) {
DefSwitchMacro( "OC" );
}
if( TargetSwitches & NEED_STACK_FRAME ) {
DefSwitchMacro( "OF" );
}
if( GenSwitches & NO_OPTIMIZATION ) {
DefSwitchMacro( "OD" );
}
if( GenSwitches & RELAX_ALIAS ) {
DefSwitchMacro( "OA" );
}
if( GenSwitches & BRANCH_PREDICTION ) {
DefSwitchMacro( "OB" );
}
if( GenSwitches & LOOP_OPTIMIZATION ) {
DefSwitchMacro( "OL" );
}
if( GenSwitches & INS_SCHEDULING ) {
DefSwitchMacro( "OR" );
}
if( GenSwitches & FPU_ROUNDING_INLINE ) {
DefSwitchMacro( "ZRI" );
}
if( GenSwitches & FPU_ROUNDING_OMIT ) {
DefSwitchMacro( "ZRO" );
}
if( TargetSwitches & GEN_FWAIT_386 ) {
DefSwitchMacro( "ZFW" );
}
if( CompFlags.signed_char ) {
DefSwitchMacro( "J" );
}
if( CompFlags.use_pcheaders ) {
DefSwitchMacro( "FH" );
}
if( CompFlags.no_pch_warnings ) {
DefSwitchMacro( "FHQ" );
}
if( CompFlags.inline_intrinsics ) {
DefSwitchMacro( "OI" );
}
if( CompFlags.zu_switch_used ) {
DefSwitchMacro( "ZU" );
}
if( CompFlags.unique_functions ) {
DefSwitchMacro( "OU" );
}
#if _CPU == 386
if( CompFlags.register_conventions ) {
DefSwitchMacro( "3R" );
} else {
DefSwitchMacro( "3S" );
}
#endif
if( CompFlags.emit_names ) {
DefSwitchMacro( "EN" );
}
if( CompFlags.save_restore_segregs ) {
DefSwitchMacro( "R" );
}
if( CompFlags.zc_switch_used ) {
DefSwitchMacro( "ZC" );
}
if( CompFlags.use_unicode ) {
DefSwitchMacro( "ZK" );
}
if( CompFlags.sg_switch_used ) {
DefSwitchMacro( "SG" );
}
if( CompFlags.st_switch_used ) {
DefSwitchMacro( "ST" );
}
if( CompFlags.bm_switch_used ) {
PreDefineStringMacro( "_MT" );
DefSwitchMacro( "BM" );
}
if( CompFlags.bd_switch_used ) {
DefSwitchMacro( "BD" );
}
if( CompFlags.br_switch_used ) {
PreDefineStringMacro( "_DLL" );
DefSwitchMacro( "BR" );
}
if( CompFlags.bw_switch_used ) {
DefSwitchMacro( "BW" );
}
if( CompFlags.zm_switch_used ) {
DefSwitchMacro( "ZM" );
}
if( CompFlags.ep_switch_used ) {
DefSwitchMacro( "EP" );
}
if( CompFlags.ee_switch_used ) {
DefSwitchMacro( "EE" );
}
switch( CompInfo.dt_method_speced ) {
case DTM_DIRECT :
DefSwitchMacro( "XDT" );
DefSwitchMacro( "XD" );
break;
case DTM_DIRECT_SMALL :
DefSwitchMacro( "XDS" );
break;
case DTM_TABLE :
DefSwitchMacro( "XS" );
break;
case DTM_DIRECT_TABLE :
DefSwitchMacro( "XST" );
break;
case DTM_TABLE_SMALL :
DefSwitchMacro( "XSS" );
break;
DbgDefault( "macroDefs -- invalid exception switch" );
}
switch( GET_CPU( CpuSwitches ) ) {
case CPU_86:
DefSwitchMacro( "0" );
break;
case CPU_186:
DefSwitchMacro( "1" );
break;
case CPU_286:
DefSwitchMacro( "2" );
break;
case CPU_386:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?