Header menu logo B2R2

AST Module

Provides a set of functions for constructing LowUIR expressions and statements. Any LowUIR AST construction must be done through the functions in this module.

Nested modules

Modules Description

InfixOp

Provides infix operators for LowUIR expressions. Each infix operator has a corresponding function in the AST module.

Functions and values

Function or value Description

AST.(mod) e1 e2

Full Usage: AST.(mod) e1 e2

Parameters:
Returns: Expr

Unsigned modulus.

e1 : Expr
e2 : Expr
Returns: Expr

AST.``and`` e1 e2

Full Usage: AST.``and`` e1 e2

Parameters:
Returns: Expr

Bitwise AND.

e1 : Expr
e2 : Expr
Returns: Expr

AST.``not`` e

Full Usage: AST.``not`` e

Parameters:
Returns: Expr

Logical not.

e : Expr
Returns: Expr

AST.``or`` e1 e2

Full Usage: AST.``or`` e1 e2

Parameters:
Returns: Expr

Bitwise OR.

e1 : Expr
e2 : Expr
Returns: Expr

AST.add e1 e2

Full Usage: AST.add e1 e2

Parameters:
Returns: Expr

Add two expressions.

e1 : Expr
e2 : Expr
Returns: Expr

AST.app name args retType

Full Usage: AST.app name args retType

Parameters:
Returns: Expr

Construct a function application.

name : string
args : Expr list
retType : RegType
Returns: Expr

AST.assign dst src

Full Usage: AST.assign dst src

Parameters:
Returns: Stmt

An assignment statement.

dst : Expr
src : Expr
Returns: Stmt

AST.b0

Full Usage: AST.b0

Returns: Expr

Num expression for a one-bit number zero.

Returns: Expr

AST.b1

Full Usage: AST.b1

Returns: Expr

Num expression for a one-bit number one.

Returns: Expr

AST.binop op e1 e2

Full Usage: AST.binop op e1 e2

Parameters:
Returns: Expr

Construct a binary operator (BinOp).

op : BinOpType
e1 : Expr
e2 : Expr
Returns: Expr

AST.cast kind rt e

Full Usage: AST.cast kind rt e

Parameters:
Returns: Expr

Construct a cast expression (Cast).

kind : CastKind
rt : RegType
e : Expr
Returns: Expr

AST.cjmp cond dst1 dst2

Full Usage: AST.cjmp cond dst1 dst2

Parameters:
Returns: Stmt

A CJmp statement.

cond : Expr
dst1 : Expr
dst2 : Expr
Returns: Stmt

AST.concat e1 e2

Full Usage: AST.concat e1 e2

Parameters:
Returns: Expr

Concatenation.

e1 : Expr
e2 : Expr
Returns: Expr

AST.div e1 e2

Full Usage: AST.div e1 e2

Parameters:
Returns: Expr

Unsigned division.

e1 : Expr
e2 : Expr
Returns: Expr

AST.eq e1 e2

Full Usage: AST.eq e1 e2

Parameters:
Returns: Expr

Equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.exprList lst

Full Usage: AST.exprList lst

Parameters:
Returns: Expr

Expression list.

lst : Expr list
Returns: Expr

AST.extCall appExpr

Full Usage: AST.extCall appExpr

Parameters:
Returns: Stmt

External call.

appExpr : Expr
Returns: Stmt

AST.extract expr rt pos

Full Usage: AST.extract expr rt pos

Parameters:
Returns: Expr

Extract bits of the given size (RegType) at the given position from the given expression.

expr : Expr
rt : RegType
pos : int
Returns: Expr

AST.fadd e1 e2

Full Usage: AST.fadd e1 e2

Parameters:
Returns: Expr

Floating point add two expressions.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fatan e

Full Usage: AST.fatan e

Parameters:
Returns: Expr

Floating point arc tangent.

e : Expr
Returns: Expr

AST.fcos e

Full Usage: AST.fcos e

Parameters:
Returns: Expr

Floating point cosine.

e : Expr
Returns: Expr

AST.fdiv e1 e2

Full Usage: AST.fdiv e1 e2

Parameters:
Returns: Expr

Floating point division.

e1 : Expr
e2 : Expr
Returns: Expr

AST.feq e1 e2

Full Usage: AST.feq e1 e2

Parameters:
Returns: Expr

Floating point equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fge e1 e2

Full Usage: AST.fge e1 e2

Parameters:
Returns: Expr

Floating point greater than or equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fgt e1 e2

Full Usage: AST.fgt e1 e2

Parameters:
Returns: Expr

Floating point greater than.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fle e1 e2

Full Usage: AST.fle e1 e2

Parameters:
Returns: Expr

Floating point less than or equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.flog e1 e2

Full Usage: AST.flog e1 e2

Parameters:
Returns: Expr

Floating point logarithm.

e1 : Expr
e2 : Expr
Returns: Expr

AST.flt e1 e2

Full Usage: AST.flt e1 e2

Parameters:
Returns: Expr

Floating point less than.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fmul e1 e2

Full Usage: AST.fmul e1 e2

Parameters:
Returns: Expr

Floating point multiplication.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fpow e1 e2

Full Usage: AST.fpow e1 e2

Parameters:
Returns: Expr

Floating point power.

e1 : Expr
e2 : Expr
Returns: Expr

AST.fsin e

Full Usage: AST.fsin e

Parameters:
Returns: Expr

Floating point sine.

e : Expr
Returns: Expr

AST.fsqrt e

Full Usage: AST.fsqrt e

Parameters:
Returns: Expr

Floating point square root.

e : Expr
Returns: Expr

AST.fsub e1 e2

Full Usage: AST.fsub e1 e2

Parameters:
Returns: Expr

Floating point subtract two expressions.

e1 : Expr
e2 : Expr
Returns: Expr

AST.ftan e

Full Usage: AST.ftan e

Parameters:
Returns: Expr

Floating point tangent.

e : Expr
Returns: Expr

AST.funcName name

Full Usage: AST.funcName name

Parameters:
    name : string

Returns: Expr

Function name.

name : string
Returns: Expr

AST.ge e1 e2

Full Usage: AST.ge e1 e2

Parameters:
Returns: Expr

Unsigned greater than or equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.gt e1 e2

Full Usage: AST.gt e1 e2

Parameters:
Returns: Expr

Unsigned greater than.

e1 : Expr
e2 : Expr
Returns: Expr

AST.iemark nBytes

Full Usage: AST.iemark nBytes

Parameters:
    nBytes : uint32

Returns: Stmt

An IEMark statement.

nBytes : uint32
Returns: Stmt

AST.intercjmp cond d1 d2

Full Usage: AST.intercjmp cond d1 d2

Parameters:
Returns: Stmt

A InterCJmp statement.

cond : Expr
d1 : Expr
d2 : Expr
Returns: Stmt

AST.interjmp dst kind

Full Usage: AST.interjmp dst kind

Parameters:
Returns: Stmt

An InterJmp statement.

dst : Expr
kind : InterJmpKind
Returns: Stmt

AST.ismark nBytes

Full Usage: AST.ismark nBytes

Parameters:
    nBytes : uint32

Returns: Stmt

An ISMark statement.

nBytes : uint32
Returns: Stmt

AST.ite cond e1 e2

Full Usage: AST.ite cond e1 e2

Parameters:
Returns: Expr

Construct an ITE (if-then-else) expression (Ite).

cond : Expr
e1 : Expr
e2 : Expr
Returns: Expr

AST.jmp target

Full Usage: AST.jmp target

Parameters:
Returns: Stmt

A Jmp statement.

target : Expr
Returns: Stmt

AST.jmpDest symb

Full Usage: AST.jmpDest symb

Parameters:
Returns: Expr

Construct a jump target (JmpDest).

symb : Label
Returns: Expr

AST.label name id addr

Full Usage: AST.label name id addr

Parameters:
    name : string
    id : int
    addr : Addr

Returns: Label
Modifiers: inline

Construct a symbol (for a label) from a string and a IDCounter.

name : string
id : int
addr : Addr
Returns: Label

AST.le e1 e2

Full Usage: AST.le e1 e2

Parameters:
Returns: Expr

Unsigned less than or equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.lmark label

Full Usage: AST.lmark label

Parameters:
Returns: Stmt

An LMark statement.

label : Label
Returns: Stmt

AST.load endian rt addr

Full Usage: AST.load endian rt addr

Parameters:
Returns: Expr

Construct a load expression (Load).

endian : Endian
rt : RegType
addr : Expr
Returns: Expr

AST.loadBE t expr

Full Usage: AST.loadBE t expr

Parameters:
Returns: Expr

Construct a load expression in big-endian.

t : RegType
expr : Expr
Returns: Expr

AST.loadLE t expr

Full Usage: AST.loadLE t expr

Parameters:
Returns: Expr

Construct a load expression in little-endian.

t : RegType
expr : Expr
Returns: Expr

AST.lt e1 e2

Full Usage: AST.lt e1 e2

Parameters:
Returns: Expr

Unsigned less than.

e1 : Expr
e2 : Expr
Returns: Expr

AST.mul e1 e2

Full Usage: AST.mul e1 e2

Parameters:
Returns: Expr

Multiply two expressions.

e1 : Expr
e2 : Expr
Returns: Expr

AST.neg e

Full Usage: AST.neg e

Parameters:
Returns: Expr

Negation (Two's complement).

e : Expr
Returns: Expr

AST.neq e1 e2

Full Usage: AST.neq e1 e2

Parameters:
Returns: Expr

Not equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.num bv

Full Usage: AST.num bv

Parameters:
Returns: Expr

Construct a number (Num).

bv : BitVector
Returns: Expr

AST.num0 rt

Full Usage: AST.num0 rt

Parameters:
Returns: Expr

Construct a (Num 0) of size t.

rt : int<MeasureProduct<rt, MeasureOne>>
Returns: Expr

AST.num1 rt

Full Usage: AST.num1 rt

Parameters:
Returns: Expr

Construct a (Num 1) of size t.

rt : int<MeasureProduct<rt, MeasureOne>>
Returns: Expr

AST.pcvar t name

Full Usage: AST.pcvar t name

Parameters:
Returns: Expr

Construct a pc variable (PCVar).

t : RegType
name : string
Returns: Expr

AST.put dst src

Full Usage: AST.put dst src

Parameters:
Returns: Stmt

A Put statement.

dst : Expr
src : Expr
Returns: Stmt

AST.relop op e1 e2

Full Usage: AST.relop op e1 e2

Parameters:
Returns: Expr

Construct a relative operator (RelOp).

op : RelOpType
e1 : Expr
e2 : Expr
Returns: Expr

AST.revConcat arr

Full Usage: AST.revConcat arr

Parameters:
Returns: Expr

Concatenate the given arrays in reverse order. For example, if the input is [| Num 0; Num 1; Num 2; Num 3 |] then the output is Concat (Concat (Num 3, Num 2), Concat (Num 1, Num 0)).

arr : Expr[]
Returns: Expr

AST.sar e1 e2

Full Usage: AST.sar e1 e2

Parameters:
Returns: Expr

Shift arithmetic right.

e1 : Expr
e2 : Expr
Returns: Expr

AST.sdiv e1 e2

Full Usage: AST.sdiv e1 e2

Parameters:
Returns: Expr

Signed division.

e1 : Expr
e2 : Expr
Returns: Expr

AST.sext addrSize expr

Full Usage: AST.sext addrSize expr

Parameters:
Returns: Expr

Sign-extend an expression.

addrSize : RegType
expr : Expr
Returns: Expr

AST.sge e1 e2

Full Usage: AST.sge e1 e2

Parameters:
Returns: Expr

Signed greater than or equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.sgt e1 e2

Full Usage: AST.sgt e1 e2

Parameters:
Returns: Expr

Signed greater than.

e1 : Expr
e2 : Expr
Returns: Expr

AST.shl e1 e2

Full Usage: AST.shl e1 e2

Parameters:
Returns: Expr

Shift logical left.

e1 : Expr
e2 : Expr
Returns: Expr

AST.shr e1 e2

Full Usage: AST.shr e1 e2

Parameters:
Returns: Expr

Shift logical right.

e1 : Expr
e2 : Expr
Returns: Expr

AST.sideEffect eff

Full Usage: AST.sideEffect eff

Parameters:
Returns: Stmt

A SideEffect statement.

eff : SideEffect
Returns: Stmt

AST.sle e1 e2

Full Usage: AST.sle e1 e2

Parameters:
Returns: Expr

Signed less than or equal.

e1 : Expr
e2 : Expr
Returns: Expr

AST.slt e1 e2

Full Usage: AST.slt e1 e2

Parameters:
Returns: Expr

Signed less than.

e1 : Expr
e2 : Expr
Returns: Expr

AST.smod e1 e2

Full Usage: AST.smod e1 e2

Parameters:
Returns: Expr

Signed modulus.

e1 : Expr
e2 : Expr
Returns: Expr

AST.store endian addr v

Full Usage: AST.store endian addr v

Parameters:
Returns: Stmt

A Store statement.

endian : Endian
addr : Expr
v : Expr
Returns: Stmt

AST.sub e1 e2

Full Usage: AST.sub e1 e2

Parameters:
Returns: Expr

Subtract two expressions.

e1 : Expr
e2 : Expr
Returns: Expr

AST.tmpvar t id

Full Usage: AST.tmpvar t id

Parameters:
Returns: Expr

Construct a temporary variable (TempVar) with the given ID.

t : RegType
id : int
Returns: Expr

AST.undef rt s

Full Usage: AST.undef rt s

Parameters:
Returns: Expr

Undefined expression.

rt : RegType
s : string
Returns: Expr

AST.unop op e

Full Usage: AST.unop op e

Parameters:
Returns: Expr

Construct an unary operator (UnOp).

op : UnOpType
e : Expr
Returns: Expr

AST.unwrap e

Full Usage: AST.unwrap e

Parameters:
Returns: Expr

Unwrap (casted) expression.

e : Expr
Returns: Expr

AST.updateAllVarsUses rset tset e

Full Usage: AST.updateAllVarsUses rset tset e

Parameters:

Record the use of vars and tempvars from the given expression.

rset : RegisterSet
tset : HashSet<int>
e : Expr

AST.updateRegsUses rset e

Full Usage: AST.updateRegsUses rset e

Parameters:

Record the use of vars (registers) from the given expression.

rset : RegisterSet
e : Expr

AST.updateTempsUses tset e

Full Usage: AST.updateTempsUses tset e

Parameters:

Record the use of tempvars from the given expression.

tset : HashSet<int>
e : Expr

AST.var t id name

Full Usage: AST.var t id name

Parameters:
Returns: Expr

Construct a variable (Var).

t : RegType
id : RegisterID
name : string
Returns: Expr

AST.xor e1 e2

Full Usage: AST.xor e1 e2

Parameters:
Returns: Expr

Bitwise XOR.

e1 : Expr
e2 : Expr
Returns: Expr

AST.xthi addrSize expr

Full Usage: AST.xthi addrSize expr

Parameters:
Returns: Expr

Take the high half bits of an expression.

addrSize : RegType
expr : Expr
Returns: Expr

AST.xtlo addrSize expr

Full Usage: AST.xtlo addrSize expr

Parameters:
Returns: Expr

Take the low half bits of an expression.

addrSize : RegType
expr : Expr
Returns: Expr

AST.zext addrSize expr

Full Usage: AST.zext addrSize expr

Parameters:
Returns: Expr

Zero-extend an expression.

addrSize : RegType
expr : Expr
Returns: Expr

Type something to start searching.