Beispiel #1
0
static void brinfIcPtr          // WRITE IC, PTR OPERAND
    ( CGINTEROP opcode          // - opcode
    , void const *ptr )         // - operand
{
    if( canWriteIc() ) {
        BrinfWriteIns( opcode, ptr );
    }
}
Beispiel #2
0
static void writeIns            // WRITE AN INSTRUCTION
    ( CGINTEROP opcode          // - opcode
    , void const * parm         // - parm for instruction
    , TOKEN_LOCN const * locn ) // - location for instruction
{
    TOKEN_LOCN* curr_locn;      // - location
    SRCDEP const* sd;           // - dependency for open

    switch( opcode ) {
      case IC_BR_SRC_BEG :
        curr_locn = VstkPush( &open_src );
        TokenLocnAssign( *curr_locn, cursor );
        sd = parm;
        cursor.src_file = BrinfDepSrcfile( sd );
        cursor.line = 0;
        cursor.column = 0;
        BrinfWriteIns( opcode, parm );
        break;
      case IC_BR_SRC_END :
        locn = VstkPop( &open_src );
        if( NULL == locn ) {
            cursor.src_file = NULL;
        } else {
            TokenLocnAssign( cursor, *locn );
        }
        BrinfWriteIns( opcode, parm );
        break;
      case IC_BR_REF_MACRO :
        TokenLocnAssign( cursor, *locn );
        BrinfIcReference( opcode, parm, locn );
        break;
      default :
        TokenLocnAssign( cursor, *locn );
        BrinfWriteIns( opcode, parm );
        break;
    }
}