Commit Graph

319 Commits

Author SHA1 Message Date
kobalicek 168f2c17bf Don't mark BaseBuilder::dump() as ASMJIT_API 2020-06-06 22:32:56 +02:00
kobalicek 0e04695f64 Fixed broken CI 2020-06-01 12:18:01 +02:00
kobalicek b73830c291 Fixed some mistakes introduced in the previous commit 2020-06-01 10:04:18 +02:00
kobalicek f986f7fc44 AsmJit cleanup and refactoring 2020-05-31 23:39:13 +02:00
kobalicek e78bba83da Added a support for indirect jumps within a function (Compiler) (#286) 2020-05-09 01:00:18 +02:00
kobalicek 80645e66a8 Improved natvis support 2020-05-03 22:38:56 +02:00
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