cg_name CgAssignStateVar( // ASSIGN STATE-VAR VALUE SYMBOL blk, // - R/W Block SE* se, // - state entry target_offset_t offset ) // - offset of state variable { return CGLVAssign( CgSymbolPlusOffset( blk, offset ) , CgOffset( SeStateVar( se ) ) , CgTypeOffset() ); }
cg_name CgOffsetExpr( // MAKE OFFSET EXPRESSION cg_name expr, // - lhs expression target_offset_t offset, // - offset cg_type type ) // - resultant type { if( offset == 0 ) { expr = CGUnary( O_CONVERT, expr, type ); } else { expr = CGBinary( O_PLUS, expr, CgOffset( offset ), type ); } return expr; }
void CgCdArgDefine( // DEFINE CDOPT VALUE unsigned value ) // - cdopt value { cg_name expr; // - expression under construction cg_type type; // - expression type cdtor_entry* cd_entry; // - cdopt entry type = CgTypeOffset(); expr = CgOffset( value ); cd_entry = RingCarveAlloc( carver_cdtors, &ring_cdtors ); cd_entry->value = value; cd_entry->handle = CallStackTopHandle(); CgExprPush( expr, type ); }
void CgRtParamConstOffset( // SET UP PARAMETER: CONSTANT OFFSET RT_DEF *def, // - definition for call unsigned value ) // - parameter value { CgRtParam( CgOffset( value ), def, CgTypeOffset() ); }