diff --git a/README.md b/README.md index 0415c79..06f261a 100644 --- a/README.md +++ b/README.md @@ -7,47 +7,47 @@ Support the Project: [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_do https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=QDRM6SRNG7378&lc=EN;&item_name=asmjit¤cy_code=EUR) Introduction -============ +------------ AsmJit is a complete JIT and remote assembler for C++ language. It can generate native code for x86 and x64 architectures having support for a full instruction set, from legacy MMX to the newest AVX2. It has a type-safe API that allows C++ compiler to do a semantic checks at compile-time even before the assembled code is generated or run. AsmJit is not a virtual machine (VM). It doesn't have functionality to implement VM out of the box; however, it can be be used as a JIT backend for your own VM. The usage of AsmJit is not limited at all; it's suitable for multimedia, VM backends or remote code generation. Features -======== +-------- - - Complete x86/x64 instruction set - MMX, SSE, AVX, BMI, XOP, FMA..., - - Low-level and high-level code generation, - - Built-in CPU detection, - - Virtual Memory management, - - Pretty logging and error handling, - - Small and embeddable, around 150kB compiled, - - Zero dependencies, not even STL or RTTI. + * Complete x86/x64 instruction set - MMX, SSE, AVX, BMI, XOP, FMA..., + * Low-level and high-level code generation, + * Built-in CPU detection, + * Virtual Memory management, + * Pretty logging and error handling, + * Small and embeddable, around 150kB compiled, + * Zero dependencies, not even STL or RTTI. Supported Environments -====================== +---------------------- -## Operating Systems +### Operating Systems - - BSDs - - Linux - - Mac - - Windows + * BSDs + * Linux + * Mac + * Windows -## C++ Compilers +### C++ Compilers - - BorlandC++ - - GNU (3.4.X+, 4.0+, MinGW) - - MSVC (VS2005, VS2008, VS2010) - - Other compilers require testing + * BorlandC++ + * GNU (3.4.X+, 4.0+, MinGW) + * MSVC (VS2005, VS2008, VS2010) + * Other compilers require testing -## Backends +### Backends - - X86 - - X64 + * X86 + * X64 Project Organization -==================== +-------------------- - project root / - extras - Documentation and addons @@ -61,7 +61,7 @@ Project Organization - x86 - X86/X64 specific files, used only by X86/X64 backend Code Generation Concepts -======================== +------------------------ AsmJit has two completely different code generation concepts. The difference is in how the code is generated. The first concept, also referred as the low level concept, is called 'Assembler' and it's the same as writing RAW assembly by using physical registers directly. In this case AsmJit does only instruction encoding, verification and relocation. @@ -71,26 +71,26 @@ In addition, Compiler understands functions and function calling conventions. It There is no conclusion on which concept is better. Assembler brings full control on how the code is generated, while Compiler makes the generation more portable. -Configuring/Building -==================== +Configuring & Building +---------------------- AsmJit is designed to be easy embeddable in any project. However, it has some compile-time flags that can be used to build a specific version of AsmJit including or omitting certain features: -## Debugging +### Debugging - *ASMJIT_DEBUG* - Define to always turn debugging on (regardless of build-mode). - *ASMJIT_RELEASE* - Define to always turn debugging off (regardless of build-mode). - By default none of these is defined, AsmJit detects mode based on compile-time macros (useful when using IDE that has switches for Debug/Release/etc...). -## Library +### Library - *ASMJIT_STATIC* - Define when building AsmJit as a static library. No symbols will be exported by AsmJit by default. - *ASMJIT_API* - This is AsmJit API decorator that is used in all functions that has to be exported. It can be redefined, however it's not a recommended way. - By default AsmJit build is configured as a shared library and *ASMJIT_API* contains compiler specific attributes to import/export AsmJit symbols. -## Backends +### Backends - *ASMJIT_BUILD_X86* - Always build x86 backend regardless of host architecture. - *ASMJIT_BUILD_X64* - Always build x64 backend regardless of host architecture. @@ -101,19 +101,19 @@ AsmJit is designed to be easy embeddable in any project. However, it has some co To build AsmJit please use cmake that will generate project files for your favorite IDE and platform. If you don't use cmake and you still want to include AsmJit in your project it's perfectly fine by just including it there, probably defining *ASMJIT_STATIC* to prevent AsmJit trying to export the API. Examples -======== +-------- Comprehensive test suite can be found at src/app/test directory in AsmJit package. It can be used as a starting point before using AsmJit. License -======= +------- AsmJit can be distributed under zlib license: * Google Groups & Mailing Lists -============================= +----------------------------- AsmJit google group: @@ -124,6 +124,6 @@ AsmJit mailing list: * asmjit-dev@googlegroups.com Contact Authors & Maintainers -============================= +----------------------------- * Petr Kobalicek