示例#1
0
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();
}
示例#2
0
extern  void    DataLong( unsigned_32 val )
/*****************************************/
{
    TellOptimizerByPassed();
    ObjBytes( &val, sizeof( val ) );
    TellByPassOver();
}
示例#3
0
extern  void    DataBytes( unsigned_32 len, const void *src ) {
/*************************************************************/

    TellOptimizerByPassed();
    ObjBytes( src, len );
    TellByPassOver();
}
示例#4
0
void EncodeRet( oc_ret *oc ) {

    axp_ins             encoding;

    oc = oc;
    encoding = 0x6bfa8001;      // this is a little cheesy - ret ra(r26)
    ObjBytes( &encoding, sizeof( encoding ) );
}
示例#5
0
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();
}
示例#6
0
extern  void    BackPtrBase( back_handle bck, segment_id seg )
/************************************************************/
{
    TellOptimizerByPassed();
    OutSegReloc( bck->lbl, seg );
    ObjBytes( "\0\0", 2 );
    TellByPassOver();
}
示例#7
0
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();
}
示例#8
0
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();
}
示例#9
0
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();
}
示例#10
0
extern  void    FEPtrBase( cg_sym_handle sym )
/*****************************************/
{
    segment_id          seg;

    TellOptimizerByPassed();
    seg = FESegID( sym );
    OutSegReloc( FEBack( sym )->lbl, seg );
    ObjBytes( "\0\0", 2 );
    TellByPassOver();
}
示例#11
0
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 ) );
}