Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-07-02 | consolidate length/extension checks to help compilers DCE | iximeow | |
2021-07-02 | `Nothing` operand code must be decoded with operand_count=0 | iximeow | |
2021-07-01 | fix warnings | iximeow | |
2021-07-01 | reorder prefix checks | iximeow | |
this measures a bit faster. it doesn't seem like it should be. the rex prefix checks compile identically but move a lea for a later expression up and pipelines better? | |||
2021-07-01 | reallocate OperandCode, convert disparate registers to array | iximeow | |
also remove redundant assignments of operand_count and some OperandSpec, bulk-assign all registers and operands on entry to `read_instr`. this all, taken together, shaves off about 7 cycles per decode. | |||
2021-07-01 | making opcode u32 reduces a stall? | iximeow | |
2021-07-01 | complete yaxpeax-arch 0.1.0 adaptation, shore up .mem_size() | iximeow | |
2021-07-01 | update yaxpeax-x86 to yaxpeax-arch 0.1.0 interfaces | iximeow | |
2021-06-29 | fix several lingering mem_size discrepancies | iximeow | |
2021-06-28 | remove old movsx/movzx-related memory size hacks | iximeow | |
2021-06-28 | remove unused evex variants from generated code | iximeow | |
2021-06-28 | clean up protected mode vex-related warnings | iximeow | |
2021-06-28 | remove a few operand cases | iximeow | |
vex decoding is really intended to avoid explosions in code size more than anything... | |||
2021-06-28 | round out x86_32 support - avx2, avx, memory sizes | iximeow | |
2021-06-28 | protected mode memory sizes | iximeow | |
also some long-mode cleanup in corresponding areas | |||
2021-06-27 | protected-mode avx512 | iximeow | |
2021-06-27 | remove support for nonexistent prefixes | iximeow | |
2021-06-27 | PartialEq impls for data in instructiosn, and Instruction itself | iximeow | |
2021-06-27 | all tests now passing for long mode | iximeow | |
2021-06-27 | report memory sizes for all long-mode instructions | iximeow | |
2021-06-26 | awkward | iximeow | |
i really didnt know rust could do this | |||
2021-06-26 | clean up avx2-related warnings | iximeow | |
2021-06-26 | add long-mode avx512 support, except for compressed displacements | iximeow | |
2021-06-12 | finish up long mode avx2 | iximeow | |
2021-06-11 | add extensive avx and initial avx2 tests, fix several bugs and missing ↵ | iximeow | |
instructions | |||
2021-06-11 | remove vex ops file, didnt mean to track that in the first place | iximeow | |
2021-05-31 | fix typo | iximeow | |
2021-05-16 | fix ShowContextual rendering error with stale data and operands, publish 0.2.20.2.2 | iximeow | |
2021-05-07 | remove dead OperandSpec variants | iximeow | |
2021-05-07 | update yaxpeax-arch to 0.0.5, fix interface breakages | iximeow | |
2021-03-22 | and clean up some warnings | iximeow | |
2021-03-22 | port long-mode decoder updates to protected-mode | iximeow | |
2021-03-21 | remove some forgotten println comments | iximeow | |
2021-03-21 | include memory sizes on inc/dec in C format | iximeow | |
2021-03-21 | make Opcode, Operand, and DecodeError non_exhaustive | iximeow | |
in the future these can and will change (new operands, new instructions) and i would prefer they not be major breaking changes. applications can ignore them and probably do undesired variants anyway. if you want to write a 1120-variant match, are you me? why would you do this | |||
2021-03-21 | in real programs, having read_operands inlined hurts performance! | iximeow | |
the in-repo benchmark got better with this inlined but it's probably better to leave it up to the compiler when finally stitching stuff together. i suspect that having read_operands inlined resulted in just too many live values, and the compiler was inspired to play hijinks that pipelined poorly. disas-bench shows a ~15% improvement from this change. | |||
2021-03-21 | fuzzing shows resetting operands is not beneficial | iximeow | |
2021-03-21 | fix potential successful decodes with Opcode::Invalid | iximeow | |
vmov* are.. somehow messed up too | |||
2021-03-21 | add tsxldtrk | iximeow | |
does intel know no bounds | |||
2021-03-21 | xed says setssbsy and saveprevssp are more permissive | iximeow | |
2021-03-21 | add missing vpmaxuw, remove nonsense avx mov | iximeow | |
2021-03-21 | complete CET support, add UINTR, add missing VORP{S,D}, other cleanup | iximeow | |
2021-03-21 | add waitpkg, clean up unused values, old comments | iximeow | |
2021-03-21 | add tdx | iximeow | |
decoder flag to come | |||
2021-03-21 | rewrite 0f-based instruction handling | iximeow | |
this is... a more significant rewrite than i expected yaxpeax-x86 to ever need. it turns out that capstone is extremely permissive about duplicative 66/f2/f3 prefixes to the point that the implemented prefex handling was unsalvageable. while this replaces the *0f* opcode tables, i haven't profiled these changes. it's possible this is a net improvement for single-byte opcodes, it could be a net loss. code size may be severely impacted. there is still work to do. but this in total gets very close to iced/xed/zydis parity, far more than before. also adds several small extensions, gfni, 3dnow, enqcmd, invpcid, some of cet, and a few missing avx instructions. | |||
2021-03-17 | support several new extensions, 3dnow, and nuance in invalid operands | iximeow | |
2021-03-14 | alternate display mode for c-style expressions | iximeow | |
2021-03-13 | split ffi crate to support distinct 16, 32, and 64-bit builds | iximeow | |
initial work to optionally discard any instruction printing support when using `-Z build-std` to fully remove .eh_frame, a stripped long_mode_no_fmt .so is 61kb! | |||
2021-01-15 | support xchg AX/reg0.1.5 | iximeow | |
2021-01-15 | small perf tweaks | iximeow | |
clearing reg_rrr and reg_mmm more efficiently is an extremely small win, but a win read_imm_signed generally should inline well and runs afoul of some heuristic. inlining gets about 8% improved throughput on the (unrealistic) in-repo benchmark it would be great to be able to avoid bounds checks somehow; it looks like they alone are another ~10% of decode time. i'm not sure how to pull that off while retaining the generic iterator parameter. might just not be possible. |