Commit Graph

  • 01e1587c5c decode: Move prefix before other opcode extensions Alexis Engelke 2020-11-08 10:27:03 +01:00
  • 2e7e396325 decode: Remove TABLE_PREFIX_REP and use NFx prefix Alexis Engelke 2020-11-08 10:03:18 +01:00
  • 69ce124354 encode: Add library for x86-64 encoding Alexis Engelke 2020-06-24 11:20:50 +02:00
  • 4e95c8d152 instrs: Several operand size and AVX-related fixes Alexis Engelke 2020-07-05 14:53:54 +02:00
  • 9d7aeb2b61 instrs: Replace LIG attribute with LIG specifier Alexis Engelke 2020-07-04 18:54:32 +02:00
  • 468eeaa249 parseinstrs: Create a separate class for parsed opcode Alexis Engelke 2020-07-04 18:33:59 +02:00
  • 9b6caeb2ae parseinstrs: Write mnemonics to separate file Alexis Engelke 2020-07-04 14:35:51 +02:00
  • dc668691d8 instrs: Specify segment register size Alexis Engelke 2020-07-04 08:52:08 +02:00
  • 0da46cba98 instrs: Add missing VEXLIG for compares Alexis Engelke 2020-07-02 09:48:54 +02:00
  • c9333ac2c9 instrs: Enforce memory for VSIB encodings Alexis Engelke 2020-07-02 09:47:55 +02:00
  • 141680e77c instrs: Remove MUSTMEM, encode in operands Alexis Engelke 2020-07-02 09:31:33 +02:00
  • da4ad137d8 instrs: Remove redundant IMM_8 Alexis Engelke 2020-07-02 08:58:35 +02:00
  • 854082a156 instrs: Remove invalid SIZE_8 markers Alexis Engelke 2020-07-02 08:39:51 +02:00
  • 7ee9320840 decode: Add second fixed operand size Alexis Engelke 2020-06-30 21:42:31 +02:00
  • 08490d4503 parseinstrs: Simplify opkind lookup Alexis Engelke 2020-06-30 21:02:31 +02:00
  • e7b5982ba9 tests/decode: Add CRC32 and MOVBE test cases Alexis Engelke 2020-06-27 18:56:38 +02:00
  • ab27ea6338 tests/decode: Print architecture mode on failure Alexis Engelke 2020-06-27 18:56:27 +02:00
  • ceea786c7f tests/decode: Rewrite in C, speed-up is >100x Alexis Engelke 2020-06-27 17:31:07 +02:00
  • 9556d34a8a fadec: Deprecate address parameter of fd_decode Alexis Engelke 2020-06-27 18:45:51 +02:00
  • 7333453a19 instrs: Update several operand types and sizes Alexis Engelke 2020-06-27 17:58:03 +02:00
  • 3221a319d3 instrs: Don't use O-encoding hack for FSTSW Alexis Engelke 2020-06-25 21:00:14 +02:00
  • 1b5461036e decode: Don't walk escape opcodes in tables Alexis Engelke 2020-06-25 16:51:21 +02:00
  • 3ad518e22e decode: Store op types early and compact encoding Alexis Engelke 2020-06-24 08:41:30 +02:00
  • 5e1bb1871f decode: Check CR/DR/SEG reg count in ModRM decoder Alexis Engelke 2020-06-21 12:36:09 +02:00
  • 618d90ed42 instrs: Encode memory size for FPU instructions Alexis Engelke 2020-06-19 14:03:04 +02:00
  • bacfecfead fadec: Allow 64-bit decoding on 32-bit platforms Alexis Engelke 2020-06-19 13:58:53 +02:00
  • 8445060ad9 fadec: Make memory displacement 64-bit large Alexis Engelke 2020-06-19 10:06:22 +02:00
  • 55197817a7 decode: Remove several unneeded #ifdef's Alexis Engelke 2020-06-19 10:05:21 +02:00
  • 348d1aec4b decode: Minor refactoring for better performance Alexis Engelke 2020-06-19 09:41:26 +02:00
  • bb4b195dbe instrs/sse,avx: Fix several operand sizes Alexis Engelke 2020-06-18 19:07:09 +02:00
  • 807d8a817b decode: Change imm_control to get rid of imm_byte Alexis Engelke 2020-06-18 17:42:54 +02:00
  • ab5e0c67c1 decode: Don't fall back to memory encoding with 72-table Alexis Engelke 2020-06-17 20:18:26 +02:00
  • f978785df3 parseinstrs: Make TrieEntry always hashable Alexis Engelke 2020-06-17 18:36:18 +02:00
  • 93a61a0ff1 parseinstrs: Remove mnemonic from instr bitstruct Alexis Engelke 2020-06-17 17:16:53 +02:00
  • 38f52c98b5 parseinstrs: Store mnemonic enum entry in trie Alexis Engelke 2020-06-17 17:08:23 +02:00
  • af5b36a58e parseinstrs: Don't needlessly convert to bytes Alexis Engelke 2020-06-17 16:49:27 +02:00
  • f4b41a7e80 decode: Use uint16_t for trie Alexis Engelke 2020-06-17 16:42:07 +02:00
  • 1fedc069b6 parseinstrs: Propagate unpacked data for trie Alexis Engelke 2020-06-17 16:34:27 +02:00
  • 545ec30ad0 decode: Return partial error on incomplete opcode Alexis Engelke 2020-06-14 14:01:39 +02:00
  • 8716bd1991 format: Handle offset operands properly Alexis Engelke 2020-06-14 13:55:59 +02:00
  • 9454f5f746 travis: Remove Travis CI Alexis Engelke 2020-06-14 13:45:03 +02:00
  • d18b6bb3cf ci: Add CI via GitHub Actions aengelke 2020-06-14 13:43:26 +02:00
  • 80ec7ed960 instrs: Fix decoding of XCHG r8, rax Alexis Engelke 2020-06-14 13:34:47 +02:00
  • c3df15e19b api: Store index register in operand struct Alexis Engelke 2020-05-17 11:16:48 +02:00
  • 7a364fcada api: Drop unused internal FD_FLAG_REX Alexis Engelke 2020-05-17 11:14:52 +02:00
  • da4cbc237f parseinstr: Use typing.NamedTuple Alexis Engelke 2020-05-10 14:20:34 +02:00
  • afc574503f Decode jump targets as offset if address is NULL Alexis Engelke 2020-03-07 14:30:07 +01:00
  • dc286b14f2 Unify instruction mnemonics [API break] Alexis Engelke 2020-02-20 10:49:46 +01:00
  • 513a913feb decode: Store CL as register operand for shifts Alexis Engelke 2020-02-19 16:53:59 +01:00
  • e65086c76c parseinstr: Separate fields for operand properties Alexis Engelke 2020-02-12 17:08:10 +01:00
  • e59117538f parseinstr: Include mnemnonic in flag bitstruct Alexis Engelke 2020-02-12 09:44:36 +01:00
  • f538554bb9 Support various smaller instruction set extensions Alexis Engelke 2020-02-10 20:37:07 +01:00
  • bf5d0ef292 Improve decoding correctness in very rare cases Alexis Engelke 2020-02-10 20:36:02 +01:00
  • 8572c15973 Handle RVMR encodings correctly in 32-bit mode Alexis Engelke 2020-02-10 20:33:00 +01:00
  • f6a66ea4fb Use special root table for VEX Alexis Engelke 2020-02-10 20:29:05 +01:00
  • b376d0d0f8 parser: Use exceptions instead of assertions Alexis Engelke 2019-11-10 15:54:20 +01:00
  • e73dbb3eea Be more restrictive with VSIB encodings Alexis Engelke 2019-11-10 15:02:27 +01:00
  • e63fa88da4 Minor fixes (RETF, POPCNT, +PDEP, +PEXT) Alexis Engelke 2020-02-10 17:17:39 +01:00
  • 889a509a5e Update documentation for latest changes Alexis Engelke 2019-11-03 11:56:38 +01:00
  • 19b76c809e Add MMX and several other instructions Alexis Engelke 2019-11-03 11:56:24 +01:00
  • 2bf33017bc Reject invalid move to CS Alexis Engelke 2019-11-03 11:54:00 +01:00
  • dbfcf33c33 Add more precise error codes Alexis Engelke 2019-11-02 22:31:10 +01:00
  • 21c40c48d0 Fix compilation error Alexis Engelke 2019-11-02 22:18:27 +01:00
  • c5281e2f58 Add support for several small ISA extensions Alexis Engelke 2019-11-02 22:17:43 +01:00
  • 7e89bee1f0 Further memory operand annotations Alexis Engelke 2019-11-02 22:17:20 +01:00
  • dbf72dd282 Fix VEX+REX handling Alexis Engelke 2019-11-02 22:16:50 +01:00
  • a5a15258fd Fix another bug with REX prefix decoding Alexis Engelke 2019-11-02 21:54:39 +01:00
  • df4e2725d4 Annotate several more memory-only instructions Alexis Engelke 2019-11-02 21:50:02 +01:00
  • 92e104d411 Finally fix moves from/to CR/DR registers Alexis Engelke 2019-11-02 21:48:36 +01:00
  • 96ba1a1166 Verify more register indices Alexis Engelke 2019-11-02 21:47:28 +01:00
  • ab2d60da75 Reject invalid segment registers Alexis Engelke 2019-11-02 21:11:35 +01:00
  • e2026b572d Reject invalid VEX encodings Alexis Engelke 2019-11-02 21:08:34 +01:00
  • bd6c7ceebe Begin enforcing memory operand requirements Alexis Engelke 2019-11-02 19:21:29 +01:00
  • 32d65fbf19 Fix CR/DR move operand sizes Alexis Engelke 2019-11-02 19:20:26 +01:00
  • 194a7d6831 Add REP-prefix table Alexis Engelke 2019-11-02 19:01:23 +01:00
  • 7682541a00 Refactor opcode parsing Alexis Engelke 2019-11-02 19:00:46 +01:00
  • 21cea7ff23 Fix GETSEC prefix encoding Alexis Engelke 2019-11-02 19:00:11 +01:00
  • 5ba2859c7b Fix ADDSUBPS encoding Alexis Engelke 2019-11-02 17:53:21 +01:00
  • 194b99065e Add RSM instruction Alexis Engelke 2019-11-02 17:32:51 +01:00
  • e43ec050af Correctly handle mis-placed REX prefix Alexis Engelke 2019-11-02 17:32:40 +01:00
  • d728f8f4af Fix UD0 encoding Alexis Engelke 2019-11-02 17:10:22 +01:00
  • 8efc33ca4d Add LSS/LFS/LGS instructions Alexis Engelke 2019-11-02 17:10:04 +01:00
  • 8c51339c49 Add moves from/to control/debug registers Alexis Engelke 2019-11-02 17:09:41 +01:00
  • 9d6e357d54 Add INT1 Alexis Engelke 2019-11-02 17:09:22 +01:00
  • a2a28b7342 Fix immediate size for REX+66 combinations Alexis Engelke 2019-11-02 17:08:58 +01:00
  • 915c2296c1 Add support for far returns Alexis Engelke 2019-11-02 17:08:37 +01:00
  • c4a4df458d Be more restrictive about VEX prefix combinations Alexis Engelke 2019-11-02 15:53:00 +01:00
  • 5613adda25 Support decoding SS segment override prefix Alexis Engelke 2019-11-02 15:52:45 +01:00
  • 9987f47a50 meson: Fix warning about missing warning Alexis Engelke 2019-08-18 18:16:54 +02:00
  • c930fa03dc Make header compatible with C++ Alexis Engelke 2019-08-18 18:13:53 +02:00
  • bb3c7a4a4f Fix alignment warnings from Clang Alexis Engelke 2019-08-18 18:13:39 +02:00
  • 0f2681b138 Add some API description to README Alexis Engelke 2019-06-16 10:19:08 +02:00
  • 69ac42c11f Fix format.c for recent file name change Alexis Engelke 2019-06-16 10:18:41 +02:00
  • 69691c9605 Generate pkg-config file Alexis Engelke 2019-06-16 09:48:18 +02:00
  • 9bdb71e6aa Install library and header files Alexis Engelke 2019-06-16 09:46:31 +02:00
  • c59319b3bb Rename decode tables to fadec-decode-table.inc Alexis Engelke 2019-06-16 09:45:51 +02:00
  • 2933b0f106 Rename library to libfadec Alexis Engelke 2019-06-16 09:44:12 +02:00
  • 07709fcdd8 Fix operand ordering of MOV[LH]P[S] Alexis Engelke 2019-05-06 08:10:50 +02:00
  • fba31efff0 Add Travis CI file Alexis Engelke 2019-05-05 13:10:20 +02:00
  • 24b79f71b6 Add missing FPU instructions Alexis Engelke 2019-05-05 12:53:29 +02:00