Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-05-30 | just a bit more code motion that seemed to help things sometimes | iximeow | |
2022-05-30 | reorder prefix checks, extract vex/evex prefix handling | iximeow | |
sharing vex/evex invalid prefix checks improves codegen a bit, but ordering prefix checks by likeliest prefix first reduces time falling through prefix handling arms. both together are a notable improvement in throughput on typical x86 code. bundled in here is some code motion to where `mem_size = 0` and `operand_count = 2` are executed; this is because, at least on zen2 and cascade lake parts, bunching all stores to the instruction together caused small stalls getting into the decoder. spreading out stores seems to mix these assignments with parts of code that was not using memory anyway, and pipelines better. | |||
2022-05-30 | move opcode lookup tables into const arrays | iximeow | |
cleanliness, but also slightly better codegen somehow? | |||
2022-05-30 | replace size lookup logic with a LUT | iximeow | |
the match compiled into some indirect branch awfulness!! no thank you | |||
2022-05-07 | more annotation fixes? | iximeow | |
2022-04-24 | fix a few issues preventing no-std builds from ... building | iximeow | |
this includes a `Makefile` that exercises the various crate configs. most annoyingly, several doc comments needed to grow `#[cfg(feature="fmt")]` blocks so docs continue to build with that feature enabled or disabled. carved out a way to run exhaustive tests; they should be written as `#[ignore]`, and then the makefile will run even ignored tests on the expectation that this will run the exhaustive (but slower) suite. exhaustive tests are not yet written. they'll probably involve spanning 4 byte sequences from 0 to 2^32-1. | |||
2022-01-12 | fuzz DisplayStyle::C and fix corresponding issues1.1.4 | iximeow | |
2022-01-02 | Wrap unsafe functions to catch errors in debug | 5225225 | |
Closes https://github.com/iximeow/yaxpeax-x86/issues/16 | |||
2021-12-19 | fix incorrect memory size for f30f1e-style nop | iximeow | |
not only did the instruction have wrong data, but if displayed, the formatter would panic. | |||
2021-12-19 | test that invalid RegSpec constructions panic as expected | iximeow | |
in the process, fix 64-bit rex-byte limit, 32/16-bit mode mask reg limit | |||
2021-12-17 | write `apply_disp_scale` in a mode-agnostic way | iximeow | |
`apply_disp_scale` forgot that `wrapping_mul` exists, so we don't need to explicitly write the size of value that `mem_size` should be cast to, in casting to/from a signed integer. taken with `.into()`, we don't need per-architecture stubs to make evex decoding work. | |||
2021-12-16 | displacements are stored as unsigned, but are functionally signed ints | iximeow | |
so multiplying to expand EVEX compressed offsets can overflow, and that needs to be okay. | |||
2021-10-10 | support endbr{32,64} | iximeow | |
2021-10-10 | consistentify doc style | iximeow | |
2021-10-10 | export `InstructionDisplayer` (#9) | i509VCB | |
This makes generated docs refer to a type and show said type in the list of all structs rather than rustdoc showing gray text in return types. quote doc references | |||
2021-08-22 | bump to yaxpeax-arch 0.2.7 and proper field description support1.1.0 | iximeow | |
2021-08-22 | add 16/32-bit opcode/operand boundary desc, consistentify memory descriptions | iximeow | |
2021-08-21 | add `AnnotatingDecoder` note to CHANGELOG and publicize descriptions | iximeow | |
2021-08-21 | improve relative branch offset formatting for DisplayStyle::C | iximeow | |
2021-08-21 | maintain pre-annotation inlining properties | iximeow | |
this gets yaxpeax-x86 in no-inline configurations back to building as it did before, but is quite a blunt hammer. it seems that extra calls to `sink.record` trips the inlining thresholds for `read_with_annotation`, and then its caller, and its caller, even when one of them is just a delegation to its inner call. this is particularly unfortunate because yaxpeax-x86 is now making a decision about the inlining of a rather large function at the public edge of its API, but these attributes match the inlining decisions that LLVM was making before adding `DescriptionSink`. hopefully not too bad. not sure how to handle this in the future. | |||
2021-08-21 | add descriptions for other prefixes, 16-bit addressing | iximeow | |
2021-08-21 | add description reporting for segment prefixes and opcodes for 32-bit and 16-bit | iximeow | |
2021-08-21 | report barebones decoder annotation for vex-coded instructions | iximeow | |
2021-08-21 | extend decoder annotation through all of 64-, 32-, and 16-bit modes | iximeow | |
2021-08-21 | force read_sib inlining in 64-bit mode | iximeow | |
even though NullSink is no-ops, it causes llvm to not inline this function, for a net perf reduction | |||
2021-08-21 | extend annotation reporting to 32- and 16-bit modes, kinda | iximeow | |
2021-08-21 | wip | iximeow | |
2021-08-21 | fix negative relative branches (again!!! +- is bad!!!) | iximeow | |
2021-08-21 | fix incorrect decoding of 0x9*-series instructions with rex.b | iximeow | |
2021-08-21 | report memory sizes for push, pop, call, ret | iximeow | |
these instructions had memory sizes reported for the operand, if it was a memory operand, but for versions with non-memory operands the decoded `Instruction` would imply that non memory access would happen at all. now, decoded instructions in these cases will report a more useful memory size. | |||
2021-08-14 | relative branches should be shown as $+offset, not just plain offset | iximeow | |
while x86 branches of immediates are all relative to PC, other architectures may have absolute branches to immediate addresses, leaving this syntax ambiguous and potentially confusing. yaxpeax prefers to write relative offsets `$+...` as a rule, so uphold that here. | |||
2021-08-14 | delcare pub const fn constructors for all gp registers, segment registers, ↵ | iximeow | |
and ip/flags | |||
2021-08-12 | add RegSpec::rbx() helper (#6) | chc4 | |
2021-07-22 | fix incorrect decodes with scas and 67-prefixes1.0.4 | iximeow | |
2021-07-04 | update yaxpeax-arch to 0.2.0 and update DecodeError impls | iximeow | |
2021-07-04 | update crate to rust 2018 | iximeow | |
2021-07-04 | support avx512 registers >=16 | iximeow | |
2021-07-04 | handle vzeroupper/vzeroall, reject vzero* with nonzero vvvv | iximeow | |
2021-07-04 | support xacquire/xrelease prefixing | iximeow | |
2021-07-04 | fix several incorrect tests and docs in 64- and 32-bit modes | iximeow | |
2021-07-03 | update protected_mode to match long_mode docs, apis | iximeow | |
2021-07-03 | update DecodeError impls | iximeow | |
2021-07-03 | document public members in long_mode | iximeow | |
2021-07-03 | write some dang docs, export `MemoryAccessSize` where you'll look for it | iximeow | |
2021-07-03 | more carefully test mmx operand sizes | iximeow | |
2021-07-03 | factor out MemoryAccessSize | iximeow | |
2021-07-03 | add tests for MemoryAccessSize, consistentify style on docs | iximeow | |
2021-07-03 | be more strict about denying invalid operands | iximeow | |
2021-07-03 | do not reject prefixed sgdt, add a TODO for xop | iximeow | |
not that xop will ever be wanted, rip | |||
2021-07-03 | support AMD `sev_snp` | iximeow | |