aboutsummaryrefslogtreecommitdiff
path: root/src/real_mode
AgeCommit message (Collapse)Author
13 daysdocument one more stray unsafeiximeow
13 daysjustify the current max instruction lengthiximeow
this is also checked by a new fuzz target
13 daysconsistently enter register/number/opcode spansiximeow
13 daysrename most operand variants, make them structy rather than tupleyiximeow
13 daysremove selects_cs(), cs() now does the right thingiximeow
13 daysfix several sources of dead code warnings in various crate configsiximeow
14 daysremove yaxpeax-x86 safer_unchecked.rs, it is now in yaxpeax-archiximeow
14 dayscfg_attr wants feature, not features pluraliximeow
14 dayslast vestiges of initial perf experimentsiximeow
14 daysanother fuzz bugiximeow
14 daysfuzz caught negation bugiximeow
14 daysInstructionTextBuffer for all three modes, adjust fuzzer to matchiximeow
14 daysadd 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
14 daysforward long deprecation allowances as appropriateiximeow
14 daysadapt protected-mode display to real modeiximeow
14 daysnormalize imports, pull safer_unchecked from yaxpeax-archiximeow
14 daysadapt OperandVisitor and related to real_modeiximeow
14 daysfix AbsoluteFarAddress being tagged as a memory operandiximeow
14 daysactually use new can_lock in 32b and 16b modesiximeow
14 daysactually use new can_rep in 32b and 16b modesiximeow
14 daysport opcode helpers and reordering to 32-bit and 16-bit decodersiximeow
14 daysadd more conditional inlining for 32-bit and 16-bit decodersiximeow
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-07-24fix handling of lar/lsl source registeriximeow
2023-07-23fix inconsistently-poreted memory access size of vcvt{,t}{sd,si}iximeow
2023-07-23fix + better test cvttsd2si+cvtsd2si (misdecode under 64-bit)iximeow
2023-07-16forward changes along to 16-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
2022-04-24fix a few issues preventing no-std builds from ... buildingiximeow
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-12fuzz DisplayStyle::C and fix corresponding issues1.1.4iximeow
2022-01-02fix incorrect decoder used in docs testiximeow
2022-01-02Wrap unsafe functions to catch errors in debug5225225
Closes https://github.com/iximeow/yaxpeax-x86/issues/16
2021-12-19fix incorrect memory size for f30f1e-style nopiximeow
not only did the instruction have wrong data, but if displayed, the formatter would panic.
2021-12-19test that invalid RegSpec constructions panic as expectediximeow
in the process, fix 64-bit rex-byte limit, 32/16-bit mode mask reg limit
2021-12-17write `apply_disp_scale` in a mode-agnostic wayiximeow
`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-16displacements are stored as unsigned, but are functionally signed intsiximeow
so multiplying to expand EVEX compressed offsets can overflow, and that needs to be okay.
2021-10-10support endbr{32,64}iximeow
2021-10-10consistentify doc styleiximeow
2021-10-10export `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-22bump to yaxpeax-arch 0.2.7 and proper field description support1.1.0iximeow
2021-08-22add 16/32-bit opcode/operand boundary desc, consistentify memory descriptionsiximeow
2021-08-21add `AnnotatingDecoder` note to CHANGELOG and publicize descriptionsiximeow
2021-08-21improve relative branch offset formatting for DisplayStyle::Ciximeow