aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG
diff options
context:
space:
mode:
authorBrandon Ros <brandonros1@gmail.com>2026-07-02 23:20:56 -0400
committeriximeow <me@iximeow.net>2026-07-28 02:53:24 +0000
commit82df9f3af144814889afb7e289d04dcc1ffa5dbf (patch)
tree608b1826f4e09a7469cdf464e36b4b63ef0d4d6e /CHANGELOG
parent0b4ce1210eb90aa370d286390c8566f2bee133bd (diff)
fix several thumb2 decode bugs
- 32-bit store encodings with the imm12 bit (bit 23) set were decoded as the register-offset form when imm12 < 64, or as strbt/strht/strt when imm12 was 0xExx. bit 23 set always means the imm12 form. - movw/movt packed imm4 at bit 16 instead of bit 12, producing 20-bit immediates (e.g. 0xf0005 instead of 0xf005) - mvn (immediate) was decoded as mov, dropping the bitwise not - ror (immediate) was decoded as asr all cases verified against binutils objdump
Diffstat (limited to 'CHANGELOG')
-rw-r--r--CHANGELOG7
1 files changed, 7 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 2c08422..5a6dc75 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -22,6 +22,13 @@ several fixes from @Grond66:
* TST/TEQ decoded "three operands" in some cases when they only have two.
* ARMv7: do not print the "s" suffix for instructions that unconditionally set flags.
+as well as thumb2 fixes from @brandonros:
+* thumb2: wide store encodings were very confused about offset widths.
+* thumb2: movw/movt incorrectly reassembled 16-bit immediates into 20-bit immediates.
+* thumb2: some instructions had outright incorrect opcodes:
+ * ror (immediate) was decoded as asr,
+ * mvn (immediate) was decoded as mov,
+
thank you for the patches!
## 0.4.0