a³ Release 10.12
----------------


New targets
-----------
* New a³ for MPC603e with universal DDR controller support.
* New a³ for PPC750 with universal DDR controller support.
* New a³ for x86 with StackAnalyzer for x86/x86rm.


Qualification Support Kits (QSKs)
---------------------------------
* QSKs are now available from the a³ GUI via “Help” → “Qualify…”.
* Extended the AIS expression semantics tests by the usage of:
  * the sint/uint cast operators;
  * the exactly== operator;
  * the (-inf..inf) construct.
* Added tests for:
  * parametric loop bounds;
  * user register values;
  * path exclusion based on user register values;
  * loop bound with time limit;
  * verifying that irreducible loops cannot be handled by loop annotations
    but by flow constraints.
* The QSK for StackAnalyzer for PowerPC with gcc-4.1.2 now includes
  hardware stack measurement tests.


a³ toolchain
------------
32-bit and 64-bit Linux only: Programs now report a backtrace if they abort.
Please include this backtrace when contacting support.


a³ GUI
------
* Improved performance for projects with many analyses.
* Message views are no longer separate items in the left-hand navigation panel.
  They have been merged into the corresponding Analyses views.
* Clicking on a link in an error message now opens a menu where you can
  select whether you want to go to the corresponding place in the source
  or disassembly view.
* The colors used for highlighting in the AIS editor can now be customized.
* General improvements to the toolbar and the view handling.
* Improved handling of register values. Only analysis integral registers
  such as the stack pointer are configurable in the target configuration
  page of the GUI. The Registers view has been removed, all additional
  registers must be specified via AIS annotations. The AIS Wizard is extended
  to help with this. New symbol name ":analysis_start" can be used
  for that with instruction label:

    ":analysis_start" is entered with r12 = 1

* The shortcut for stopping analyses is now F4. The previously used Ctrl+Esc
  is no longer supported.
* Improved Configuration view.
* For architectures with several stacks, the result of a stack analysis in a
  computation can be referenced using the keywords “user” for the user stack
  and “system” for the system stack. Example:

    select(#StackAnalysis, user)

* There is no longer a separate item “Registers” in the left-hand
  navigation panel. Instead, all registers must be annotated via AIS,
  either manually or with the help of the AIS Wizard.
* Improved address value input fields.
* The editor always displays and keeps up-to-date the information about
  which parts of the code are infeasible or contribute to the WCET or
  maximum stack usage.
* The debug views correctly display the addresses of variables that are
  relative to the contents of a register.
* Better handling of the unbounded/infeasible result for computations.
* Existing XML result files are now loaded upon opening a project,
  to display results of already performed analyses.
* Improved visualisation:
  * by searching for “unresolved” the user gets all unresolved
    computed branches and calls as results;
  * improved performance of the embedded graph viewer;
  * improved source code visualisation.


AIS
---
* The user may now override the default unroll parameter at loop level.
* Improved annotation export for the “Export project” option.
* Changed the format of the mem annotation to better match the format
  of other functor-like AIS annotations:
  * mem <unit> (<addr>) is now written as mem (<addr>, <unit>).
  * mem <byte_order> (<addr>) is now written as mem (<addr>, <byte_order>).
* New annotation “always returns” enables specifying
  that an external routine always returns and therefore is not a possible end
  of the program.
* The new “:analysis_start” label enables referring
  to the analysis entry symbolically in AIS files.


Decoding
--------
* Program headers are ignored by default for section creation. Only if no valid
  sections are found for each program header a section is created. You can
  switch back to the old behavior by checking “Always Read Program Headers”
  in the advanced options.
* Improved pattern matching for switch table detection.
* Better handling of ambigious names for one address, e.g. global symbol names
  are now preferred.
* exec2crl now lists all recursive routines.
* GHS compiler: short function names are now preferred for graph visualisation,
  e.g. “test” instead of “test@C:/test.c”.
  Long names are still used in annotations and elsewhere, when using a short
  name would introduce ambiguity.
* ARM7: removed unnecessary destination register for one MOV variant.
* Simplified mnemonics of VLE rwlinm instructions are now correctly inferred.
 (Previously, e_rlwinm rA,rS,n,0,31-n was displayed as slwinm rA,RS,n
  instead of slwi rA,RS,n.)


Stack and value analysis
------------------------
* Improved precision if memory accesses are unsharp,
  by reading all possible values and combining them up to a certain threshold.
* The option “Do not analyze values of memory cells”
  is now honored by StackAnalyzer.
* Improved warning messages about possible targets
  of unresolved computed calls.
* Improved precision of the bitwise-and operator.
* Performance improvements for the analysis of unrolled loops
  with many contexts.
* HCS12: value analysis no longer determines memory accesses
  for computed jumps.
* M68020: improvements to the btst instruction.
* PowerPC:
  * improved precision for multiplication with immediate constants;
  * improved automatic loop detection for TargetLink-generated code;
  * restricted annotations are now used during analysis time to improve
    the precision of write operations to memory;
  * interactive value analysis now also shows the contents
    of the processor status flags updated by comparison operations
   (the flags are usually Negative, Carry, Zero, and Overflow).
* V850:
  * improved precision of loop analysis;
  * improved annotation handling for mirrored memory areas.


Path analysis
-------------
* Warnings about unbounded loops or recursions are now only information
  messages, as they may be bound by flow constraints.
* Prediction file base path analysis: massive speedup of poptimize2p
  for the case of extensive splitting/joining in basic blocks.


Cache and pipeline analysis
---------------------------
* Unresolved computed calls and branches are now handled as potential
  program exits for pipeline analysis, in addition to triggering warnings.
* Improved persistence analysis.
* Better handling of conflicts between memory annotations provided
  through the GUI and by the user.
* M68020: improvements to the timing model of the M68020 processor (btst).
* TriCore:
  * improved performance and memory consumption of the pipeline analysis;
  * now allowing higher waitstates for flash.
* V850: improved handling of invalid memory area annotations.
* MPC7448: improved selection of memory areas for accesses.
* MPC755: support for handling of nop tail instructions.
* PPC750:
  * support for handling of nop tail instructions;
  * state space optimizations caused by bus clock ratio splitting;
  * a 1:1 clock ratio between the processor core and the L2 cache unit
    is now assumed.


Visualization and reporting
---------------------------
Default configuration values are no longer shown in the textual report files.


==============================================================================
Last modified on 15 December 2010 by alex@absint.com.
Copyright 2010 AbsInt. http://www.absint.com/
==============================================================================
An HTML version of these release notes is available at
http://www.absint.com/releasenotes/a3/10.12/