Expr Type
Represents a LowUIR expression.
Union cases
| Union case |
Description
|
Full Usage:
BinOp(BinOpType, RegType, Expr, Expr, HashConsingInfo)
Parameters:
BinOpType
Item2 : RegType
Item3 : Expr
Item4 : Expr
Item5 : HashConsingInfo
|
Binary operation such as add, sub, etc. The second argument is a result type after applying BinOp.
|
Full Usage:
Cast(CastKind, RegType, Expr, HashConsingInfo)
Parameters:
CastKind
Item2 : RegType
Item3 : Expr
Item4 : HashConsingInfo
|
Type casting expression. The first argument is a casting type, and the second argument is a result type.
|
Full Usage:
ExprList(Expr list, HashConsingInfo)
Parameters:
Expr list
Item2 : HashConsingInfo
|
List of expressions. We use this to represent function arguments.
|
Full Usage:
Extract(Expr, RegType, startPos, HashConsingInfo)
Parameters:
Expr
Item2 : RegType
startPos : int
Item4 : HashConsingInfo
|
Extraction expression. The first argument is target expression, and the second argument is the number of bits for extraction, and the third is the start position.
|
|
Name of uninterpreted function.
|
Full Usage:
Ite(Expr, Expr, Expr, HashConsingInfo)
Parameters:
Expr
Item2 : Expr
Item3 : Expr
Item4 : HashConsingInfo
|
If-then-else expression. The first expression is a condition, and the second and the third are true and false expression respectively.
|
|
Jump destination of a Jmp or CJmp statement.
|
Full Usage:
Load(Endian, RegType, Expr, HashConsingInfo)
Parameters:
Endian
Item2 : RegType
Item3 : Expr
Item4 : HashConsingInfo
|
Memory loading such as LE:[T_1:I32]
|
|
A number. For example, (0x42:I32) is a 32-bit number 0x42
|
Full Usage:
PCVar(RegType, string, HashConsingInfo)
Parameters:
RegType
Item2 : string
Item3 : HashConsingInfo
|
A variable that represents a Program Counter (PC) of a CPU.
|
Full Usage:
RelOp(RelOpType, Expr, Expr, HashConsingInfo)
Parameters:
RelOpType
Item2 : Expr
Item3 : Expr
Item4 : HashConsingInfo
|
Relative operation such as eq, lt, etc.
|
Full Usage:
TempVar(RegType, int, HashConsingInfo)
Parameters:
RegType
Item2 : int
Item3 : HashConsingInfo
|
A temporary variable represents an internal (imaginary) register. Names of temporary variables should always be affixed by an underscore (_) and a number. This is to make sure that any temporary variable is unique in a CFG. For example, a temporary variable T can be represented as (T_2:I32), where 2 is a unique number assigned to the variable.
|
Full Usage:
UnOp(UnOpType, Expr, HashConsingInfo)
Parameters:
UnOpType
Item2 : Expr
Item3 : HashConsingInfo
|
Unary operation such as negation.
|
Full Usage:
Undefined(RegType, string, HashConsingInfo)
Parameters:
RegType
Item2 : string
Item3 : HashConsingInfo
|
Undefined expression. This is rarely used, and it is a fatal error when we encounter this expression while evaluating a program. Some CPU manuals explicitly say that a register value is undefined after a certain operation. We model such cases with this expression.
|
Full Usage:
Var(RegType, RegisterID, string, HashConsingInfo)
Parameters:
RegType
Item2 : RegisterID
Item3 : string
Item4 : HashConsingInfo
|
A variable that represents a register of a CPU. Var (t, r, n) indicates a variable of type (t) that has RegisterID r and name (n). For example, (EAX:I32) represents the EAX register (of type I32). Note that name (n) is additional information that doesn't be used internally.
|
Instance members
| Instance member |
Description
|
Full Usage:
this.IsBinOp
Returns: bool
|
|
Full Usage:
this.IsCast
Returns: bool
|
|
Full Usage:
this.IsExprList
Returns: bool
|
|
Full Usage:
this.IsExtract
Returns: bool
|
|
Full Usage:
this.IsFuncName
Returns: bool
|
|
Full Usage:
this.IsIte
Returns: bool
|
|
Full Usage:
this.IsJmpDest
Returns: bool
|
|
Full Usage:
this.IsLoad
Returns: bool
|
|
Full Usage:
this.IsNum
Returns: bool
|
|
Full Usage:
this.IsPCVar
Returns: bool
|
|
Full Usage:
this.IsRelOp
Returns: bool
|
|
Full Usage:
this.IsTempVar
Returns: bool
|
|
Full Usage:
this.IsUnOp
Returns: bool
|
|
Full Usage:
this.IsUndefined
Returns: bool
|
|
Full Usage:
this.IsVar
Returns: bool
|
|
B2R2