xbyak/readme.md

86 lines
3 KiB
Markdown
Raw Normal View History

2011-02-09 18:18:45 -07:00
2024-10-12 23:51:55 -07:00
# Xbyak 7.10 [![Badge Build]][Build Status]
2022-04-09 12:00:11 -07:00
2022-04-12 18:25:18 -07:00
*A C++ JIT assembler for x86 (IA32), x64 (AMD64, x86-64)*
2011-02-09 18:18:45 -07:00
2022-04-12 18:22:25 -07:00
## Menu
2022-04-09 12:08:02 -07:00
2022-04-12 18:22:25 -07:00
- [Install]
- [Usage]
- [Changelog]
2022-04-09 12:08:02 -07:00
2018-08-27 23:47:00 -07:00
## Abstract
2011-02-09 18:18:45 -07:00
2019-11-28 23:22:10 -07:00
Xbyak is a C++ header library that enables dynamically to assemble x86(IA32), x64(AMD64, x86-64) mnemonic.
2011-02-09 18:18:45 -07:00
2021-02-04 16:45:27 -07: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.
2018-08-27 23:47:00 -07:00
## Feature
2022-04-09 12:17:37 -07:00
2022-04-12 18:22:25 -07:00
- header file only
- Intel/MASM like syntax
- fully support AVX-512
2023-12-19 02:21:12 -07:00
- support APX/AVX10
2023-11-30 23:07:28 -07:00
2019-11-28 23:09:17 -07:00
**Note**:
Use `and_()`, `or_()`, ... instead of `and()`, `or()`.
If you want to use them, then specify `-fno-operator-names` option to gcc/clang.
2011-02-09 18:18:45 -07:00
2023-07-26 18:43:13 -07:00
### Derived Projects
- [Xbyak_aarch64](https://github.com/fujitsu/xbyak_aarch64/) : for AArch64
- [Xbyak_riscv](https://github.com/herumi/xbyak_riscv) : for RISC-V
### News
2022-04-09 12:17:37 -07:00
2024-06-11 01:00:40 -07:00
- support xresldtrk/xsusldtrk
2024-01-03 04:10:28 -07:00
- support RAO-INT for APX
2023-12-19 02:21:12 -07:00
- support AVX10 detection, AESKLE, WIDE_KL, KEYLOCKER, KEYLOCKER_WIDE
2023-11-30 23:06:06 -07:00
- support APX except for a few instructions
2022-10-06 18:41:59 -07:00
- add amx_fp16/avx_vnni_int8/avx_ne_convert/avx-ifma
2022-05-13 01:47:39 -07:00
- add movdiri, movdir64b, clwb, cldemote
2022-04-04 23:21:57 -07:00
- WAITPKG instructions (tpause, umonitor, umwait) are supported.
2022-03-07 19:32:27 -07:00
- MmapAllocator supports memfd with user-defined strings. see sample/memfd.cpp
2022-01-27 18:57:21 -07:00
- 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.
2021-12-13 21:58:27 -07:00
- add `jmp(mem, T_FAR)`, `call(mem, T_FAR)` `retf()` for far absolute indirect jump.
2020-10-19 02:29:54 -07:00
- 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.
2020-07-28 04:34:11 -07:00
- (Windows) `#include <winsock2.h>` has been removed from xbyak.h, so add it explicitly if you need it.
2020-07-20 22:23:01 -07:00
- 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.
2011-02-09 18:18:45 -07:00
### Supported OS
2022-04-12 18:22:25 -07:00
- Windows (Xp, Vista, 7, 10, 11) (32 / 64 bit)
- Linux (32 / 64 bit)
- macOS (Intel CPU)
2022-04-09 12:17:37 -07:00
2011-02-09 18:18:45 -07:00
### Supported Compilers
2018-08-27 23:47:00 -07:00
Almost C++03 or later compilers for x86/x64 such as Visual Studio, g++, clang++, Intel C++ compiler and g++ on mingw/cygwin.
2011-02-09 18:18:45 -07:00
2022-04-12 18:22:25 -07:00
## License
2022-04-12 18:25:18 -07:00
[BSD-3-Clause License](http://opensource.org/licenses/BSD-3-Clause)
2022-04-09 12:17:37 -07:00
2018-08-27 23:47:00 -07:00
## Author
2011-02-09 18:18:45 -07:00
2022-04-09 12:25:26 -07:00
#### 光成滋生Mitsunari Shigeo
2022-04-12 18:39:50 -07:00
[GitHub](https://github.com/herumi)|[Website (Japanese)](http://herumi.in.coocan.jp/)|[herumi@nifty.com](mailto:herumi@nifty.com)
2022-04-12 18:22:25 -07:00
## Sponsors welcome
[GitHub Sponsor](https://github.com/sponsors/herumi)
2022-04-09 12:00:11 -07:00
<!----------------------------------------------------------------------------->
[Badge Build]: https://github.com/herumi/xbyak/actions/workflows/main.yml/badge.svg
2022-04-12 18:22:25 -07:00
[Build Status]: https://github.com/herumi/xbyak/actions/workflows/main.yml
2022-04-09 12:00:11 -07:00
2022-04-09 12:05:22 -07:00
[License]: COPYRIGHT
2022-04-09 12:08:02 -07:00
2022-04-12 18:22:25 -07:00
[Changelog]: doc/changelog.md
[Install]: doc/install.md
[Usage]: doc/usage.md
2022-04-09 12:25:26 -07:00