Commit Graph

286 Commits

Author SHA1 Message Date
kobalicek
7c8f3150d7 Cosmetic changes, made sbb write-only when used with the same register 2019-09-03 20:55:41 +02:00
ζeh Matt
a433d4b410 Add reference type support for function signatures (#253) 2019-08-20 19:29:00 +02:00
kobalicek
4da474ac9a Travis-CI update 2019-08-14 09:00:48 +02:00
kobalicek
763f5975d1 Fixed wrong VEX/EVEX broadcast calculation [Bug] 2019-08-14 08:58:51 +02:00
Jianyu Huang
3d510b3540 Downgraded CMake version requirement to 3.5 for better compatibility (#252) 2019-08-08 23:37:57 +02:00
kobalicek
5d9e960794 Fixed X86Internal::emitRegMove() to update the size of a memory operand when necessary 2019-08-05 23:54:50 +02:00
Petr Kobalicek
5d40561d14 Refactored register allocator asm Compiler. (#249)
Refactored build system macros (ASMJIT_BUILD_STATIC -> ASMJIT_STATIC)
Refactored AVX512 broadcast {1toN} - moved to operand from instruction.
Refactored naming - renamed getters to not use get prefix.
Refactored code structure - move arch-specific stuff into x86 namespace.
Refactored some compiler/arch-specific macros, respect rel/abs option in mov REG, [ADDR].
Refactored StringBuilder (Renamed to String, added small string optimization).
Refactored LabelId<->LabelEntry mapping, force label offset to 64-bits on all archs.
Renamed Runtime to Target (JitRuntime kept for now).
Renamed VirtMemManager to JitAllocator.
Renamed VirtMem to JitUtils.
Renamed FuncSignatureX to FuncSignatureBuilder.
Fixed xchg [mem], rex-lo, refactored RelocEntry.
Fixed Logger to always show abs|rel when formatting a memory operand
Fixed Logger to prefix HEX numbers with 0x prefix
Fixed Support::ctzGeneric to always return uint32_t, T doesn't matter.
Fixed LightCall to not save MMX and K registers
Fixed CpuInfo constructor to propagate NoInit (#243)
Added VAES, AVX512_VBMI2, AVX512_VNNI, and AVX512_BITALG cpu-features and instructions.
Added emscripten support (asmjit can be now compiled by emscripten).
Added asmjit.natvis for better MSVC experience
Added x86::ptr_abs|ptr_rel
Added support for multibyte nop r/m (#135)
Added support for 32-bit to 64-bit zero-extended addresses, improved validation of memory addresses, and removed wrt address type as this will be reworked
Added support for multiple sections, reworked address table support (previously known as trampolines)
Added the following x86 modifiers to the x86::Emitter - xacquire(), xrelease(), and k(kreg)
Added a possibility to use REP prefix with RET instruction
Added a possibility to relocate [rel addr] during relocate()
Added a variadic function-call support (Compiler), argument duplication (Compiler), better /dev/shm vs /tmp shared memory handling (VirtMem).
Removed imm_u imm_ptr helpers, imm() can now accept any integer and pointer.
Changed the default behavior of optimizing instructions to disabled with a possibility to enable that feature through kOptionOptimizedForSize
Use default copy construction / assignment to prevent new kind of warnings introduced by GCC 9
2019-07-16 01:24:22 +02:00
kobalicek
761130b1d8 README.md update 2019-05-23 20:36:17 +02:00
kobalicek
fc251c914e Only use -Wbool-operation when compiling with GCC 7+ 2019-03-20 09:44:11 +01:00
Nils Gladitz
02d24af4c0 Replace incorrect CMake CACHE variable type BOOLEAN with BOOL (#238) 2019-03-20 09:38:43 +01:00
kobalicek
1e550aa568 Updated Support section in README.md 2019-01-27 17:58:56 +01:00
kobalicek
f06b78fdf4 Added xacquire/xrelease/k(kreg) modifiers to X86Emitter (backported from next-wip) 2019-01-24 11:36:08 +01:00
svost
3092065f14 Fixed bug in instruction validation (#220) 2018-11-22 13:07:03 +01:00
kobalicek
e53ff4267b Fixed #199 2018-11-17 14:07:52 +01:00
kobalicek
868f8d2e27 Attempt to fix remaining issues (maintenance mode) 2018-11-17 13:45:39 +01:00
kobalicek
c2f50e6fc5 Incorporated changes from pull requests 187, 202, and 212 2018-11-17 05:43:49 +01:00
kobalicek
2194899168 Updated README.md - Incorporated some changes from PR190 and added a disclaimer about next-wip 2018-11-17 05:13:12 +01:00
kobalicek
771d66b301 Fixed #178 2018-11-07 02:56:49 +01:00
kobalicek
673dcefaa0 Fixed #188 2017-12-11 02:02:44 +01:00
Markus Theil
a3cd6fa26d fix installation of static library (#185)
Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
2017-11-27 14:15:08 +01:00
kobalicek
bf2130caac Updated LICENSE.md to be more friendly to the github license parser 2017-11-15 01:19:50 +01:00
Wenzel Jakob
92bd11f374 Added TypeIdOf<bool> partial overload to allow bool type in function signatures. 2017-11-08 00:16:29 +01:00
kobalicek
4d8a696e8e Fixed #184 2017-11-07 23:16:58 +01:00
kobalicek
29d72cc627 Temporarily disable linux/clang compiler on Travis (it's not compatible with libc++ provided by Travis) 2017-11-07 10:03:09 +01:00
kobalicek
4f66bee8b2 Fixed #182 2017-11-07 09:28:50 +01:00
fthielke
802c6a037f X86Assembler: bugfix in checking parameters of the outs instructions (#180) 2017-11-01 14:22:06 +01:00
kobalicek
082a395dfd Fixed a bug in Compiler when used with CodeInfo that doesn't specify any alignment 2017-10-28 23:14:07 +02:00
Michael Clark
9850643721 Remove unnecessary #include <sys/statvfs.h> (#175) 2017-08-15 16:36:12 +02:00
kobalicek
31066937fd Fixed 'enter x, y' bug 2017-08-08 20:16:37 +02:00
kobalicek
cec9f76fc7 Updated CxxProject 2017-08-08 20:15:41 +02:00
xantares
63d1c228d7 Install dll in /bin (#177) 2017-07-30 22:11:34 +02:00
Simon Rainer
1370fe6a26 Fixed typos in the Stack Management example (#172) 2017-05-08 15:17:13 +02:00
kobalicek
faf7e850bc Fixed LIKELY/UNLIKELY macros 2017-05-03 12:51:59 +02:00
kobalicek
ab59e3518f Added some simple test cases 2017-03-30 17:37:12 +02:00
Petr Kobalicek
3864b255e9 Fixed CPU detection of FMA3, fixed AVX/AVX2 flags of vpavgb and vpavgw instructions (asmdb update) 2017-03-25 18:58:11 +01:00
kobalicek
46daab98b1 [bug] Fixed incorrect code generated by setcc instruction when using GPB.HI reg 2017-03-21 12:16:08 +01:00
Michael R Fairhurst
81a78351b3 Fix ternary condition for 32/64 bit reg swaps (#164) 2017-03-21 10:22:40 +01:00
Michael R Fairhurst
6282179662 Go to next block group after return, so it gets a pass state (#163) 2017-03-16 20:05:09 +01:00
kobalicek
3f4bb2ba0e Fixed a bug introduced by a previous commit 2017-03-09 17:07:24 +01:00
kobalicek
e8a80ea958 Moved logic from x86inst.cpp to x86instimpl.cpp, moved some instruction methods to Inst from X86Inst, added Inst::checkFeatures() for retrieving which CPU features are required to run a given instruction, minor reorganization and asmdb update 2017-03-09 16:57:54 +01:00
kobalicek
0e80d2c3c3 [bug] Fixed special case of mov[abs] instruction 2017-03-07 13:59:06 +01:00
kobalicek
528951ab9a Minor, catch VSIB{rip+xxx} in x86 validator as well 2017-03-06 18:54:52 +01:00
kobalicek
35ba2ad83a Minor changes to cmake files 2017-03-04 20:37:42 +01:00
Víctor M. González
951c62e330 Named labels are printed with their name, instead of L#. (#160) 2017-03-04 17:02:31 +01:00
kobalicek
df7423d596 Fill sourceSectionId of reloc info properly 2017-02-27 20:25:37 +01:00
kobalicek
90c26db709 Added more memory addressing types to Mem operand 2017-02-27 17:12:28 +01:00
kobalicek
a808b44359 Minor logging changes 2017-02-26 12:33:05 +01:00
kobalicek
4a94223ebd Added new instructions + xacquire|xrelease prefixes, reorganized instruction options 2017-02-26 12:19:49 +01:00
kobalicek
f589e7165a Fixed encoding of 'CRC32 r64, r8/m8' instruction
Fixed encoding of 'POPCNT|TZCNT|LZCNT r16, r16/m16' instruction
Fixed encoding of EVEX instructions that don't provide VEX prefix equivalent
Added 'LOCK MOV CR8' extension used by AMD processors in 32-bit mode and 'ALTMOVCR8' CPU feature
Renamed some CPU features to respect their names used in X86/X64 architecture manuals
Added validation of immediate operands (correct size, correct sign/zero extension)
Added validation of explicit/implicit size of memory operands
Added validation of LOCK/REP/REPNZ prefixes to x86 validator
Reorganized some X86 instruction tables, removed family specific tables, introduced OperationData
Improved instruction tables generator to automatically generate instruction flags
Regenerated all instruction tables to respect the current state of 'asmdb.x86data'
2017-02-25 19:36:28 +01:00
kobalicek
aa154e3590 Added more instructions (System, MPX, AVX512_VPOPCNTDQ, AVX512_4FMAPS, AVX512_4VNNIW) 2017-02-21 01:55:07 +01:00