📄 ic.h
字号:
//------------------------------------------
, IC( IC_DBG_LINE, BIN ) // - set debugging line number
, IC( IC_DBG_SRCFILE, SRC ) // - set source-file for line
// Data Initialization Codes
//------------------------------------------
, IC( IC_INIT_BEG, SYM ) // - indicate begin of initialization
, IC( IC_INIT_DONE, NUL ) // - indicate end of initialization
, IC( IC_INIT_TEST, SYM ) // - start of init-test for function static
//| OE_COUNT
, IC( IC_INIT_REF_BEG, SYM ) // - start init of dtor-temp for ref.init
//| OE_COUNT
, IC( IC_INIT_REF_END, NUL ) // - complete init of dtor-temp for ref.init
, IC( IC_INIT_SYM_BEG, NUL ) // - start of init of symbol
//| OE_COUNT
, IC( IC_INIT_SYM_END, SYM ) // - end of init of symbol
, IC( IC_COMPCTOR_BEG, BIN ) // - start component ctor with dtorable temp.s
//| OE_COUNT
, IC( IC_COMPCTOR_END, BIN ) // - end component ctor with dtorable temp.s
, IC( IC_DTOBJ_PUSH, TYP ) // - dtorable object: start initialization
//| OE_COUNT
, IC( IC_DTOBJ_POP, NUL ) // - dtorable object: complete initialization
, IC( IC_DTOBJ_SYM, SYM ) // - dtorable object: symbol for initialization
, IC( IC_DTOBJ_OFF, BIN ) // - dtorable object: offset for initialization
, IC( IC_DTARRAY_INDEX, BIN ) // - dtorable component: array element initialized
// Handling of inline arguments
//------------------------------------------
, IC( IC_RARG_FETCH, SYM ) // - fetch reference argument
//| OE_COUNT
, IC( IC_RARG_PARM, SYM ) // - reference arg. is an argument
, IC( IC_RARG_SYM, SYM ) // - reference arg. is a symbol
, IC( IC_RARG_FUNC, BIN ) // - corresponding symbol in function scope
, IC( IC_RARG_OFFSET, BIN ) // - set offset from a reference argument
// Exception Handling
//------------------------------------------
, IC( IC_TRY, SYM ) // - try block: start
//| OE_COUNT
, IC( IC_CTOR_END, NUL ) // - end of object CTOR
//| OE_COUNT
, IC( IC_CATCH_VAR, SYM ) // - set variable for next catch
//| OE_COUNT
, IC( IC_CATCH, TYP ) // - catch block
//| OE_COUNT
, IC( IC_EXCEPT_SPEC, TYP ) // - function exception specification (type)
//| OE_COUNT
, IC( IC_EXCEPT_FUN, NUL ) // - completion of above
//| OE_COUNT
, IC( IC_THROW_RO_BLK, TYP ) // - throw's R/O block
, IC( IC_AFTER_ABORTS, NUL ) // - reset after aborts
//| OE_COUNT
, IC( IC_AFTER_THROW, NUL ) // - reset after C++ throw
//| OE_COUNT
, IC( IC_TRY_DONE, SYM ) // - completion of try block
//| OE_COUNT
, IC( IC_SETJMP_DTOR, NUL ) // - destruction for setjmp != 0 return
//| OE_COUNT
, IC( IC_SET_LABEL_SV, NUL ) // - set state at label
, IC( IC_TRY_CATCH_DONE, SCP ) // - try/catch completed, w/o dtoring
//| OE_COUNT
// Based Operations
//------------------------------------------
, IC( IC_SEGOP_SEG, BIN ) // - set segment #
, IC( IC_SEGNAME, SYM ) // - __segname( ... ) ==> segment
// Operations for new and new[]
//-----------------------------
, IC( IC_NEW_ALLOC, NUL ) // - signal new expression (to be duplicated)
, IC( IC_NEW_CTORED, TYP ) // - signal completion of new ctor
// Operations for virtual bases
//-----------------------------
, IC( IC_VB_EXACT, BIN ) // - virtual base: type
, IC( IC_VB_DELTA, BIN ) // - virtual base: virtual delta
, IC( IC_VB_OFFSET, BIN ) // - virtual base: virtual offset
, IC( IC_VB_INDEX, BIN ) // - virtual base: exact index
, IC( IC_VB_FETCH, SYM ) // - compute virtual base from argument
//| OE_COUNT
, IC( IC_RARG_VBOFFSET, BIN ) // - set IBP offset for IC_VB_FETCH parm.
// Operations for virtual functions
//---------------------------------
, IC( IC_VF_OFFSET, BIN ) // - virtual fun: offset to vft
, IC( IC_VF_INDEX, BIN ) // - virtual fun: index in vft
, IC( IC_VF_THIS, SYM ) // - virtual fun: this arg.
, IC( IC_SETUP_VFUN, SYM ) // - virtual fun: setup for call
, IC( IC_CALL_EXEC_VFUN, NUL ) // - execute call (virtual function)
, IC( IC_VF_THIS_ADJ, NUL ) // - do "this" adjustment for virt call
, IC( IC_VF_CODED, NUL ) // - virtual call has been coded
, IC( IC_VFUN_PTR, NUL ) // - specify vfun "this"
// Operations on extra CTOR/DTOR arg
//------------------------------------------
, IC( IC_CDARG_TEST_ON, BIN ) // - code for CDARG test, branch if on
, IC( IC_CDARG_TEST_OFF, BIN ) // - code for CDARG test, branch if off
, IC( IC_CDARG_LABEL, NUL ) // - emit label for CDARG test
, IC( IC_CDARG_VAL, BIN ) // - leaf: CDTOR arg. value
//| OE_COUNT
, IC( IC_CDARG_FETCH, BIN ) // - specify CDTOR arg. value
//| OE_COUNT
// Decoration for scope-call optimizations
//----------------------------------------
, IC( IC_SCOPE_CALL_FUN, SYM ) // - function for scope-call optimization
, IC( IC_SCOPE_CALL_GEN, NUL ) // - indicate don't optimize
, IC( IC_SCOPE_CALL_TDTOR, SYM )// - temporary dtor for scope-call optimization
, IC( IC_SCOPE_CALL_BDTOR, SYM )// - scope dtor for scope-call optimization
, IC( IC_SCOPE_THROW, NUL ) // - indicate a THROW or equivalent
, IC( IC_SCOPE_CALL_CDTOR, SYM )// - component dtor for scope-call optimization
, IC( IC_STMT_SCOPE_END, NUL ) // - signal end of statement scope
// Operations for delete and delete[]
//-----------------------------------
, IC( IC_DLT_DTOR_ARR, SYM ) // - start dtoring array to be deleted
, IC( IC_DLT_DTOR_ELM, SYM ) // - start dtoring element to be deleted
, IC( IC_DLT_DTOR_SIZE, BIN) // - size of dtoring element in delete area
, IC( IC_DLT_DTORED, NUL ) // - completed dtoring of object be deleted
// IC parm stack support (fixed size depth)
//------------------------------------------
, IC( IC_PARM_BIN, BIN ) // push an integer on the IC code parm stack
, IC( IC_PARM_SYM, SYM ) // push a SYMBOL on the IC code parm stack
, IC( IC_PARM_TYP, TYP ) // push a TYPE on the IC code parm stack
, IC( IC_PARM_SCP, SCP ) // push a SCOPE on the IC code parm stack
, IC( IC_PARM_XXX, NUL ) // padding
#if defined(_IN_ICMASK) || !defined(NDEBUG)
// Internal Debugging
//------------------------------------------
, IC( IC_TRACE_BEG, NUL ) // - start IC instruction trace
, IC( IC_TRACE_END, NUL ) // - stop IC instruction trace
#endif
// virtual function thunk adjustments
//------------------------------------------
, IC( IC_VTHUNK_MDELTA, BIN ) // - this -= delta;
//| OE_COUNT
, IC( IC_VTHUNK_PDELTA, BIN ) // - this += delta;
//| OE_COUNT
, IC( IC_VTHUNK_CDISP, NUL ) // - this -= *((unsigned*)this-sizeof(unsigned))
//| OE_COUNT
, IC( IC_VTHUNK_VBASE, BIN ) // - this += (*this)[i]
//| OE_COUNT
#if defined(_IN_ICMASK) || _CPU == _AXP
// ALPHA-SPECIFIC CODES
//------------------------------------------
, IC( IC_ALLOCA, BIN ) // - support for alloca
//| OE_COUNT
#endif
// return optimizations
//------------------------------------------
, IC( IC_RETNOPT_BEG,NUL ) // - return sequence: start
, IC( IC_RETNOPT_END,NUL ) // - end marker
, IC( IC_RETNOPT_VAR,SYM ) // - sequence for var, not optimized away
// RTTI
//------------------------------------------
, IC( IC_RTTI_REF, SYM ) // - reference RTTI info sym
// PCH opcodes
//------------------------------------------
, IC( IC_PCH_PAD, NUL ) // - used to pad out CGFILE PCH
// BROWSE-INFO OPCODES
//------------------------------------------
, IC( IC_BR_SRC_BEG, BIN ) // - start of browse info for a source
, IC( IC_BR_SRC_END, NUL ) // - end of browse info for a source
, IC( IC_BR_INC_SRC, BIN ) // - source name for inclusion
, IC( IC_BR_DCL_CLASS, TYP ) // - declare: class
, IC( IC_BR_DCL_MACRO, BIN ) // - declare: macro
, IC( IC_BR_DCL_TDEF, SYM ) // - declare: typedef
, IC( IC_BR_DCL_VAR, SYM ) // - declare: variable
, IC( IC_BR_DCL_FUN, SYM ) // - declare: function
, IC( IC_BR_REF_LOC, BIN ) // - reference: function
, IC( IC_BR_REF_FUN, SYM ) // - reference: function
, IC( IC_BR_REF_CLM, SYM ) // - reference: class data member
, IC( IC_BR_REF_VAR, SYM ) // - reference: variable
, IC( IC_BR_REF_TYPE, TYP ) // - reference: type
, IC( IC_BR_REF_EVAL, SYM ) // - reference: enumeration value
, IC( IC_BR_REF_EVAR, SYM ) // - reference: enumeration variable
, IC( IC_BR_REF_MACRO, BIN ) // - reference: macro value
, IC( IC_BR_REF_UMACRO, BIN ) // - reference: undefined macro
, IC( IC_BR_REFTO_FILE, SRC ) // - reference to file
, IC( IC_BR_REFTO_LINE, BIN ) // - reference to line
, IC( IC_BR_REFTO_COL, BIN ) // - reference to column
, IC( IC_BR_REFTO_LINECOL, BIN) // - reference to line(3 bytes) col(1 byte)
, IC( IC_BR_SCOPE_OPN, SCP ) // - open scope
, IC( IC_BR_SCOPE_CLS, SCP ) // - close scope
, IC( IC_BR_NO_OP, NUL ) // - no operation
// Add new opcodes here to avoid global re-compile
//------------------------------------------
, IC( IC_TYPEID_REF, SYM ) // - typeid lvalue referenced
, IC( IC_BR_PCH, BIN ) // - PCH file reference
// Padding for patching
//------------------------------------------
, IC( IC_INIT_AUTO, SYM ) // - copy static init block to this auto symbol
, IC( IC_CALL_PARM_FLT, NUL ) // - define parameter for call (set float_used)
, IC( IC_DTOR_KIND, BIN ) // - kind of dtor following a ctor call
//| OE_COUNT
//, IC( IC_EXTRA1, NUL )
//, IC( IC_EXTRA2, NUL )
//, IC( IC_EXTRA3, NUL )
, IC( IC_EXTRA4, NUL )
, IC( IC_EXTRA5, NUL )
, IC( IC_EXTRA6, NUL )
, IC( IC_EXTRA7, NUL )
, IC( IC_EXTRA8, NUL )
, IC( IC_EXTRA9, NUL )
// End of Codes
//------------------------------------------
, IC( IC_END, NUL ) // - can be used as terminator
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -