Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
opcode data tables made consistent. apologies for the mem::transmutes,
that's to avoid an extra load and strongly guide the compiler towards
doing a u16 load.
also fix issue where byte iter was a ref to a ref, and other small
changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fix issue where non-relevant prefixes on 0f opcodes may cause incorrect invalid decodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
through everything
|
|
|
|
also decode operands for 0xcc and cmp al, imm8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* DisplacementI32 was never used, DisplacementU64 added to distinguish 8
and 4 byte addresses
* Added setCC instructions
* Fix sign extension bug for displacement as interpreted by E operands
* Add operand code support for a0,a1,a2,a3 movs
* Add operand code support for Ivs, Ibs
* Complete support for 0x81
* Clean up tests
|
|
|
|
|
|
(this nets another 15% runtime improvement)
|
|
inlining is really weird here... it seems like some inlining threshold is reached and everything goes sideways - this commit causes a 33% regression from de-trait-objecting and then a 25% improvement from inline hints
overall it seems performance should be better than it is, but codegen seems subpar. see read_imm_signed and friends
|