示例#1
0
extern  void    PushInSameBlock( instruction *ins ) {
/***************************************************/

#if ( _TARGET & _TARG_IAPX86 )
    ins = ins;
#else
    while( ins->head.opcode != OP_BLOCK ) {
        ins = ins->head.next;
    }
    if( _BLOCK( ins ) != CurrBlock ) {
        CurrProc->targ.never_sp_frame = true;
    }
#endif
}
示例#2
0
static instruction *FindPreviousIns( instruction *curr )
/*******************************************************
    Return the instruction which would be executed immediately prior
    to the given instruction, ignoring block boundaries and other
    such trivia. Uses the MARKED flag to determine which, of all
    possible input sources, to select.
*/
{
    instruction *prev;
    block       *blk;
    block_edge  *edge;

    prev = curr->head.prev;
    if( prev->head.opcode == OP_BLOCK ) {
        blk = _BLOCK( prev );
        edge = blk->input_edges;
        while( edge != NULL ) {
            if( edge->source->class & BLOCK_MARKED ) break;
            edge = edge->next_source;
        }
        prev = edge->source->ins.hd.prev;
    }