1. 25 Feb, 2018 1 commit
    • Jeffrey Lee's avatar
      VFP/NEON disassembly improvements · 6eee6524
      Jeffrey Lee authored
      Detail:
        actions/ARMv8FP_AArch32, Makefile - Add disasembly for the ARMv8 VFP/NEON instructions
        actions/ARMv7_ASIMD, actions/ARMv7_VFP - Fix incorrect disassembly of VCLS, VMOVN, VRSUBHN, VFNMA, VFNMS
        c/util - Add disassembly for MVFR2 register
        s/ARM - Tweak coprocessor instruction decoding logic; ARMv8 uses some of the CDP2 instructions for VFP/NEON
        cache/vfp - Updated decgen cache file
        Test/c/testbed - Improve fopen/system error checking. Add some more rules to deal with (expected) differences between Debugger/dis2 and decaof.
      Admin:
        Tested on Raspberry Pi 3
        Disassembly for new instructions (+ some nearby values) checked against BASIC 1.74 + decaof 5.18
        Requires Library-1_92
      
      
      Version 2.02. Tagged as 'Debugger-2_02'
      6eee6524
  2. 11 Nov, 2016 1 commit
    • Robert Sprowson's avatar
      Add ARMv8 AArch32 disassembly · 0715cd51
      Robert Sprowson authored
      Opcodes for CRC32/HLT/SEVL/LDA/STL/LDAEX/STLEX and DMB/DSB options.
      Makefile:
        Add ARMv8_AArch32 actions and encodings to dis2.
      actions/ARMv7,dis2.h:
        Extend the DMS/DSB decoding to warn about ARMv8 specific ones (previously undefined)
      ARM.s/ARMv6.s:
        Slot in decode.
      CGlue.s/Debugger.s/Messages
        New token for "ARMv8 or later" warnings.
      
      Tested by brute force all 256M instructions in NV space and 256M conditionals, comparing the output against dis2.
      Currently missing the new VFP and SIMD opcodes.
      
      Version 1.98. Tagged as 'Debugger-1_98'
      0715cd51
  3. 11 Jun, 2016 1 commit
    • Robert Sprowson's avatar
      dis2 corrective actions util.c · 9350c823
      Robert Sprowson authored
        Line 332: Fix typo in R13_hyp table entry (was R12)
        Line 158: A missing comma meant the arch warning table was one entry too short, so any XScale media instructions would cause a NULL pointer access
      actions/ARMv7
        Add missing pre-UAL forms of LDRHT LDRSBT LDRSHT STRHT, assuming they take the form [LD|ST]RccSUFFIX
        Fix decoding of banked MRS/MSR SYSm field, this is defined as m:m1, so m needs shifting up more
        Fix opcode for banked MSR, copy paste fumble
      Tested using 'testbed', not tagged.
      9350c823
  4. 28 Nov, 2013 1 commit
    • Jeffrey Lee's avatar
      Add a new, machine-generated VFP/NEON disassembler. Fix some ARMv6/v7 disassembly bugs. · 027eaf81
      Jeffrey Lee authored
      Detail:
        This change adds up-to-date VFP & NEON disassembly to the module, by way of a partially machine-generated disassembler written in C.
        It's also possible to build a standalone disassembler utility (dubbed 'dis2') which is 100% C and has support for all ARM instructions (including some obscure stuff the assembler disassembler currently lacks, e.g. XScale DSP instructions). One day this may completely replace the assembler disassembler, but at the moment it's a bit bulky and probably has a few bugs left to squash. The disassembler is also fairly flexible, supporting various output formatting options.
      
        Main changes:
        - Makefile - Rewritten to switch over to using the CModule makefile fragment instead of AAsmModule, to allow the C code to be included in the component. Also added 'dis2' as an alternative component to build as.
        - Resources/UK/Messages, Resources/Germany/Messages - Updated with new disassembler messages
        - s/Debugger - Add new UseCVFPNEON switch to allow control over whether the module builds with the C VFP/NEON disassembler or the original assembler VFP disassembler
        - s/CGlue - Glue code used with the C disassembler to bridge the gap between the assembler world and the C world
        - actions/* - A set of decgen action files describing what to do for each instruction the new disassembler supports. These are basically just blocks of C code - although they need to match up with the encoding names in Library/Misc/decgen/encodings
        - cache/* - Folder for decgen to cache decision trees in. Building the decision tree for the disassembler is currently a lengthy process, but caching the trees reduces the build time to a fraction of the full time.
        - c/head - Stub C file that decgen prepends to the code it generates
        - c/main - main frontend for the standalone version of the disassembler
        - c/support - Reimplementation of the standard C library functions required for the disassembler. This allows us to avoid a runtime dependency on the shared C library, and also allows us to deal with control-terminated strings from messagetrans where relevant. For convenience this file also has the main entry point that's called from assembler.
        - c/util - Utility code for outputting various forms of instruction, decoding immediate constants, etc.
        - h/dis2 - Header file for the C code
        - Test/c/testbed - Simple C testbed app to allow the output of dis2 to be compared against the Debugger module and decaof
        - !MkDis2,fd7 - Script to allow easy building of the standalone 'dis2' disassembler
        Bugfixes:
        - s/ARMv6 - Change 'ROR#' to 'ROR #' for UXTAB, etc. disassembly. Fix bitfield extract & clear instructions to detect unpredictable/invalid bitfield definitions
        Misc other changes:
        - s/* - Source files updated so s/Debugger contains a list of GETs instead of each source file LNK'ing to the next
      Admin:
        Tested in ROM form on BB-xM, and as softload on Iyonix
        German messages are in need of translation
        Requires Library-1_65 and BuildSys-6_34
      
      
      Version 1.85. Tagged as 'Debugger-1_85'
      027eaf81