Stmt Type
Represents a LowUIR statement.
Union cases
| Union case |
Description
|
Full Usage:
CJmp(Expr, Expr, Expr, HashConsingInfo)
Parameters:
Expr
Item2 : Expr
Item3 : Expr
Item4 : HashConsingInfo
|
This statement represents a conditional jump to an LMark. The first argument specifies a jump condition. If the condition is true, jump to the address specified by the second argument. Otherwise, jump to the address specified by the third argument.
|
|
External function call. This statement represents a uninterpreted function call. The argument expression is in a curried form.
|
|
Metadata representing the end of a machine instruction. It contains the length of the current instruction.
|
|
Metadata representing the start of a machine instruction. More specifically, it contains the length of the instruction. There must be a single IMark per a machine instruction.
|
Full Usage:
InterCJmp(Expr, Expr, Expr, HashConsingInfo)
Parameters:
Expr
Item2 : Expr
Item3 : Expr
Item4 : HashConsingInfo
|
This is a conditional jump instruction to another instruction. The first argument specifies a jump condition. If the condition is true, change the program counter to jump to the address specified by the second argument. Otherwise, jump to the address specified by the third argument.
|
Full Usage:
InterJmp(Expr, InterJmpKind, HashConsingInfo)
Parameters:
Expr
Item2 : InterJmpKind
Item3 : HashConsingInfo
|
This is an unconditional jump instruction to another instruction. This is an inter-instruction jump unlike Jmp statement. The first argument is the jump target address.
|
|
This statement represents a jump (unconditional) to an LMark. The first argument specifies the target address.
|
|
Metadata representing a label (as in an assembly language). LMark is only valid within a machine instruction.
|
Full Usage:
Put(Expr, Expr, HashConsingInfo)
Parameters:
Expr
Item2 : Expr
Item3 : HashConsingInfo
|
This statement puts a value into a register. The first argument is a destination operand, and the second argument is a source operand. The destination operand should have either a Var or a TempVar. Example: [Put(T_1:I32, Load(LE, T_2:I32))] loads a 32-bit value from the address T2, and store the value to the temporary register T1.
|
Full Usage:
SideEffect(SideEffect, HashConsingInfo)
Parameters:
SideEffect
Item2 : HashConsingInfo
|
This represents an instruction with side effects such as a system call.
|
Full Usage:
Store(Endian, Expr, Expr, HashConsingInfo)
Parameters:
Endian
Item2 : Expr
Item3 : Expr
Item4 : HashConsingInfo
|
This statement stores a value into a memory. The first argument represents the endianness, the second argument is a destination operand, and the third argument is a value to store. Example: Store(LE, T_1:I32, T_2:I32) stores a 32-bit value T_2 into the address T_1
|
Instance members
| Instance member |
Description
|
Full Usage:
this.IsCJmp
Returns: bool
|
|
Full Usage:
this.IsExternalCall
Returns: bool
|
|
Full Usage:
this.IsIEMark
Returns: bool
|
|
Full Usage:
this.IsISMark
Returns: bool
|
|
Full Usage:
this.IsInterCJmp
Returns: bool
|
|
Full Usage:
this.IsInterJmp
Returns: bool
|
|
Full Usage:
this.IsJmp
Returns: bool
|
|
Full Usage:
this.IsLMark
Returns: bool
|
|
Full Usage:
this.IsPut
Returns: bool
|
|
Full Usage:
this.IsSideEffect
Returns: bool
|
|
Full Usage:
this.IsStore
Returns: bool
|
|
B2R2