Sub.KB
val lift : block -> cfg -> sub term Bap_knowledge.knowledge
lift entry
takes an basic block of assembler instructions, as an entry and lifts it to the subroutine term.
val ssa : t -> t Bap_knowledge.knowledge
ssa sub
returns sub
in SSA form. If program is already in SSA, then do nothing (see also is_ssa
). The underlying algorithm produces a semi-pruned SSA form. To represent different versions of the same variable we use variable versions. Any definition of a variable increases its version number. So, the zero version is reserved for variables that weren't defined before the first use.
val flatten : t -> t Bap_knowledge.knowledge
flatten sub
returns sub
in flattened form in which all operands are trivial. @see Blk.KB.flatten for more information about flattening.