aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-06-19 03:02:35 +0000
committeriximeow <me@iximeow.net>2026-07-05 00:09:22 +0000
commit97dbde69221127d2552cb4fc442b90a2c0ff2a95 (patch)
treed31f0fb9c01d3729e8a491f12e59268b466d1178 /CHANGELOG
parentb35fd33629ab53925302f34747faf86ee2f90ace (diff)
add DisplayRules, docs, doc tests, ..
this includes `trait DisplayRules` as a generic mechanism to control parts of instruction printing, a `DefaultRules` for the existing formatting style, and `AbsoluteAddressFormatter` to print instructions as at some location in an address space.
Diffstat (limited to 'CHANGELOG')
-rw-r--r--CHANGELOG17
1 files changed, 17 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 888017b..2b6fbb9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,23 @@
dumpbin.exe, and (on Windows) is tested to round-trip through masm.exe or
ml64.exe as appropriate. caveats apply; see the documentation on DisplayStyle for details.
+* add a new `DisplayRules` trait to override elements of instruction formatting, as well as
+ `Instruction::display_rules` as an analogue to `Instruction::display_style` as a simple helper
+ to wrap an instruction and display rules together for formatting.
+
+ yaxpeax-x86 (finally) supports printing instructions at absolute addresses
+ through new `AbsoluteAddressFormatter`s in all modes. the interactions
+ between `DisplayStyle` and specific `DisplayRules` implementations are
+ somewhat subtle and better documented on those types. a test implementation
+ of `DisplayRules` is used to symbolicate addresses, for example, but such an
+ implementation is (probably!) not suitable for general-purpose use.
+
+ `DisplayRules` should not add any additional overhead to instruction
+ formatting beyond net-new logic in provided formatting. existing formatting
+ is a short-hand for `DefaultRules` (`Instruction::display_with` as well as
+ plain `impl Display for Instruction`). if formatting throughput regresses in
+ some use case, that is a bug! please report it!
+
* `Instruction::invalid()` returns instructions with opcode `Opcode::Invalid`, rather than nop.
decoding an instruction with `opcode == Invalid` was already possible through attempting
to decode invalid opcodes into a `&mut Instruction`; `invalid()` returning a no-operand