aboutsummaryrefslogtreecommitdiff
path: root/src/protected_mode/mod.rs
AgeCommit message (Collapse)Author
30 hoursfix jrcxz/jecxz/jcxz having "two operands"iximeow
2 dayspush/pop width in 16/32-bit modes are receptive to operand width prefixiximeow
2 daysand some prefix helpers should be pubiximeow
2 daysj*cxz/pusha/popa alternate size formsiximeow
these all existed since forever but the library did not distinguish them and did not provide prefix information for users to tell which had been decoded.
3 daysadapt long-mode behavior support to protected mode and real modeiximeow
along the way, fix an error: maskmov is memory read-write. additionally, operand information about {push,pop}a{,d}.
3 daysgpr register size in real/protected modeiximeow
3 daysdisallow 66-prefixed sha1rnds4iximeow
3 dayspusha/popa/push-imm memory sizesiximeow
3 dayshelpers to create cr0-cr7iximeow
3 daysworking through a bunch of avx512 stuff, regspec constructors are constiximeow
3 dayspextr*/extractpsiximeow
3 daysreport memory access size for "monitor"iximeow
3 daysmaskmov{q,dqu} memory access sizeiximeow
3 daysmore precise about 0f0d prefetch/nopiximeow
3 daysfix table management instructions' ({l,s}{g,i,l}dt) mem_sizeiximeow
these instructions, it turns out, have fixed operand size based on CPU execution mode and regardless of prefixes. good to know!
3 daysmore accurate mov seg-to-gpr operand sizeiximeow
3 dayspush/pop for segment registers has implicit memory accessiximeow
3 dayspushf, popf, enter, leave, xlat all have implicit memory accessiximeow
also add "is_masked" to operand spec
3 daysadd initial stats for disasm stats in all modesiximeow
2026-02-14type aliases make some of these signatures less egregious..iximeow
2025-06-01describe the per-isa extensions a bit betteriximeow
2025-06-01revise_instruction is the same on all bitnesses, so macro it tooiximeow
2025-06-01DecodeEverything wasn't useful, no better than InstDecoder::default()??iximeow
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-23remove selects_cs(), cs() now does the right thingiximeow
2024-06-23fix several sources of dead code warnings in various crate configsiximeow
2024-06-23remove yaxpeax-x86 safer_unchecked.rs, it is now in yaxpeax-archiximeow
2024-06-23cfg_attr wants feature, not features pluraliximeow
2024-06-23InstructionTextBuffer for all three modes, adjust fuzzer to matchiximeow
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-23fix inlining attributes re. profiling flag in protected_modeiximeow
2024-06-23adapt the rest of formating changes to protected_modeiximeow
2024-06-23fix AbsoluteFarAddress being tagged as a memory operandiximeow
2024-06-23adapt OperandVisitor to protected mode tooiximeow
2024-06-23actually use new can_lock in 32b and 16b modesiximeow
2024-06-23port opcode helpers and reordering to 32-bit and 16-bit decodersiximeow
2024-06-23add more conditional inlining for 32-bit and 16-bit decodersiximeow
2023-12-16fix hreset being disassembled as having second operand of "Nothing"iximeow
just report it having one operand...
2023-07-24fix handling of lar/lsl source registeriximeow
2023-07-23fix + better test cvttsd2si+cvtsd2si (misdecode under 64-bit)iximeow
2023-07-16unify 64-/32-bit moreiximeow
2023-07-16forward changes along to 32-bit decoder...iximeow
2023-03-05add `Opcode::is_jcc`, `Opcode::is_setcc`, and `Opcode::is_cmovcc` helpersiximeow
this request/suggestion comes from [github](https://github.com/iximeow/yaxpeax-x86/issues/29)! thank you!
2023-02-19deprecate `pub fn cs`, which is an intensely embarrassing bug of a functioniximeow
unlike every other function to test if a particular selector is picked by prefixes, `Prefixes::cs` does not return bool, nor does it check the currently-selected prefix. instead, it modifies the decoded `Prefixes` to set the current prefix to `cs`. this has been a bug all the way since 0.0.1 was released. the function now does nothing, and is marked deprecated. in a future 2.x release, the function will be changed to return `bool` and be in-line with other segment selector-checking functions. in the mean time, a new `Prefixes::selects_cs()` does the correct thing. thank you to @meithecatte who pointed this out in https://github.com/iximeow/yaxpeax-x86/issues/28!
2022-12-03roll up decoding loop changes for 16-bit and 32-bit decodersiximeow
this applies * f338c74656f6eef8b3080fa9f249b1cb733fd1a9 * bece19e6a69b158893abbf56a6cac25eb25d9a32 * 6353f58170d28a142e3b012c2c86f684d50dea45 * 67be1c0983244645a3c762b7aa0601f0d0ba4bb3 * 091f1d66ef853d6339a96e43d71c137ee7d3907a as one unit to both the 16-bit and 32-bit decoders.
2022-12-03apply e7f49509 to 16-bit and 32-bit decodersiximeow
2022-12-03apply 2444de11 to 16-bit and 32-bit decodersiximeow
these don't need the extra `rex`-supporting index space, so they don't have it.
2022-09-23Fix some typos.Bruce Mitchener
2022-04-30support 0x9a callf in 16/32-bit modesiximeow