extern void FEPtrBase( cg_sym_handle sym ) /*****************************************/ { segment_id seg; TellOptimizerByPassed(); seg = FESegID( sym ); OutSegReloc( FEBack( sym )->lbl, seg ); ObjBytes( "\0\0", 2 ); TellByPassOver(); }
fe_seg_id CgBackGenLabel( // GENERATE A LABEL SYMBOL sym ) // - symbol defining label { segment_id old_id; // - old segment segment_id seg_id; // - new segment seg_id = FESegID( sym ); old_id = BESetSeg( seg_id ); DGLabel( FEBack( sym ) ); return old_id; }
fe_seg_id CgBackGenLabelInternal(// GENERATE A LABEL FOR INTERNAL STRUCTURE SYMBOL sym ) // - symbol defining label { segment_id old_id; // - old segment segment_id seg_id; // - new segment seg_id = FESegID( sym ); old_id = BESetSeg( seg_id ); DgAlignInternal(); DGLabel( FEBack( sym ) ); return old_id; }
void DgSymbolDefInit( // DATA GENERATE SYMBOL (DEFAULT DATA) SYMBOL sym ) // - the symbol { segment_id old_seg; // - old segment segment_id seg_id; // - symbol segment target_size_t size; // - size of symbol seg_id = FESegID( sym ); old_seg = BESetSeg( seg_id ); DgAlignSegment( seg_id, SegmentAlignment( sym->sym_type ) ); CgBackGenLabel( sym ); size = CgMemorySize( sym->sym_type ); if( sym->segid == SEG_BSS ) { DgUninitBytes( size ); } else { DgInitBytes( size, 0 ); } BESetSeg( old_seg ); }
segment_id DgSetSegSym( SYMBOL sym ) { return( BESetSeg( FESegID( sym ) ) ); }