LZ> Hi , there is a problem in fuzzball about the unrecognized
LZ> instructions.
LZ> The unrecognized instructions is like that
LZ> "(((T_33:reg16_t&4:reg16_t)==0:reg16_t) ? T5:reg32_t :
LZ> T4:reg32_t)".
>>>>> "SZ" == Senke Zhoulinpx <
zhou...@gmail.com> writes:
SZ> When static.cc construct the CFG, it will invoke the
SZ> AbstractInterpreter.h. This causes the " unrecognized
SZ> instructions" error. When we fix this problem,we must ensure the
SZ> modified CFG that adds the ITE expression can be recognized by the
SZ> following analyzing tools. What is the format of CFG?
I don't believe that this problem affects the process of building the
CFG itself, which is complete by the time the abstract interpreter
starts to run. So it's not really about the format of the CFG per se,
but about the translation of instructions in a particular basic block
of the CFG into the Vine IR, which the abstract interpreter interprets
to analyze their semantics.
The C++ version of the Vine IR (also called the "ASMIR", from an older
generic description of it as an Intermediate Representation for
ASseMbly language) is declared in "libasmir/src/include" in the
FuzzBALL (and before it, Vine) source code: the most relevant file
here is "exp.h", which defines the AST structures that represent
expressions. If you look in change e87785c3 in the GIT history you can
see the change that the abstract interpreter needs be updated to
reflect: the addition of a new expression time "ITE", which is printed
like a C "? :" ternary operator in the example.