README.md
1AsmJit
2------
3
4AsmJit is a lightweight library for machine code generation written in C++ language.
5
6 * [Official Home Page (asmjit.com)](https://asmjit.com)
7 * [Official Repository (asmjit/asmjit)](https://github.com/asmjit/asmjit)
8 * [Public Chat Channel](https://gitter.im/asmjit/asmjit)
9 * [Zlib License](./LICENSE.md)
10
11See [asmjit.com](https://asmjit.com) page for more details, examples, and documentation.
12
13Documentation
14-------------
15
16 * [Documentation Index](https://asmjit.com/doc/index.html)
17 * [Build Instructions](https://asmjit.com/doc/group__asmjit__build.html)
18
19Breaking Changes
20----------------
21
22Breaking the API is sometimes inevitable, what to do?
23
24 * See [Breaking Changes Guide](https://asmjit.com/doc/group__asmjit__breaking__changes.html), which is now part of AsmJit documentation.
25 * See asmjit tests, they always compile and provide implementation of many use-cases:
26 * [asmjit_test_emitters.cpp](./test/asmjit_test_emitters.cpp) - Tests that demonstrate the purpose of emitters.
27 * [asmjit_test_assembler_x86.cpp](./test/asmjit_test_assembler_x86.cpp) - Tests targeting AsmJit's Assembler (x86/x64).
28 * [asmjit_test_compiler_x86.cpp](./test/asmjit_test_compiler_x86.cpp) - Tests targeting AsmJit's Compiler (x86/x64).
29 * [asmjit_test_instinfo.cpp](./test/asmjit_test_instinfo.cpp) - Tests that query instruction information.
30 * [asmjit_test_x86_sections.cpp](./test/asmjit_test_x86_sections.cpp) - Multiple sections test.
31 * Visit our [Official Chat](https://gitter.im/asmjit/asmjit) if you need a quick help.
32
33Project Organization
34--------------------
35
36 * **`/`** - Project root.
37 * **src** - Source code.
38 * **asmjit** - Source code and headers (always point include path in here).
39 * **core** - Core API, backend independent except relocations.
40 * **arm** - ARM specific API, used only by ARM and AArch64 backends.
41 * **x86** - X86 specific API, used only by X86 and X64 backends.
42 * **test** - Unit and integration tests (don't embed in your project).
43 * **tools** - Tools used for configuring, documenting, and generating files.
44
45TODO
46----
47
48 * [ ] Core:
49 * [ ] Add support for user external buffers in CodeBuffer / CodeHolder.
50 * [ ] Register allocator doesn't understand register pairs, affected instructions:
51 * [ ] v4fmaddps, v4fmaddss, v4fnmaddps, v4fnmaddss
52 * [ ] vp4dpwssd, vp4dpwssds
53 * [ ] vp2intersectd, vp2intersectq
54 * [ ] Ports:
55 * [ ] ARM/Thumb/AArch64 support.
56
57Support
58-------
59
60 * AsmJit project has both community and commercial support, see [AsmJit's Support Page](https://asmjit.com/support.html)
61 * You can help the development and maintenance through Petr Kobalicek's [GitHub sponsors Profile](https://github.com/sponsors/kobalicek)
62
63Notable Donors List:
64
65 * [ZehMatt](https://github.com/ZehMatt)
66
67
68Authors & Maintainers
69---------------------
70
71 * Petr Kobalicek <kobalicek.petr@gmail.com>
72