aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG
blob: caa0747746a0e5e901d9d24c44c4539e483110df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
## 0.2.1
* README updates.

## 0.2.0
* added documentation to all public members.
* fix tests incorrectly expecting `lsl #0` in memory operands where it would have no effect
* remove some redundant `a64` operand kinds:
  - `RegOffset` is now `RegPreIndex` with no writeback.
  - `Offset` was a duplicate of `PCOffset`, and all uses have been so-renamed.

## 0.1.4
* add or fix many a64 instructions, extend support up through armv8.5.
  - some disassembly and optional elements of instruction text does not match
    the arm manual, but instruction data should be correct across the board.
  - SVE and SVE2 are not yet supported, and return `IncompleteDecoder` errors.

## 0.1.3
* same as 0.1.2, but fixes a few compilation warnings that snuck in too.

## 0.1.2
* fix some instructions in aarch64 decoding panicking with "unreachable"
  instead of returning an `Err(DecodeError::Incomplete)`. similarly, some
  instructions panicked instead of returning `InvalidOpcode` or `InvalidOperand`
  as they should.
* fix some instructions in armv7 decoding or display panicking instead of
  displaying a valid instruction, or returning a decode error.

... subsequently yanked because some compilation warnings ended up in this version.

## 0.1.1
* fix incorrect `yaxpeax_arch::Arch` impl for `std`-enabled builds
  (DecodeError did not implement `std::error::Error` in those build environments)

## 0.1.0
* target yaxpeax-arch 0.2.0

## 0.0.6
* fix incorrect markdown in README.md

## 0.0.5
* add thumb/thumb2 decoders

these decoders are considered "mostly correct" and "mostly complete". notably,
system instructions are less well-tested (particularly `mrs`, `cps`, and
similar), and the NEON extensions are still unsupported. NEON in particular
yield `DecodeError::Incomplete`. if you, the user, see `Incomplete`, that is a
`yaxpeax-arm` error!

`yaxpeax-arm` differs from the ARM manual's assembly syntax in a few ways:
* `.w` suffixes are best-effort.
* `addw`/`subw` are written `add.w`/`sub.w` for consistency with other wide instructions.
* `adr` with added/subtracted offset are shown as `add`/`sub`
* testing is not as exhaustive as is possible for ARM; errors may yet exist

at this time, if-then instructions (`IT`) are decoded, but the decoder has no
notion of "in an `IT` block or not", so following conditional instructions are
not yet conditional.

this all said, for armv4/thumb decoding, the implementation here is probably
close to correct. for armv6+/thumb2, aside from these notes, the implementation
here is ... hopefully ... close to correct.

* add clear rules by which `yaxpeax-arm` will be versioned 0.1 or 1.0. (see README)

## 0.0.4
* bump yaxpeax-arch, no functional change

## 0.0.3
`Instruction`, `Opcode`, and `Operand` are now a useful model of decoded
operations.
* `Operands`, plural, the enum of operands in the instruction, is now gone in
  favor of `Operand` that describe one operand of the instruction
* `Instruction` no longer include operand attributes like "add", "index", or "wback"
* better (not quite complete) support for non-user instructions and coprocessor instructions
* instructions operating on status registers through masks are now directly supported
* first brush of arm-version-specific decoder feature selection
* fix several preindex/postindex reversals

## 0.0.2
last revison that's sufficient for disassembly and really nothing else