DecAOF
======

AOF File Decoder
See Acorn C/C++ Manual for further documentation.

Changes from DecAOF 5.02 to 5.11
================================

Disassembler is much improved, including:

* MSR/MRS instructions correctly.
* SWI numbers are decoded.
* B/BLs to functions within the same code area are looked up in the symbol
  table.
* Thumb disassembly.
* ARM mapping symbols interpreted, which improves disassembly.

New -c++ option to demangle C++ symbol names.

Changes from DecAOF 5.11 to 5.12
================================

Added -u switch to enable UAL disassembly

Changes from DecAOF 5.12 to 5.14
================================

* Undefined instructions are now disassembled as DCI directives.
* Bugfixes to disassembly of VPADD, USAT, USAT16, LDRD, VLD, VRSQRTE, VSHL,
  VQSHL, VRSHL and VQRSHL.

Changes from DecAOF 5.14 to 5.15
================================

* Fixed some bugs in handling of big-endian object files
* Identifies SoftFP code symbol attribute
* Identifies VFP area attribute
* Identifies PC-relative relocations to fixed target addresses
* No area name is quoted on B or BL to fixed target addresses, and the area
  name *is* quoted on B or BL to addresses within the current area
* Some minor formatting improvements

Changes from DecAOF 5.15 to 5.18
================================

Updated dissassembler, including:

* VSHLL was incorrectly disassembled as SHLL
* Added pre-UAL opcodes for VFPv3 instructions - these were missed before
  because they didn't make it into the last pre-UAL ARM ARM:
  FCONST: equivalent to VMOV immediate, but with immediate field quoted
    as a literal integer rather than as a floating point value
  F{TO}(S|U)(H|L){TO}(S|D): equivalent to VCVT between floating-point and
    fixed-point, except the register is quoted only once
* Added disassembly of all the post-ARMv5 but pre-UAL Thumb opcodes
  These are CPS, CPY, REV, REV16, REVSH, SETEND, SXTB, SXTH, UXTB and UXTH
* Added Advancced SIMD encoding of VFMA and VFMS. These complement the
  VFP encodings which were added in VFPv4.
* Corrected disassembly of some undefined instructions
* Optional ARMv7 / Mandatory ARMv7VE; Cortex-R5,A15,A7:
    SDIV, UDIV
* ARMv7VE:
    ERET, HVC, MRS (banked), MSR (banked)
* ARMv8:
    AES(D|E|IMC|MC), CRC32{C}{B|H|W}, DMB/DSB (new options), HLT, LDA{B|H},
    LDAEX{B|D|H}, SEVL, SHA1(C|H|M|P|SU0|SU1), SHA256(H|H2|SU0|SU1),
    STL{B|H}, STLEX{B|D|H}, VCVT(A|M|N|P), VCVT(B|T) (double-precision),
    VMAXNM, VMINNM, VMULL.P64, VRINT(A|M|N|P|R|X|Z), VSEL

Changes from DecAOF 5.18 to 5.19
================================

Updated dissassembler, including:

* ARMv8.0:
    Add MVFR2 to list of registers accessible via VMRS
    Add SB instruction
* ARMv8.1
    Add VQRDMLAH, VQRDMLSH
* ARMv8.2
    Add VINS, VMOVX
    .F16 variants of VABD, VABS, VACGE, VACGT, VADD, VCEQ, VCGE, VCGT, VCLE,
      VCLT, VCMP, VCMPE, VCVT, VCVTA, VCVTM, VCVTN, VCVTP, VCVTR, VDIV, VFMA,
      VFMS, VFNMA, VFNMS, VLDR, VMAX, VMAXNM, VMIN, VMINNM, VMLA, VMLS, VMOV,
      VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPADD, VPMAX, VPMIN, VRECPE, VRECPS,
      VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VRSQRTE, VRSQRTS,
      VSEL, VSQRT, VSTR, VSUB
    Add VFMAL, VFMSL
    Add VDOT, VFMAB, VFMAT, VMMLA
    .BF16 variants of VCVT, VCVTB, VCVTT
    Add VSDOT, VUDOT
    Add VSMMLA, VSUDOT, VUMMLA, VUSDOT, VUSMMLA
* ARMv8.3
    Add VCADD, VCMLA
    Add VJCVT
* ARMv8.4
    Style consistency: only opcodes are upper-case, hence "TSB csync"
* ARMv8.5
    Detect UNPREDICTABLE encodings of (P)SSBB
* Fix bug in display of VFP immediates +/- 1.0625 (shown as +/- 1.625)
* Detect UNPREDICTABLE nature of previously supported ARMv8.0 Advanced SIMD
  instructions when encountered inside an IT block in Thumb state (note
  that 32-bit Thumb disassembler is still a work in progress)
* Detect UNPREDICTABLE behaviour due to invalid fixed-point bit index in VCVT

Changes from DecAOF 5.19 to 5.20
================================

Minor fix for a data abort attempting to disassemble old (type 1) AOF files
when a relocated BL was encountered.

Changes from DecAOF 5.20 to 5.21
================================

Debug tables containing 64 bit integers now list these as [un]signed long long
rather than unknown types.
