diff --git a/Test/WackyShifts,ffb b/Test/WackyShifts,ffb new file mode 100644 index 0000000000000000000000000000000000000000..df7c1a02daef4aea5f5c2d5ea98032be0fcf8f54 Binary files /dev/null and b/Test/WackyShifts,ffb differ diff --git a/VersionASM b/VersionASM index d50ca76f46eedb8bbfc84c46dcab86cc4fa9d99e..403a41ad13b43799ee79794833110918baf13e26 100644 --- a/VersionASM +++ b/VersionASM @@ -11,13 +11,13 @@ GBLS Module_HelpVersion GBLS Module_ComponentName GBLS Module_ComponentPath -Module_MajorVersion SETS "1.95" -Module_Version SETA 195 +Module_MajorVersion SETS "1.96" +Module_Version SETA 196 Module_MinorVersion SETS "" Module_Date SETS "24 Jul 2016" Module_ApplicationDate SETS "24-Jul-16" Module_ComponentName SETS "Debugger" Module_ComponentPath SETS "castle/RiscOS/Sources/Programmer/Debugger" -Module_FullVersion SETS "1.95" -Module_HelpVersion SETS "1.95 (24 Jul 2016)" +Module_FullVersion SETS "1.96" +Module_HelpVersion SETS "1.96 (24 Jul 2016)" END diff --git a/VersionNum b/VersionNum index 85eee569afea3d5e06862b31d00d8ef940292b18..d8e40a4c7c1cae8dab9daf6088c9f7c046985f42 100644 --- a/VersionNum +++ b/VersionNum @@ -1,15 +1,15 @@ -/* (1.95) +/* (1.96) * * This file is automatically maintained by srccommit, do not edit manually. * Last processed by srccommit version: 1.1. * */ -#define Module_MajorVersion_CMHG 1.95 +#define Module_MajorVersion_CMHG 1.96 #define Module_MinorVersion_CMHG #define Module_Date_CMHG 24 Jul 2016 -#define Module_MajorVersion "1.95" -#define Module_Version 195 +#define Module_MajorVersion "1.96" +#define Module_Version 196 #define Module_MinorVersion "" #define Module_Date "24 Jul 2016" @@ -18,6 +18,6 @@ #define Module_ComponentName "Debugger" #define Module_ComponentPath "castle/RiscOS/Sources/Programmer/Debugger" -#define Module_FullVersion "1.95" -#define Module_HelpVersion "1.95 (24 Jul 2016)" -#define Module_LibraryVersionInfo "1:95" +#define Module_FullVersion "1.96" +#define Module_HelpVersion "1.96 (24 Jul 2016)" +#define Module_LibraryVersionInfo "1:96" diff --git a/s/ARM b/s/ARM index 2216a8c331ed0b2cf4fbda09905bd53726a9ca2c..1912933002c908869b12d0c4ebf049bc2a59f016 100644 --- a/s/ARM +++ b/s/ARM @@ -1258,11 +1258,22 @@ Immediate BNE %FT10 TEQ r2, #0 ; but have a non-zero shift ? BNE WackyShift + B %FT20 ; Unshifted 0-255 10 - -;Testing for weird shifts, ie representable numbers as <data><no shift> but are in fact <data><shift> -;removed - +;Testing for weird shifts. There are 1023 duplicate immediates in total, of which 846 are >= 256. +; +;Since <data> is 8 bit, and <shift> is encoded divided by 2, there are at most 4 alternate encodings +;for any immediate before the <data> value encodes some completely different number. +;eg. <data << 0><lowest_shift+0> 1 ROR 24 = 256 +; <data << 2><lowest_shift+1> 4 ROR 26 = 256 +; <data << 4><lowest_shift+2> 16 ROR 28 = 256 +; <data << 6><lowest_shift+3> 64 ROR 30 = 256 +; +;The <lowest_shift> is the preferred one per DDI 0406C, A5.2.4, so that's the one +;whose <data> has at least one of bits 0-2 set. + TST r4, #3 + BEQ WackyShift +20 CMPS r8, #10 BLO Rem_Number ; If really simple, just display number ; ie. 0..9 unambiguous