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 1
d1_r1_c1_value: decode round 1, routine 1, context 1, value analysis
For compatibility reasons,
d0_ is skipped. For analyses with no loop between
decoding and value analysis, IDs still start with
cyclic burst” annotation, because this preference is now automatically derived from processor settings.
max-length = x” to restrict call string length of the analyses.
maxallowed; for busy-waiting loop annotations actual computed time may be lower than the annotated time.)
@staticnames without filename for data symbols.
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.
dcreadin normal encoding, only supported in alternative encoding because of clash with
gld* <address>instruction, set condition flags.
_restfprs_*and similar compiler-generated methods.
dispatch_stallfeature for folded branches.