Commit Graph

463 Commits

Author SHA1 Message Date
kobalicek
80098456b6 Improved CI and enhanced project cosmetics (proper license header and include guards) 2020-05-03 20:06:27 +02:00
kobalicek
39f19e1a8f [Bug] Fixed #285 and #241 2020-05-02 17:56:22 +02:00
kobalicek
fc7eed5304 Build improvements (improved CMakeLists.txt, added proper support for testing) 2020-05-01 12:50:08 +02:00
kobalicek
9057aa30b6 Improved AsmJit public API to not depend on <windows.h> header 2020-04-29 20:19:17 +02:00
kobalicek
13367b59c2 Removed union{} from asmjit::Operand so it never causes problems with constexpr 2020-04-28 22:23:26 +02:00
kobalicek
d241dfb364 Fixed some compile-time warnings 2020-04-14 22:37:16 +02:00
kobalicek
bbc31a91ea [Bug] Fixed #281 2020-04-13 22:24:06 +02:00
kobalicek
304bf43a23 Fixed few warnings 2020-04-13 21:45:55 +02:00
kobalicek
1491d5f2ea [Bug] Fixed encoding of special case 'test al, XXX' being wrongly used with 'ah' operand 2020-03-16 15:17:02 +01:00
kobalicek
0b2e81ca74 [Bug] Fixed wait/fwait instruction (generate 9B instead of invalid DB) 2020-03-16 12:39:42 +01:00
kobalicek
7687cc6395 [Bug] Fixed 'lock xadd [mem, reg]' instruction 2020-03-06 21:06:09 +01:00
kobalicek
0072c202db Added support for BND/REPNE call/jmp/jcc/ret 2020-02-23 22:51:53 +01:00
kobalicek
967dde0fc4 Use relative displacement in mov [abs], ax if base-address is known and the displacement encodable (#275) 2020-02-23 00:05:36 +01:00
kobalicek
8e1eb4f5dc Added begin()/end() + operator[] to CodeBuffer 2020-02-14 00:09:11 +01:00
kobalicek
0ee535519c Added bswap r16 instruction, which has undefined behavior, but is encodable 2020-02-08 10:14:56 +01:00
kobalicek
c92e495b63 Added .editorconfig 2020-02-08 10:13:44 +01:00
kobalicek
5437d20dbb Added support for MAP_JIT (OSX, IOS), build system and CI improvements 2020-01-26 01:58:00 +01:00
Dmitry Opokin
7e164e3ede [Bug] Fixed bug in VirtMem::releaseDualMapping() not releasing it properly (#270) 2020-01-15 08:53:58 +01:00
kobalicek
5944428b4e [Bug] Fixed FreeBSD compilation issue (Issue #268) 2020-01-10 09:46:45 +01:00
kobalicek
911a9a50a2 Minor cleanup 2020-01-01 15:36:16 +01:00
kobalicek
baa79895c8 [Bug] Fixed wrong opcode generated by mov [mem], sreg (Possibly bug #266) 2019-12-27 18:37:56 +01:00
kobalicek
eea0a22b3b Hash table update 2019-12-24 15:57:59 +01:00
kobalicek
ac77dfcd75 Minor changes + fixed x86::Mem constructors to always be explicit 2019-10-25 09:40:26 +02:00
kobalicek
019811d1f0 Added missing vpermpd & vpermps (AVX512) and changed how EVEX prefix is propagated in x86::Assembler 2019-10-05 12:57:22 +02:00
kobalicek
7525ff08d7 [Bug] Fixed encoding and information of vpbroadcast[b|w|d|q] instructions 2019-10-03 20:02:55 +02:00
kobalicek
17556b2d49 [Bug] Fixed wrong encoding of vpdpbusd, vgf2p8mulb, vgf2p8affineqb, and vgf2p8affineinvqb instructions with memory operand 2019-10-01 00:17:14 +02:00
ζeh Matt
238243530a Add X86Test_FuncCallRefArgs (#254) 2019-09-03 20:56:56 +02:00
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