CLRX  1
An unofficial OpenCL extensions designed for Radeon GPUs
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | Static Public Member Functions | List of all members
CLRX::AsmExpression Class Reference

assembler expression class More...

#include <Assembler.h>

Inheritance diagram for CLRX::AsmExpression:
CLRX::NonCopyableAndNonMovable

Public Member Functions

 AsmExpression (const AsmSourcePos &pos, size_t symOccursNum, bool relativeSymOccurs, size_t opsNum, size_t opPosNum, size_t argsNum, bool baseExpr=false)
 constructor of expression (helper)
 
 AsmExpression (const AsmSourcePos &pos, size_t symOccursNum, bool relativeSymOccurs, size_t opsNum, const AsmExprOp *ops, size_t opPosNum, const LineCol *opPos, size_t argsNum, const AsmExprArg *args, bool baseExpr=false)
 constructor of expression (helper)
 
 ~AsmExpression ()
 destructor
 
bool isEmpty () const
 return true if expression is empty
 
AsmExpressioncreateForSnapshot (const AsmSourcePos *exprSourcePos) const
 helper to create symbol snapshot. Creates initial expression for symbol snapshot
 
void setTarget (AsmExprTarget _target)
 set target of expression
 
bool evaluate (Assembler &assembler, uint64_t &value, cxuint &sectionId) const
 try to evaluate expression More...
 
bool evaluate (Assembler &assembler, size_t opStart, size_t opEnd, uint64_t &value, cxuint &sectionId) const
 try to evaluate expression More...
 
const AsmExprTargetgetTarget () const
 get targer of expression
 
size_t getSymOccursNum () const
 get number of symbol occurrences in expression
 
size_t hasRelativeSymOccurs () const
 get number of symbol occurrences in expression
 
bool unrefSymOccursNum ()
 unreference symbol occurrences in expression (used internally)
 
void substituteOccurrence (AsmExprSymbolOccurrence occurrence, uint64_t value, cxuint sectionId=ASMSECT_ABS)
 substitute occurrence in expression by value
 
const Array< AsmExprOp > & getOps () const
 get operators list
 
const AsmExprArggetArgs () const
 get argument list
 
const AsmSourcePosgetSourcePos () const
 get source position
 
size_t toTop (size_t opIndex) const
 
- Public Member Functions inherited from CLRX::NonCopyableAndNonMovable
 NonCopyableAndNonMovable ()
 constructor
 
 NonCopyableAndNonMovable (const NonCopyableAndNonMovable &)=delete
 copy-constructor
 
 NonCopyableAndNonMovable (NonCopyableAndNonMovable &&)=delete
 move-constructor
 
NonCopyableAndNonMovableoperator= (const NonCopyableAndNonMovable &)=delete
 copy-assignment
 
NonCopyableAndNonMovableoperator= (NonCopyableAndNonMovable &&)=delete
 move-asignment
 

Static Public Member Functions

static AsmExpressionparse (Assembler &assembler, size_t &linePos, bool makeBase=false, bool dontResolveSymbolsLater=false)
 parse expression. By default, also gets values of symbol or creates them More...
 
static AsmExpressionparse (Assembler &assembler, const char *&linePtr, bool makeBase=false, bool dontResolveSymbolsLater=false)
 parse expression. By default, also gets values of symbol or creates them More...
 
static bool isArg (AsmExprOp op)
 return true if is argument op
 
static bool isUnaryOp (AsmExprOp op)
 return true if is unary op
 
static bool isBinaryOp (AsmExprOp op)
 return true if is binary op
 
static bool makeSymbolSnapshot (Assembler &assembler, const AsmSymbolEntry &symEntry, AsmSymbolEntry *&outSymEntry, const AsmSourcePos *parentExprSourcePos)
 make symbol snapshot (required to implement .eqv pseudo-op)
 

Detailed Description

assembler expression class

Member Function Documentation

bool CLRX::AsmExpression::evaluate ( Assembler assembler,
uint64_t &  value,
cxuint &  sectionId 
) const
inline

try to evaluate expression

Parameters
assemblerassembler instace
valueoutput value
sectionIdoutput section id
Returns
true if evaluated
bool CLRX::AsmExpression::evaluate ( Assembler assembler,
size_t  opStart,
size_t  opEnd,
uint64_t &  value,
cxuint &  sectionId 
) const

try to evaluate expression

Parameters
assemblerassembler instace
valueoutput value
opStartstart operand
opEndend operand
sectionIdoutput section id
Returns
true if evaluated
static AsmExpression* CLRX::AsmExpression::parse ( Assembler assembler,
size_t &  linePos,
bool  makeBase = false,
bool  dontResolveSymbolsLater = false 
)
static

parse expression. By default, also gets values of symbol or creates them

parse expresion from assembler's line string. Accepts empty expression.

Parameters
assemblerassembler
linePosposition in line and output position in line
makeBasedo not evaluate resolved symbols, put them to expression
dontResolveSymbolsLaterdo not resolve symbols later
Returns
expression pointer
static AsmExpression* CLRX::AsmExpression::parse ( Assembler assembler,
const char *&  linePtr,
bool  makeBase = false,
bool  dontResolveSymbolsLater = false 
)
static

parse expression. By default, also gets values of symbol or creates them

parse expresion from assembler's line string. Accepts empty expression.

Parameters
assemblerassembler
linePtrstring at position in line (returns output line pointer)
makeBasedo not evaluate resolved symbols, put them to expression
dontResolveSymbolsLaterdo not resolve symbols later
Returns
expression pointer

The documentation for this class was generated from the following file: