commit | d700f6c3573e0a2fda1511c36b60e86245278735 | [log] [tgz] |
---|---|---|
author | Wunkolo <Wunkolo@gmail.com> | Wed Mar 22 12:54:30 2023 -0700 |
committer | Wunkolo <Wunkolo@gmail.com> | Wed Mar 22 17:40:34 2023 -0700 |
tree | 5b20886455e0529ca322697d54018d419545bc19 | |
parent | 740dff2e866f3ae1a70dd42d6e8836847ed95cc2 [diff] |
add detection of xsave The XSAVE cpuid flag determines if the processor supports the XSAVE instructions(`xsave`, `xrestor`, `xsetbv`, `xgetbv`). The OSXSAVE cpuid flag determines if the _operating system_ has XSAVE **enabled**. Userland code has to use OSXSAVE for features such as AVX and AVX512 but it still matters to know if the processor itself supports it but not the operating system such as some virtual-machine contexts.
A C++ JIT assembler for x86 (IA32), x64 (AMD64, x86-64)
Xbyak is a C++ header library that enables dynamically to assemble x86(IA32), x64(AMD64, x86-64) mnemonic.
The pronunciation of Xbyak is kəi-bja-k
. It is named from a Japanese word 開闢, which means the beginning of the world.
Note: Use and_()
, or_()
, ... instead of and()
, or()
. If you want to use them, then specify -fno-operator-names
option to gcc/clang.
ptr[(void*)0xffffffff]
causes an error.XBYAK_OLD_DISP_CHECK
if you need an old check, but the option will be remoevd.jmp(mem, T_FAR)
, call(mem, T_FAR)
retf()
for far absolute indirect jump.push(byte, imm)
(resp. push(word, imm)
) forces to cast imm
to 8(resp. 16) bit.#include <winsock2.h>
has been removed from xbyak.h, so add it explicitly if you need it.XBYAK_USE_MMAP_ALLOCATOR
will be defined on Linux/macOS unless XBYAK_DONT_USE_MMAP_ALLOCATOR
is defined.Almost C++03 or later compilers for x86/x64 such as Visual Studio, g++, clang++, Intel C++ compiler and g++ on mingw/cygwin.
GitHub | Website (Japanese) | herumi@nifty.com