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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
## 0.3.2
* fully support PAC instructions
* support hinted branch instructions from ARMv<VERSION>
* inline some armv7 decode helper functions
- this actually makes the armv7 decoder both faster *and* smaller. measured
against tdfx_dri.so, this takes decode throughput from ~410mb/s to ~709mb/s
while shedding about 100 bytes of code from the decoder's footprint
## 0.3.1
* fix no-std transitively depending on std still
- thank you @encounter for the patch!
## 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
|