Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-06-19 | more profiling outlining | iximeow | |
2024-06-19 | write_u64 helpers | iximeow | |
2024-06-19 | hint better about codegen for contextualize_intel | iximeow | |
2024-06-19 | configurable inlining to help with opts | iximeow | |
2024-06-18 | helpers for those i8/u8 immediates too | iximeow | |
2024-06-18 | make write_2 work again for comparison (kinda) | iximeow | |
2024-06-18 | more unused arguments | iximeow | |
2024-06-18 | try grouping characters printed with or without segment prefixes | iximeow | |
2024-06-18 | unreachable panics for impossible op_nr. clean this up though.. | iximeow | |
2024-06-18 | inline the write u8/u32 helpers, lets see what that does | iximeow | |
2024-06-18 | move avx512 operand printing off of fmt | iximeow | |
2024-06-18 | whats it do without the unused colors parameter | iximeow | |
2024-06-18 | use hex printer helpers for relative offsets too | iximeow | |
2024-06-18 | use specialized printers for immediate operands | iximeow | |
2024-06-18 | use specialized write helpers for register labels | iximeow | |
2024-06-18 | use get_kinda_unchecked for mem size strings | iximeow | |
if mem_size is ever out of bounds thats a severe bug on its own | |||
2024-06-18 | write_fixed_size really should always be inlined... | iximeow | |
2024-06-18 | slightly more centralized hex formatting | iximeow | |
2024-06-18 | avoid intermediate buffer and copy of hex-formatted ints | iximeow | |
2024-06-18 | looks like that becomes memcpy, not ideal | iximeow | |
2024-06-18 | actually use small-string specializations when available | iximeow | |
2024-06-18 | write_fixed_size impls for string and BigEnoughString | iximeow | |
2024-06-18 | mem size strings are all 7b or less | iximeow | |
2024-06-18 | move non-avx512 operand printing away from fmt | iximeow | |
2024-06-18 | move away from fmt for visit_i64 and displacements too | iximeow | |
2024-06-18 | less integer formatting in operands | iximeow | |
2024-06-18 | a few more accurate hints | iximeow | |
2024-06-18 | helper to clear BigEnoughString | iximeow | |
2024-06-18 | figuring out how to handle short variable-size strings | iximeow | |
2024-06-18 | enough infratructure to avoid bounds checks, at incredible user cost | iximeow | |
2024-06-17 | add token spans for some registers | iximeow | |
2024-06-17 | might be an ok way to redesign colorization.... | iximeow | |
it turns out that yaxpeax-arch's notion of colorization has been broken from the start for systems that do markup without inline sequences (e.g. windows/cmd.exe before vt100 support) | |||
2024-06-16 | use less of core::fmt, write by hand | iximeow | |
`name()` returning a `[u8; 2]` is nice when there is a specializing and unrolling write implementation, whereas `&str` might not consistently unroll into a simple 2-byte copy (rather than loop). it'll look a little more reasonable soon, hopefully.. | |||
2024-06-16 | remove branch better handled elsewhere | iximeow | |
2024-06-16 | move to shared (safe) impl of RelativeBranchPrinter | iximeow | |
2024-06-16 | commit unshippable wildly unsafe asm-filled printing code | iximeow | |
write_2 will never actually be used, but im adapting it into contextualize in a... better way | |||
2024-06-16 | adapting contextualize_intel to use new operand visitor stuff | iximeow | |
the reasoning for *why* `visit_operand` is better here lives as doc comments on `visit_operand` itself: it avoids going from scattered operand details to `enum Operand` only to deconstruct the enum again. instead, branch arms can get codegen'd directly against `struct Instruction` layout. | |||
2024-06-13 | use a bit of Opcode to indicate rep/repne applicability | iximeow | |
this reduces a `slice::contains` to a single bit test, and regroups prefix printing to deduplicate checks of the `rep` prefix seemingly this reduces instruction counts by about 1%, cycles by 0.3% or so. | |||
2024-04-02 | display: remove some pointless checks | iximeow | |
the match on opcode should have been dce, match on operands would only matter if there was a bug | |||
2024-04-02 | less write, more write_str | iximeow | |
2024-04-02 | lets see how a visitor for operands works out here... | iximeow | |
2024-04-02 | display: gate rep printing with a simpler check | iximeow | |
testing against six opcodes to see if we should print rep or repnz is a bit absurd. they are relatively rare instructions, so this is a long sequence of never-taken tests. we can avoid the whole thing in the common case by testing if there is any kind of rep prefix at all. | |||
2024-04-02 | display opt: mem size labels and minor segment reporting changes | iximeow | |
for mem size labels: add one new "BUG" entry at the start of the array so `mem_size` does not need to be adjusted before being used to look up a string from the `MEM_SIZE_STRINGS` array. it's hard to measure the direct benefit of this, but it shrinks codegen size by a bit and simplfies a bit of assembly.... for segment reporting changes: stos/scas/lods do not actually need special segment override logic. instead, set their use of `es` when decoded, if appropriate. this is potentially ambiguous; in non-64bit modes the sequence `26aa` would decode as `stos` with explicit `es` prefix. this is now identical to simply decoding `aa`, which now also reports that there is an explicit `es` prefix even though there is no prefix on tne instruction. on the other hand, the prefix-reported segment now more accurately describes the memory selector through which memory accesses will happen. seems ok? | |||
2023-12-16 | fix opportunity for unhandled register synonyms | iximeow | |
registers `al`, `cl`, `dl`, and `bl` could have two different representations - with `rex.w` and without. these two forms of `RegSpec` would not compare equal, nor has the same, so for code relying on `RegSpec` to faithfully represent a 1-1 mapping to x86 registers, these synonyms would introduce bugs in register analysis. for example, in `yaxpeax-core`, this would result in instructions writing to `rex.w al` not being visible as definitions for a future read of `!rex.w al`. fix this in `x86_64` code, add new test cases about the confusion, adjust register names to make this situation more clearly a bug, and introduce two new fuzz targets that would have helped spot this error. | |||
2023-07-04 | best: 54.3cpi (2512ms) | iximeow | |
2023-07-04 | line up Opcode values for simple translation from opc bytes | iximeow | |
2023-07-04 | fixup: handle mnemonic ordering too | iximeow | |
2023-07-04 | pick useful numeric values for RegisterBank | iximeow | |
these coincidentally have the general-purpose banks (rB excepted) matching their size in bytes | |||
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 |