The handling of interpolation routines has been improved.
mfcr
and mtcr
instructions to compute the addresses of the memory-mapped Core Special
Function Registers (CSFRs).stack effect
# increases the stack level by 8 bytes instruction "updateState" -> call(3) { stack effect: 8 bytes; } # decreases the stack level by 64 bytes routine "triggerUpdate" { stack effect: -64 bytes; }
possibly exits
loop "process.L1" { bound: 0 .. 10; possibly exits; }In this example, the routine
process
contains
a single endless loop. Without the new possibly exits
annotation in place, the value analysis would consider the loop
to be a deadend and mark it as infeasible. With the annotation, however,
the value analysis will treat the ends of the first ten loop iterations
as potential program exits, allowing you to obtain analysis results for these
ten iterations.suppress message
suppress message: 1033;
enum cardsuit { CLUBS = 1, DIAMONDS = 2, HEARTS = 4, SPADES = 8 };the new AIS2 enum functor
enum("HEARTS")will yield the value of
HEARTS
, i.e. 4
.# annotate handleInput0 through handleInput9 # and handleMessage0 through handleMessage9 routine match("handle(Input|Message[0-9])") { # ... }
# assert that call targets cmk, cma, and cmo exist instruction -> call(2) assert calls: "cmk", "cma", "cmo";
area contains data
annotation.instruction <ProgramPoint> end;is now written as
end: <ProgramPoint>;This allows multiple program ends to be specified in a single annotation, for example:
end: 0x4040, 0x192c;
instruction X accesses Y
”instruction 0xffc0048e writes to [0x00000680]:4 (part of '_Array2Glob' / part of 'Array2Glob')you will get the concrete element that is hit, if possible:
instruction 0xffc0048e writes to [0x00000680]:4 ('Array2Glob[8][7]')
memcpy
-like loops.eva-kalray: note #3096: in "./suites/a3/kalray/k1dp/ccsuite_o2/s4/aes.c", line 265:
In routine 'rijndaelKeySched.L10', at address 0xda8:
Losing precision since the instruction 0xda8: 'sb.add.x1 r0[r17] = r5;;' destroys 100% of the known memory content (35 cells).
(context '0x2140->"rijndaelVTKAT.clone.0", 0x1ba4->"makeKey", 0x16b0->"rijndaelKeySched", 0xc28->"rijndaelKeySched.L3"[1], 0xd64->"rijndaelKeySched.L10"[4..]')
xcall
/xret
.int
.stwcx
instruction, the analysis
now models the reservation failed case, too.syscall
...
”.
Old | New | |
---|---|---|
..., 0x30->"main.L1"[1/2..] ..., 0x30->"main.L1"[2/2..] |
..., 0x34->"main.L1"[1] ..., 0x34->"main.L1"[2..] |
|
call block address, current iteration, default/max unrolling |
call instruction address, current iteration, “ .. ” for cumulative |