Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Remove debugging output which was never meant to be checked in.
|
|
- Correct the building on the disassembler decision tree.
- Handle SSE instructions with F2 prefix (\332) correctly.
- Mark instructions which are now used as prefixes with ND.
(In a future version when we have better CPU version handling,
we should probably build the decision tree at runtime based on
the selected CPU feature sets.)
- Sanitize the handling of \144-147 and \154-157 in both the assembler
and disassembler. They take an opcode byte as argument; don't
pretend they don't.
|
|
"Stealth whitespace" makes it harder to read diffs, and just generally
cause unwanted weirdness. Do a source-wide pass to get rid of it.
|
|
3Dnow! prefixes cannot be disambiguated via pointer chasing, since
the third byte of the opcode field follows the EA.
|
|
|
|
Implement Centaur's XCRYPT instruction (RFE 825529)
|
|
0FC2 is not really an instruction prefix; it's the opcode for
CMPPS/CMPSS, which takes a control immediate which Intel chose to have
opcode aliases for. However, we can't dispatch on a tail byte, so
it's useless.
|
|
Modify the disassembler so that we can have separate instruction
tables for prefixed instructions. As it was, all instructions which
started with 0F were linearly searched, and that is by now more than
half the instruction set.
|
|
Support for the SSE5 instruction format in the disassembler.
Also adds some comments to insnsd.c for easier debugging.
|
|
This checkin completes what is required to actually generate SSE5
instructions. No support in the disassembler yet.
This checkin covers:
- Support for actually generating DREX prefixes.
- Support for matching operand "operand X must match Y"
|
|
For SSE5, we will need to support four arguments per instruction.
|
|
Support r/m operands for non-integer operands types, i.e. mmx or xmm
operands. This allows mmx and xmm operands to be written more
compactly, speeding up the assembler.
|
|
We have a lot of enumerations; by declaring fields as such, we make it
easier when debugging, since the debugger can display the enumerations
in cleartext. However, make sure exceptional values (like -1) are
included in the enumeration, since the compiler otherwise may not
include it in the valid range of the enumeration.
|
|
When we're dealing with a field which is guaranteed to have an enum type,
then declare it as such so it shows up in debuggers.
|
|
Make the big instruction arrays "const", so they end up in readonly
storage. While we're at it, move their prototypes into insns.h.
|
|
Use an actual named enum for the opcode, that way it shows up in
cleartext while debugging.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|