Files
test-repo/README.md
2019-02-24 15:45:37 +01:00

1.4 KiB

libx86decode

A fast and lightweight decoder for x86 and x86-64. This is not a disassembler, it does not intend to produce valid assembly. To meet the goal of speed, lookup tables are used to map the opcode the (internal) description of the instruction encoding. This table currently has a size of roughly 21 kiB.

Known issues

  • An implicit FWAIT in FPU instructions is decoded as a separate instruction. For example, the instruction FINIT is decoded as an FWAIT followed by an FINIT where as FNINIT is decoded as a plain FINIT instruction.
  • The AVX VSIB encoding is not supported yet, all instructions using this will result in a decode error.
  • The EVEX prefix (AVX-512) is not supported (yet).
  • No ABI stability as the value associated with the mnemonics will change if further instructions are added. When using this library, please link it statically.
  • The instruction formatter does not include prefixes. (Help needed.)
  • The layout of entries in the tables can be improved to improve usage of caches. (Help needed.)
  • Low test coverage. (Help needed.)
  • No benchmarking has been performed yet. (Help needed.)
  • Prefixes for indirect jumps and calls are not properly decoded, e.g. notrack, bnd. This requires additional information on the prefix ordering, which is currently not decoded. (Analysis of performance impact and help needed.)

If you find any other issues, please report a bug. Or, even better, send a patch fixing the issue.