flobernd
5a90a4d628
Removed `ZYDIS_INLINE` attribute from all exported `ZydisString*` functions
2018-02-26 23:12:57 +01:00
flobernd
0e60679470
Minor changes to the internal formatter logic
...
- `ZYDIS_FORMATTER_HOOK_PRINT_MEMSIZE` is now directly invoked by `ZYDIS_FORMATTER_HOOK_FORMAT_OPERAND_MEM`
2018-02-26 13:13:11 +01:00
flobernd
1483f854f2
Cosmetical fixes
2018-02-24 23:45:31 +01:00
flobernd
63f5b2f680
Minor refactorings
...
- Register enum is now auto generated
- Cosmetical changes
2018-02-24 20:59:35 +01:00
flobernd
c6b3c5d242
Changed type of implicit memory operands to `ZYDIS_MEMOP_TYPE_MEM` instead of `ZYDIS_MEMOP_TYPE_INVALID`
2018-02-23 03:44:06 +01:00
flobernd
6a8825ead2
Renamed some string-functions to match the existing naming convention (`ZydisString*`)
2018-02-23 02:23:45 +01:00
flobernd
098b37d6e7
Fixed some operand definitions
...
- Changed destination operand action of `PEXT`, `PDEP` and `ANDN` from read/write to write-only
2018-02-22 16:01:39 +01:00
flobernd
2cd7018b5b
Added `MONITORX`, `MWAITX` and `ENCLV` instructions
2018-02-19 18:59:33 +01:00
flobernd
05aba7a445
Minor bugfixes
2018-02-08 01:48:37 +01:00
flobernd
bbb864561d
More formatter changes
...
- Added `ZydisFormatterFormatOperand` and `ZydisFormatterFormatOperandEx` (this won't print AVX-512/KNC decorators)
- User defined callbacks should return `ZYDIS_STATUS_SKIP_OPERAND` to omit an operand (returning `ZYDIS_STATUS_SUCCESS` without writing to the buffer is now deprecated)
2018-02-06 19:35:54 +01:00
flobernd
4e189721b2
Minor changes to the operand formatter hooks
...
`ZYDIS_FORMATTER_HOOK_PRE_OPERAND` and `ZYDIS_FORMATTER_HOOK_POST_OPERAND` can be used to omit a specific operand, if you return a status-code different to `ZYDIS_STATUS_SUCCESS`.
2018-02-05 23:49:50 +01:00
flobernd
ca9898fa42
Omitting an operand by using formatter hooks will now correctly omit the semicolon as well
2018-02-05 23:34:54 +01:00
flobernd
74ef4ac22e
Fixed detection of bad gather registers in non 64-bit mode
2018-01-27 21:57:16 +01:00
flobernd
1f1be9fa21
Fixed non 64-bit mode mask-register error condition
2018-01-27 17:48:20 +01:00
flobernd
36f9172dad
Fixed some instruction definitions
2018-01-27 17:34:44 +01:00
flobernd
8c5e216e11
Fixed a bug in `ZydisRegisterGetClass`
...
resolves #29
2018-01-25 22:00:29 +01:00
flobernd
67e04ec52f
Updated license and version-info
2018-01-19 02:38:18 +01:00
flobernd
9a43872b90
Fixed operand size of some conditional jump instructions
2018-01-19 02:36:46 +01:00
flobernd
61f607e1df
Minor optimizations and bugfixes
...
- Fixed `XCHG R8, RAX` falsely beeing decoded as `NOP`
- Fixed `EVEX/MVEX.R'` not beeing ignored in 16- and 32-bit mode
- Removed some unnecessary conditions from operand-action related code
2018-01-17 00:31:32 +01:00
flobernd
7074e363f0
Fixed formatting of memory operands with explicit segment register
2018-01-14 18:49:56 +01:00
flobernd
57ccc70415
Optimized detection of bad register values
2018-01-11 22:30:23 +01:00
flobernd
9c71771875
Added missing `LOCK` prefix check for `3DNOW` encoded instructions
2018-01-11 02:39:43 +01:00
flobernd
7fb7eea11f
Bugfixes and table changes
...
- Fixed `SSE4A` ISA-set and ISA-ext
- Added missing `VEX`-encoded `GFNI` instructions
- Added check for invalid `GATHER`/`SCATTER` registers
2018-01-11 02:17:17 +01:00
flobernd
203dee3bfb
Bugfixes and table changes
...
- Fixed decoding of `XOP` instructions
- Fixed handling of illegal `LOCK` prefixes for `XOP/VEX/EVEX/MVEX` instructions
- Significantly improved detection of bad register values
- Added SSE4a instructions (`EXTRQ`, `INSERTQ`, `MOVNTSD` and `MOVNTSS`)
- Added `VPOPCNTD`/`VPOPCNTQ` instructions with 128- and 256-bit vector-length
- Fixed exception-class of some `GFNI` instructions
- Fixed `RDRAND` and `RDSEED` instructions
- Fixed `SYSRET` instruction
2018-01-10 23:04:57 +01:00
flobernd
fb519fe933
Internal refactorings and performance optimizations
2018-01-10 17:02:11 +01:00
flobernd
585fa7035a
Minor refactorings
2017-12-31 17:27:59 +01:00
flobernd
38c99667c4
Minor table changes
...
- Fixed `LWPINS` and `LWPVAL` instructions
- Added `PCONFIG` instruction
2017-12-20 23:36:59 +01:00
flobernd
f8369ac13c
Minor table fixes
...
- Changed `XSAVE`/`XSAVEOPT` memory operand from W to RW
- Changed amount of bytes popped from stack by the `IRET` instruction
2017-12-20 09:56:51 +01:00
flobernd
e4f9054c97
Changed size of `AVX2`-gather memory operands to match `AVX512`
...
The operand-size is now the size of a single element instead of the total size (like it already is for the `AVX512` gather/scatter instructions)
2017-12-10 10:44:59 +01:00
Joel Höner
82f72cf5a1
Fix register strings
2017-12-04 00:37:32 +01:00
Joel Höner
31c369d3f1
Merge branch 'feature/zydis-string' into develop
...
# Conflicts:
# include/Zydis/Formatter.h
# src/Formatter.c
2017-12-03 22:47:01 +01:00
flobernd
dff821402b
Refactored `ZydisFormatter`
...
- Added `ZYDIS_FORMATTER_HOOK_PRE_OPERAND`, `ZYDIS_FORMATTER_HOOK_POST_OPERAND` and `ZYDIS_FORMATTER_HOOK_PRINT_REGISTER`
- Renamed `ZYDIS_FORMATTER_HOOK_PRINT_DISPLACEMENT` to `ZYDIS_FORMATTER_HOOK_PRINT_DISP`
- Renamed `ZYDIS_FORMATTER_HOOK_PRINT_IMMEDIATE` to `ZYDIS_FORMATTER_HOOK_PRINT_IMM`
- Renamed `ZYDIS_FORMATTER_HOOK_PRINT_OPERANDSIZE` to `ZYDIS_FORMATTER_HOOK_PRINT_MEMSIZE`
- Removed `ZYDIS_FORMATTER_HOOK_PRINT_SEGMENT`
- Renamed some enums and types
- Revised documentation
- Fixed examples and tools
2017-12-03 22:38:20 +01:00
flobernd
451d7fb1a8
Fixed and refactored some enums
...
- Fixed `ZydisRegister` enum and string-table
- Renamed `ZYDIS_XXX_MAX_BITS` in `ZYDIS_XXX_MIN_BITS`
2017-12-03 22:38:20 +01:00
flobernd
043b1f5a5a
Minor improvements to the instruction-formatter
...
- Added zero-termination for the output string of `ZydisFormatterFormatInstruction` / `ZydisFormatterFormatInstructionEx` in error cases
- Renamed some internal functions
2017-12-03 22:38:20 +01:00
flobernd
1d6c296c5f
Renamed `ZydisStringAppendStaticEx` to `ZydisStringAppendExStatic`
2017-12-03 22:38:20 +01:00
flobernd
39facdf5fe
Reworked `ZydisString`
2017-12-03 22:38:20 +01:00
Joel Höner
346b7fec10
Moved internal headers
2017-12-03 22:38:20 +01:00
flobernd
07c325b367
Minor bugfixes
2017-12-03 22:38:20 +01:00
flobernd
a1d58c9ee7
Replaced `ZYDIS_FORMATTER_HOOK_PRINT_OPERAND_SEPARATOR` by `ZYDIS_FORMATTER_HOOK_PRE_OPERAND`/`ZYDIS_FORMATTER_HOOK_POST_OPERAND`
2017-12-02 19:42:30 +01:00
th0rex
022a4e7423
Add hook for operand seperator to formatter
2017-12-02 18:29:16 +01:00
flobernd
217d5cc9af
Minor refactorings and bugfixes
2017-12-02 06:54:47 +01:00
flobernd
71b21c4301
Renamed `ZydisInternalString` to `ZydisGeneratedString`
2017-12-02 06:40:40 +01:00
flobernd
02030c3b92
Various changes and refactorings
...
- Moved types and functions from `FormatHelper.h/c` to `String.h/c`
- Added `ZydisMnemonicGetStringEx` function that returns the mnemonic-string as `ZydisString` struct
- Added `ZYDIS_UNUSED_PARAMETER` macro
- Fixed omitting of operands in custom formatter-hooks
- Fixed `FormatterHooks` example
- Refactored some code
2017-12-02 06:36:12 +01:00
Joel Höner
fa12ccb64b
Switch to length aware string
2017-12-01 20:40:56 +01:00
flobernd
930c4df970
Removed `ZydisDecodedInstruction.instrPointer`
...
The instruction-pointer was always pointing to the next instruction (which is inconsistent for branch instructions). We can't always tell IF an instruction is going to branch (for the conditional ones), so we decided to completely remove it.
You can always manually combine `instrAddress` and `length` to calculate this value.
2017-12-01 20:21:25 +01:00
flobernd
1cd788f751
Minor table fixes
2017-12-01 01:18:25 +01:00
Joel Höner
58ce3a3e7f
Removed forgotten stdint.h include
2017-11-30 08:03:34 +01:00
flobernd
beeaa0e279
Added additional check for invalid AVX-512 zero masks
2017-11-29 22:47:09 +01:00
flobernd
6d690a4893
Improved file-size reduction for builds without `ZYDIS_FEATURE_EVEX`/`ZYDIS_FEATURE_MVEX`
2017-11-27 13:42:24 +01:00
Joel Höner
a2cc8615ba
Various minor no-libc fixes
2017-11-27 00:06:09 +01:00