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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
## 0.3.0
* major version bump of yaxpeax-arch (0.2.7 -> 0.3.1)
- while there is no direct API breakage of yaxpeax-arch, typical use of the
yaxpeax crates would have issues with their yaxpeax-arch dependency not
matching the transitive dependency through specific decoder crates. so, major
version bump it is!
## 0.2.6
* aarch64: add support for `udf` (`0000_0000_0000_0000_<imm16>`)
- thank you @martin-fink!
## 0.2.5
* fix decoding armv8 a64 hint instructions
- in some cases the displayed hint instruction was incorrect
- additionally, the `op1` field in decoded instructions included two more
bits than it should
- thanks to belovdv for the patch!
* improve decoding of armv8 a64 msr instructions
- decoding of the `PstateField` immediate value was just terribly wrong.
- this should be improved to more precisely match section `C5.1.3`
"architectural hints, barriers and CLREX, and PSTATE access", but least
fields are decoded properly.
## 0.2.4
* fix `no_std` builds
* several fixes relating to arm- and thumb-mode v7 branch offset decoding
- thanks to both ehntoo and jam1garner for these!
* make `ShiftStyle::into_shift` public. it was private as an oversight; this is
a useful conversion involved in programmatic handling of instructions.
- thanks to wscp for catching this!
## 0.2.3
* add differential tests, initial impl only tests against capstone
## 0.2.2
* fix docs typo.
## 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
|