2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
# Xbyak 6.73 [![Badge Build]][Build Status]
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
*A C++ JIT assembler for x86 (IA32), x64 (AMD64, x86-64)*
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
## Menu
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
- [Install]
- [Usage]
- [Changelog]
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
## Abstract
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
Xbyak is a C++ header library that enables dynamically to assemble x86(IA32), x64(AMD64, x86-64) mnemonic.
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
The pronunciation of Xbyak is `kəi-bja-k` .
It is named from a Japanese word [開闢 ](https://translate.google.com/?hl=ja&sl=ja&tl=en&text=%E9%96%8B%E9%97%A2&op=translate ), which means the beginning of the world.
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
## Feature
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
- header file only
- Intel/MASM like syntax
- fully support AVX-512
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
**Note**:
Use `and_()` , `or_()` , ... instead of `and()` , `or()` .
If you want to use them, then specify `-fno-operator-names` option to gcc/clang.
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
### Derived Projects
- [Xbyak_aarch64 ](https://github.com/fujitsu/xbyak_aarch64/ ) : for AArch64
- [Xbyak_riscv ](https://github.com/herumi/xbyak_riscv ) : for RISC-V
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
### News
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
- add amx_fp16/avx_vnni_int8/avx_ne_convert/avx-ifma
- add movdiri, movdir64b, clwb, cldemote
- WAITPKG instructions (tpause, umonitor, umwait) are supported.
- MmapAllocator supports memfd with user-defined strings. see sample/memfd.cpp
- strictly check address offset disp32 in a signed 32-bit integer. e.g., `ptr[(void*)0xffffffff]` causes an error.
- define `XBYAK_OLD_DISP_CHECK` if you need an old check, but the option will be remoevd.
- add `jmp(mem, T_FAR)` , `call(mem, T_FAR)` `retf()` for far absolute indirect jump.
- vnni instructions such as vpdpbusd supports vex encoding.
- (break backward compatibility) `push(byte, imm)` (resp. `push(word, imm)` ) forces to cast `imm` to 8(resp. 16) bit.
- (Windows) `#include <winsock2.h>` has been removed from xbyak.h, so add it explicitly if you need it.
- support exception-less mode see. [Exception-less mode ](#exception-less-mode )
- `XBYAK_USE_MMAP_ALLOCATOR` will be defined on Linux/macOS unless `XBYAK_DONT_USE_MMAP_ALLOCATOR` is defined.
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
### Supported OS
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
- Windows (Xp, Vista, 7, 10, 11) (32 / 64 bit)
- Linux (32 / 64 bit)
- macOS (Intel CPU)
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
### Supported Compilers
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
Almost C++03 or later compilers for x86/x64 such as Visual Studio, g++, clang++, Intel C++ compiler and g++ on mingw/cygwin.
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
## License
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
[BSD-3-Clause License ](http://opensource.org/licenses/BSD-3-Clause )
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
## Author
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
#### 光成滋生 Mitsunari Shigeo
[GitHub ](https://github.com/herumi ) | [Website (Japanese) ](http://herumi.in.coocan.jp/ ) | [herumi@nifty.com ](mailto:herumi@nifty.com )
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
## Sponsors welcome
[GitHub Sponsor ](https://github.com/sponsors/herumi )
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
[Badge Build]: https://github.com/herumi/xbyak/actions/workflows/main.yml/badge.svg
[Build Status]: https://github.com/herumi/xbyak/actions/workflows/main.yml
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
[License]: COPYRIGHT
2019-11-18 15:48:06 +00:00
2023-08-20 14:20:59 +00:00
[Changelog]: doc/changelog.md
[Install]: doc/install.md
[Usage]: doc/usage.md
2019-11-18 15:48:06 +00:00