extern void FEPtrBaseOffset( cg_sym_handle sym, offset plus ) { /***************************************************************/ back_handle bck; // segment_id seg; TellOptimizerByPassed(); bck = FEBack( sym ); // seg = FESegID( sym ); OutReloc( bck->lbl, OWL_RELOC_SECTION_INDEX, 0 ); ObjBytes( &plus, 4 ); // OutSegReloc( bck->lbl, seg ); OutReloc( bck->lbl, OWL_RELOC_SECTION_OFFSET, 0 ); ObjBytes( "\0\0", 2 ); TellByPassOver(); }
extern void DataLong( unsigned_32 val ) /*****************************************/ { TellOptimizerByPassed(); ObjBytes( &val, sizeof( val ) ); TellByPassOver(); }
extern void DataBytes( unsigned_32 len, const void *src ) { /*************************************************************/ TellOptimizerByPassed(); ObjBytes( src, len ); TellByPassOver(); }
void EncodeRet( oc_ret *oc ) { axp_ins encoding; oc = oc; encoding = 0x6bfa8001; // this is a little cheesy - ret ra(r26) ObjBytes( &encoding, sizeof( encoding ) ); }
extern void IterBytes( offset len, byte pat ) /***********************************************/ { TellOptimizerByPassed(); if( len > MAX_HACK_LEN ) { byte *buff; buff = CGAlloc( len ); memset( buff, pat, len ); ObjBytes( buff, len ); CGFree( buff ); } else { memset( Buffer, pat, len ); ObjBytes( Buffer, len ); } TellByPassOver(); }
extern void BackPtrBase( back_handle bck, segment_id seg ) /************************************************************/ { TellOptimizerByPassed(); OutSegReloc( bck->lbl, seg ); ObjBytes( "\0\0", 2 ); TellByPassOver(); }
extern void BackBigOffset( back_handle bck, segment_id seg, offset plus ) /***************************************************************************/ { seg = seg; TellOptimizerByPassed(); OutReloc( bck->lbl, OWL_RELOC_WORD, 0 ); ObjBytes( &plus, 4 ); TellByPassOver(); }
extern void FEPtr( cg_sym_handle sym, type_def *tipe, offset plus ) { /*******************************************************************/ tipe = tipe; assert( tipe->length == 4 ); TellOptimizerByPassed(); OutReloc( FEBack( sym )->lbl, OWL_RELOC_WORD, 0 ); ObjBytes( &plus, 4 ); TellByPassOver(); }
extern void BackPtr( back_handle bck, segment_id seg, offset plus, type_def *tipe ) /*************************************************************************************/ { seg = seg; tipe = tipe; assert( tipe->length == 4 ); TellOptimizerByPassed(); OutReloc( bck->lbl, OWL_RELOC_WORD, 0 ); ObjBytes( &plus, 4 ); TellByPassOver(); }
extern void FEPtrBase( cg_sym_handle sym ) /*****************************************/ { segment_id seg; TellOptimizerByPassed(); seg = FESegID( sym ); OutSegReloc( FEBack( sym )->lbl, seg ); ObjBytes( "\0\0", 2 ); TellByPassOver(); }
static void doBranch( axp_ins opcode, pointer lbl, uint reg ) { opcode = _Opcode( opcode ) | _A( reg ); OutReloc( lbl, OWL_RELOC_BRANCH_REL, 0 ); ObjBytes( &opcode, sizeof( opcode ) ); }