aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2026-04-19warnings, crc32 testiximeow
2026-04-19a few more straggler instructionsiximeow
2026-04-19the rest of sse?iximeow
2026-04-19substantially more sse coverageiximeow
2026-04-17TODO: 32/16, maskmov{q,dqu} memory access sizeiximeow
2026-04-17more precise about 0f0d prefetch/nopiximeow
2026-04-12check and support more 0fXX opcodesiximeow
2026-04-12sgdt/lidt/lgdt test fixesiximeow
2026-04-12test table management instructions ({l,s}{g,i,l}dt)iximeow
these instructions, it turns out, have fixed operand size based on CPU execution mode and regardless of prefixes. good to know!
2026-04-12many conditional instructions, jump, call, and start testing 0f opcodesiximeow
2026-03-29rip out the kvm bits into a standalone crateiximeow
2026-03-28full rangeiximeow
2026-03-28last few weird cases unsuitable for generic testingiximeow
2026-03-28handle instructions that read and write different parts of the same instructioniximeow
the motivating case is `xchg ah, al`, where both register writes independently "don't match" the overall register diff of the low 16 bits. the diff-checking code was too narrow: we really have to collect all allowed diffs on a register for an instruction and compare the actual diff to that unification. the implementation goes the other way though: compute the diff, and remove parts of the diff that are unaccounted for. if any diff remains, that is by definition unexpected and an error.
2026-03-28more behavior, the rest of two-byte instructions?iximeow
2026-03-27more accurate mov seg-to-gpr operand sizeiximeow
2026-03-27test infra for segment regs, push/pop small regsiximeow
2026-03-27push/pop for segment registers has implicit memory accessiximeow
2026-03-27div ops, mul ops, some otheriximeow
2026-03-19more instructions, figured out mul/imuliximeow
2026-03-09back at it with more instruction behaviors and carveoutsiximeow
2026-03-09separate: more implicit operand size bitsiximeow
2026-03-09stop relying on mmio for behavior validationiximeow
first, the vcpu is configured with 1G pages, which confound linux's gva->gpa translation done as part of instruction emulation. this means that we get bogus faults in perfectly valid virtual addresses that the hardware can use, but linux cannot. second, relying on mmio means every mmio-trapped instruction is actually testing yaxpeax-x86 semantics against linux x86 emulation. while this is interesting, it is not the goal of the tests. maybe some later day! finally, write_matches_reg() had an inappropriate mask for what bits can be written given a certain register size.
2026-03-02this might actually work omgggggiximeow
2026-03-02cleanup, document, etciximeow
2026-03-02ok, gdt works... (mem16:32 means 32-bit offset THEN 16-bit selector???)iximeow
2026-02-23set up an IDT, and try to use it, but just discover the GDT is actually brokeniximeow
also shrink the GDT to 256 entries because i really won't use 8k of them. this makes the GDT entries only 0x400 bytes but i still skip a page from gdt_addr() to idt_addr().
2026-02-23more expansive access behavior validation, start on implicit op listsiximeow
2026-02-23if tripped over a kvm bug i sweariximeow
2026-02-23cleanupiximeow
2026-02-23more reworking of vm and test harnessiximeow
2026-02-23lmao this rulesiximeow
2026-02-22correct push-immediate memory access sizeHEADno-gods-no-iximeow
2025-09-29fix broken capstone_bench stuff, might delete later, idkiximeow
2025-09-29annotation description test requires `fmt`iximeow
this was missed in typical testing because either tests run with all features, no features, or fmt. there wasn't a test entry for only std, which was broken.
2025-06-013dnow was still supported on K8, K10. 32-bit mode should learn about uarch ↵iximeow
tweaks too
2025-06-01expand isa feature selection to more bitsiximeow
this is backed by the new IsaSettings trait. the existing InstDecoders are unchanged, except that they implement this new trait. also add new `DecodeEverything` structs with `IsaSettings` impls that are unconditionally set to permit anything the decoder can be configured to conditionally accept or reject. in the process, add new `_3dnow` flag and stop accepting 3dnow instructions in uarch-specific decoder settings that would not have 3dnow instructions. update AMD microarchitectures and cross-ref chip directory
2024-06-24rename most operand variants, make them structy rather than tupleyiximeow
2024-06-23add additional `call` test casesiximeow
fix 32-bit 66-prefixed ff /2 call not having 16-bit operands fix momentary regression in rendering `call` instructions to string
2024-06-23InstructionTextBuffer is only present with alloc (new crate flag)iximeow
2024-06-22NoColorsSink has a decent name nowiximeow
2024-06-22extract reusable display bits into yaxpeax-arch, add a visitor fn to Operandiximeow
comes with deleting the body of impl Colorize for Operand, because we can reuse the normal operand formatting code
2024-06-21things compile again, add a few more caution signs around InstructionTextBufferiximeow
2024-06-20starting to get new DisplaySink stuff ready to extract...iximeow
2024-06-19better testing for alternate sinks, fix hex formatting bug....iximeow
2024-06-18enough infratructure to avoid bounds checks, at incredible user costiximeow
2024-06-16commit unshippable wildly unsafe asm-filled printing codeiximeow
write_2 will never actually be used, but im adapting it into contextualize in a... better way
2024-04-02display opt: mem size labels and minor segment reporting changesiximeow
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-16fix hreset being disassembled as having second operand of "Nothing"iximeow
just report it having one operand...
2023-12-16fix incorrect register selection for `vpbroadcastm{b2q,w2d}` with `rex.b` setiximeow