Implemented a new, iterative decoding strategy that uses value-analysis information to resolve computed-call and branch targets. This feature significantly reduces the manual annotation effort, especially for computed calls and branches whose targets are stored in constant arrays/tables.
By default, iterative decoding is always enabled. This can be changed via “Option” → “Configuration” → “Analyses” → “Advanced” → “Decoding: Enable iterative decoding”.
If activated, the control-flow reconstruction and value/stack analysis steps in the tool chain iterate if new control-flow relevant information (i.e. a computed branch/call target) is found by the value analysis. This information is given back to the decoder as an automatic annotation and restarts the decoding step again. The procedure is repeated until no further control-flow relevant information is found by the value analyzer. A set of all collected automatic annotations can be seen in the “Automatic annotations” view grouped under the aiT or Stack Analysis item.
This toolchain loop leads to changes to IDs of routines and contexts in the XML report. The new IDs look as follows:
d1_r1
: decode round 1, routine 1d1_r1_c1_value
: decode round 1, routine 1, context 1, value analysisFor compatibility reasons, d0_
is skipped. For analyses with no loop between
decoding and value analysis, IDs still start with r<x>
.
cyclic burst
” annotation,
because this preference is now automatically derived from processor settings.max-length = x
”
to restrict call string length of the analyses.max
allowed;
for busy-waiting loop annotations actual computed time may be lower than the annotated time.)@static
names without filename for data symbols.:Anon_
routines changed:
Anon_ffff
to :Anon_0xfff
Anon_ff00ff
to Anon_0xff:0xff
instruction "<routine name>" + <index> computed calls via "<record name>" [<elements>] struct <record size> bytes offset <record offset> bytes access <pointer size> bytes null;
__icall
. The trampoline routines are no longer excluded
from the control flow graph. This allows for more precise pipeline analysis later on.REG:
.dcread
in normal encoding, only supported
in alternative encoding because of clash with icbtls
.wait
” instruction.evfsmadd
evfsmsub
evfsnmadd
evfsnmsub
efsmadd
efsmsub
efsnmadd
efsnmsub
gld* <address>
instruction, set condition flags._restfprs_*
and similar compiler-generated methods.jmp
instruction.dispatch_stall
feature for folded branches.