B2R2


TempInfo Type

Temporary information obtained by parsing a block (bbl) of instructions, such as IR-level leaders and auxiliary information about an instruction-level basic block. This information is necessary to construct a (IR-level) CFG. Normally, a single instruction-level bbl represents a single IR-level basic block, but if there exist intra-instruction control flows, it can have multiple intra blocks.

Record fields

Record Field Description

HasExplicitTerminator

Full Usage: HasExplicitTerminator

Field type: bool

Flag indicating that IEMark statement follows a terminatinig statment, such as SideEffect. Although our IR optimizer will remove such IEMarks in most cases, there is one exception, though. If there is a SideEffect statement immediately followed by an IEMark, our optmizer will not remove the IEMark because we cannot assume that the SideEffect statement will advance the PC. In fact, the SideEffect statement does not necessarily know the size of the corresponding machine instruction. Thus, it is not natural to remove such IEMarks.

Field type: bool

InterEdges

Full Usage: InterEdges

Field type: (ProgramPoint * ProgramPoint * CFGEdgeKind) list

Inter-Instruction edges related to this block.

Field type: (ProgramPoint * ProgramPoint * CFGEdgeKind) list

IntraEdges

Full Usage: IntraEdges

Field type: (ProgramPoint * ProgramPoint * CFGEdgeKind) list

Intra-Instruction edges in this block.

Field type: (ProgramPoint * ProgramPoint * CFGEdgeKind) list

LabelPPoints

Full Usage: LabelPPoints

Field type: Map<LabelIdentifier, ProgramPoint>

Helper for translating symbol to program point.

Field type: Map<LabelIdentifier, ProgramPoint>

Leaders

Full Usage: Leaders

Field type: Set<ProgramPoint>

All leaders in this block.

Field type: Set<ProgramPoint>

NextEvents

Full Usage: NextEvents

Field type: CFGEvents

Next events to consume. Since BBLManager parses only a single BBL, other events need to be consumed later.

Field type: CFGEvents

Static members

Static member Description

TempInfo.FindLabelSymbol(tmpInfo) (myPp)

Full Usage: TempInfo.FindLabelSymbol(tmpInfo) (myPp)

Parameters:
Returns: Symbol

Find label symbol at the given program point (myPp).

tmpInfo : TempInfo
myPp : ProgramPoint
Returns: Symbol

TempInfo.Init(initialLeader) (evts)

Full Usage: TempInfo.Init(initialLeader) (evts)

Parameters:
Returns: TempInfo
initialLeader : ProgramPoint
evts : CFGEvents
Returns: TempInfo