SlideShare a Scribd company logo
Project Home Downloads Wiki Issues Source
My favorites ▼ | Sign in
asmjit
Complete x86/x64 JIT Assembler for C++ Language. Search projects
Summary Updates People
Project Information
Activity Medium
Project feeds
Code license
MIT License
Labels
Assembler, CPlusPlus,
Compiler, JIT
Members
kobalicek.petr
Featured
Downloads
AsmJit-0.8.4-pre.chm
AsmJit-0.8.6.zip
AsmJit-1.0-beta3.chm
AsmJit-1.0-beta3.zip
Show all »
Wiki pages
Configuring
Examples
FAQ
Other_Resources
Roadmap
Upgrading_Notes
Show all »
Links
Groups
AsmJit devel
Introduction
AsmJit is complete x86/x64 JIT-Assembler for C++ language. It supports 32/64-bit x86
processors including all usable extensions (FPU, MMX, 3dNow, SSE, SSE2, SSE3 and
SSE4) through type-safe API that mimics Intel assembler syntax and eliminates nearly all
common mistakes that can be done by developers.
AsmJit contains also high-level code generation classes that can be used as a portable way
to create JIT code that should run on all supported architectures. High-level classes are
designed to handle function calling-conventions, register allocation and 32/64-bit mode
differences.
AsmJit has been successfully tested by various C++ compilers (including MSVC, GCC,
Clang, and BorlandC++) under all major operating systems (including Windows, Linux and
Mac). AsmJit has been also ported to other programming languages including Java, Delphi
and Smalltalk, although these ports are not official part of AsmJit and was developed
outside.
News
AsmJit-1.0 is coming! High-level code generation contains complete new code-base and
there are also minor API changes in low-level code generation.
AsmJit-1.0 SVN repository is available at trunk/AsmJit-1.0/...
Features
Complete x86/x64 instruction set, including X87, MMX, SSE, SSE2, SSE3, SSSE3 and
SSE4.
Compile time and run-time safety. C++ compiler is able to catch basic mistakes that can
be done by developer.
Low-level and high-level code generation.
Built-in CPU detection.
Virtual memory management (API similar to malloc/free).
Configurable memory management, logging and error handling.
Small and embeddable (size of compiled AsmJit is about 200kB).
No dependencies to STL and other libraries.
No exceptions and RTTI.
Extensible design. The library can be extended by inheriting classes, it's not needed to
modify AsmJit sources to fit into your project.
Usage Notes
The usage of AsmJit is not limited. The library was written primarily to work with multimedia
(there is strong support for MMX/SSE2/SSSE3/...), but it can be used as a JIT backend for
your virtual machine, mathematical expression parser, AI network or other performance
critical task.
Although AsmJit is a low-level library, there are helper classes that were designed to
asmjit - Complete x86/x64 JIT Assembler for C++ Language. - Google Pr... http://code.google.com/p/asmjit/
1 of 3 2/5/2012 9:09 PM
simplify cross-platform development, code-generation and the usage of the library.
Assembler / Compiler
AsmJit library contains two main code-generation concepts - Assembler and Compiler. The
first concept, called 'Assembler' is to use pure assembler without any additional tools. It's
pure assembler with instructions and their operands (register, memory location, immediate,
and label). This class can be used by tools which do not need register allocator or contains
own.
The second concept, called 'Compiler', is a high-level code generation, which is using
variables (virtual registers) instead of real registers. After the code serialization is finished,
register allocator gathers the most important information about the usage of variables, their
scope, and registers which might be used for each variable. Then all variables are translated
into real registers or memory addresses. Compiler also contains built-in calling convention
handling so it's portable between 32-bit and 64-bit architectures.
The Compiler is probably not the best tool which can handle register allocation (linear-scan
register allocation is designed for fast-execution). There are some areas where it could be
improved. However, it's built-in, and in the most cases the output is comparable to the code
that is generated by the C/C++ compiler. The main advantage of AsmJit::Compiler
compared to other tools is that it has complete statistics of variables and their scope,
because the register allocator is run after the code was serialized. There are also some
hints which might be used to improve the register allocation.
Configuring
AsmJit is designed to be easily embeddable into any project. It's only needed to add the
C++ files into your project and sometimes to setup AsmJit/Config.h file. This file is designed
for easy embedding to any environment and contains only necessary macros. To embed
AsmJit into your project statically edit this file and uncomment // #define ASMJIT_API
macro.
Another way to use AsmJit is to build shared library (dll, so, ...). This is now default. AsmJit
contains cmake project file that can create platform specific makefiles and IDE project files.
The goal is to use platform native tools for building and development.
See configuring section for details. If you don't know what cmake is, visit its homepage at
www.cmake.org.
Upgrading
Please see upgrading notes for detailed information about upgrading to latest AsmJit
version.
Examples
See examples section that contains code generation using AsmJit::Assembler and
AsmJit::Compiler. You can compare these two different ways of code generation.
Contribution and Feedback
AsmJit is a new project. If you found a bug, please insert new issue or send description to
AsmJit mailing list. All code generation issues are normally fixed until next day, complex
issues can take some time to fix.
If you found incorrect or very brief documentation (that is not enough for you) please contact
us through mailing list or contact AsmJit author directly. Fixing typos and incorrect English is
also welcome.
All AsmJit changes and refactorization is also discussed through AsmJit mailing list. So if you
are using AsmJit library, please join to have better experience and less troubles with new
asmjit - Complete x86/x64 JIT Assembler for C++ Language. - Google Pr... http://code.google.com/p/asmjit/
2 of 3 2/5/2012 9:09 PM
versions.
Download
Latest stable release of AsmJit can be downloaded in Downloads section.
Donate
Please donate to the future development of AsmJit library. See the ROADMAP for planned
features.
Donations received from:
muParserSSE - Mathematical expression parser and JIT compiler (from the author of
muParser).
PELock - PELock Software Protection.
Others, not mentioned here - thanks!
Related Projects
BlitJit - Just In Time Image Blitting Library that's using AsmJit to JIT compile graphics
functions.
Fog-Framework - High performance 2d graphics library and GUI toolkit for C++.
MathPresso - Mathematical Expression Evaluator and JIT Compiler using AsmJit
(currently it's only example, nothing serious).
Google Groups and Mailing Lists
AsmJit google group:
http://groups.google.com/group/asmjit-dev
AsmJit mailing list:
asmjit-dev@googlegroups.com
©2011 Google - Terms - Privacy - Project Hosting Help
Powered by Google Project Hosting
asmjit - Complete x86/x64 JIT Assembler for C++ Language. - Google Pr... http://code.google.com/p/asmjit/
3 of 3 2/5/2012 9:09 PM

More Related Content

PDF
Wasm intro
PDF
The compilation process
PDF
LLVM Compiler - Link Time Optimization
PPTX
Transpilers(Source-to-Source Compilers)
PPTX
Introduction to C Language
DOC
Source-to-Source Compiler
PDF
Introduction to the LLVM Compiler System
PPTX
Csc240 -lecture_3
Wasm intro
The compilation process
LLVM Compiler - Link Time Optimization
Transpilers(Source-to-Source Compilers)
Introduction to C Language
Source-to-Source Compiler
Introduction to the LLVM Compiler System
Csc240 -lecture_3

Similar to asmjit - Complete x86 x64 JIT Assembler for C++.pdf (20)

PDF
tybsc it asp.net full unit 1,2,3,4,5,6 notes
PDF
Typescript for the programmers who like javascript
PDF
IBM Rational Rhapsody and Qt Integration
PDF
Software used in Electronics and Communication
PPT
Introduction to .net
DOCX
The seven pillars of aspnet
DOCX
The Seven Pillars Of Asp.Net
PDF
Module 4_WorkinUnixLinuxCommandAndKeepDoing
PPTX
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
PDF
Minko - Build WebGL applications with C++ and asm.js
DOCX
PDF
Dot net interview_questions
DOCX
just in time JIT compiler
PPTX
PowerAI Deep dive
PPT
pythonOCC PDE2009 presentation
DOCX
PPTX
Lotus Domino 8.5
PDF
Dotnet basics
PPTX
Advance Android Application Development
PDF
Embedded Rust
tybsc it asp.net full unit 1,2,3,4,5,6 notes
Typescript for the programmers who like javascript
IBM Rational Rhapsody and Qt Integration
Software used in Electronics and Communication
Introduction to .net
The seven pillars of aspnet
The Seven Pillars Of Asp.Net
Module 4_WorkinUnixLinuxCommandAndKeepDoing
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
Minko - Build WebGL applications with C++ and asm.js
Dot net interview_questions
just in time JIT compiler
PowerAI Deep dive
pythonOCC PDE2009 presentation
Lotus Domino 8.5
Dotnet basics
Advance Android Application Development
Embedded Rust
Ad

More from htdvul (10)

PPTX
Agile Enterprise architecture.pptx
PPTX
CON 1300V Webinar Slides v1.pptx
PDF
PMOs Deliver Value.pdf
PDF
SysInternals Disk2vhd - docs.pdf
PDF
Team drive get free storage
PDF
American civil war museum va
PDF
Ap08 compsci coursedesc
PDF
Leadtools evaluation downloads
KEY
Oscon anatomy of_os_cloud_ecosystem
KEY
Linkedinmobile 111011223417-phpapp02
Agile Enterprise architecture.pptx
CON 1300V Webinar Slides v1.pptx
PMOs Deliver Value.pdf
SysInternals Disk2vhd - docs.pdf
Team drive get free storage
American civil war museum va
Ap08 compsci coursedesc
Leadtools evaluation downloads
Oscon anatomy of_os_cloud_ecosystem
Linkedinmobile 111011223417-phpapp02
Ad

Recently uploaded (20)

PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Digital Strategies for Manufacturing Companies
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPT
Introduction Database Management System for Course Database
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
System and Network Administraation Chapter 3
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
medical staffing services at VALiNTRY
PDF
Understanding Forklifts - TECH EHS Solution
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
history of c programming in notes for students .pptx
Computer Software and OS of computer science of grade 11.pptx
Softaken Excel to vCard Converter Software.pdf
VVF-Customer-Presentation2025-Ver1.9.pptx
Digital Strategies for Manufacturing Companies
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Introduction Database Management System for Course Database
2025 Textile ERP Trends: SAP, Odoo & Oracle
System and Network Administraation Chapter 3
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Adobe Illustrator 28.6 Crack My Vision of Vector Design
medical staffing services at VALiNTRY
Understanding Forklifts - TECH EHS Solution
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Operating system designcfffgfgggggggvggggggggg
How to Migrate SBCGlobal Email to Yahoo Easily
How to Choose the Right IT Partner for Your Business in Malaysia
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Reimagine Home Health with the Power of Agentic AI​
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
history of c programming in notes for students .pptx

asmjit - Complete x86 x64 JIT Assembler for C++.pdf

  • 1. Project Home Downloads Wiki Issues Source My favorites ▼ | Sign in asmjit Complete x86/x64 JIT Assembler for C++ Language. Search projects Summary Updates People Project Information Activity Medium Project feeds Code license MIT License Labels Assembler, CPlusPlus, Compiler, JIT Members kobalicek.petr Featured Downloads AsmJit-0.8.4-pre.chm AsmJit-0.8.6.zip AsmJit-1.0-beta3.chm AsmJit-1.0-beta3.zip Show all » Wiki pages Configuring Examples FAQ Other_Resources Roadmap Upgrading_Notes Show all » Links Groups AsmJit devel Introduction AsmJit is complete x86/x64 JIT-Assembler for C++ language. It supports 32/64-bit x86 processors including all usable extensions (FPU, MMX, 3dNow, SSE, SSE2, SSE3 and SSE4) through type-safe API that mimics Intel assembler syntax and eliminates nearly all common mistakes that can be done by developers. AsmJit contains also high-level code generation classes that can be used as a portable way to create JIT code that should run on all supported architectures. High-level classes are designed to handle function calling-conventions, register allocation and 32/64-bit mode differences. AsmJit has been successfully tested by various C++ compilers (including MSVC, GCC, Clang, and BorlandC++) under all major operating systems (including Windows, Linux and Mac). AsmJit has been also ported to other programming languages including Java, Delphi and Smalltalk, although these ports are not official part of AsmJit and was developed outside. News AsmJit-1.0 is coming! High-level code generation contains complete new code-base and there are also minor API changes in low-level code generation. AsmJit-1.0 SVN repository is available at trunk/AsmJit-1.0/... Features Complete x86/x64 instruction set, including X87, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4. Compile time and run-time safety. C++ compiler is able to catch basic mistakes that can be done by developer. Low-level and high-level code generation. Built-in CPU detection. Virtual memory management (API similar to malloc/free). Configurable memory management, logging and error handling. Small and embeddable (size of compiled AsmJit is about 200kB). No dependencies to STL and other libraries. No exceptions and RTTI. Extensible design. The library can be extended by inheriting classes, it's not needed to modify AsmJit sources to fit into your project. Usage Notes The usage of AsmJit is not limited. The library was written primarily to work with multimedia (there is strong support for MMX/SSE2/SSSE3/...), but it can be used as a JIT backend for your virtual machine, mathematical expression parser, AI network or other performance critical task. Although AsmJit is a low-level library, there are helper classes that were designed to asmjit - Complete x86/x64 JIT Assembler for C++ Language. - Google Pr... http://code.google.com/p/asmjit/ 1 of 3 2/5/2012 9:09 PM
  • 2. simplify cross-platform development, code-generation and the usage of the library. Assembler / Compiler AsmJit library contains two main code-generation concepts - Assembler and Compiler. The first concept, called 'Assembler' is to use pure assembler without any additional tools. It's pure assembler with instructions and their operands (register, memory location, immediate, and label). This class can be used by tools which do not need register allocator or contains own. The second concept, called 'Compiler', is a high-level code generation, which is using variables (virtual registers) instead of real registers. After the code serialization is finished, register allocator gathers the most important information about the usage of variables, their scope, and registers which might be used for each variable. Then all variables are translated into real registers or memory addresses. Compiler also contains built-in calling convention handling so it's portable between 32-bit and 64-bit architectures. The Compiler is probably not the best tool which can handle register allocation (linear-scan register allocation is designed for fast-execution). There are some areas where it could be improved. However, it's built-in, and in the most cases the output is comparable to the code that is generated by the C/C++ compiler. The main advantage of AsmJit::Compiler compared to other tools is that it has complete statistics of variables and their scope, because the register allocator is run after the code was serialized. There are also some hints which might be used to improve the register allocation. Configuring AsmJit is designed to be easily embeddable into any project. It's only needed to add the C++ files into your project and sometimes to setup AsmJit/Config.h file. This file is designed for easy embedding to any environment and contains only necessary macros. To embed AsmJit into your project statically edit this file and uncomment // #define ASMJIT_API macro. Another way to use AsmJit is to build shared library (dll, so, ...). This is now default. AsmJit contains cmake project file that can create platform specific makefiles and IDE project files. The goal is to use platform native tools for building and development. See configuring section for details. If you don't know what cmake is, visit its homepage at www.cmake.org. Upgrading Please see upgrading notes for detailed information about upgrading to latest AsmJit version. Examples See examples section that contains code generation using AsmJit::Assembler and AsmJit::Compiler. You can compare these two different ways of code generation. Contribution and Feedback AsmJit is a new project. If you found a bug, please insert new issue or send description to AsmJit mailing list. All code generation issues are normally fixed until next day, complex issues can take some time to fix. If you found incorrect or very brief documentation (that is not enough for you) please contact us through mailing list or contact AsmJit author directly. Fixing typos and incorrect English is also welcome. All AsmJit changes and refactorization is also discussed through AsmJit mailing list. So if you are using AsmJit library, please join to have better experience and less troubles with new asmjit - Complete x86/x64 JIT Assembler for C++ Language. - Google Pr... http://code.google.com/p/asmjit/ 2 of 3 2/5/2012 9:09 PM
  • 3. versions. Download Latest stable release of AsmJit can be downloaded in Downloads section. Donate Please donate to the future development of AsmJit library. See the ROADMAP for planned features. Donations received from: muParserSSE - Mathematical expression parser and JIT compiler (from the author of muParser). PELock - PELock Software Protection. Others, not mentioned here - thanks! Related Projects BlitJit - Just In Time Image Blitting Library that's using AsmJit to JIT compile graphics functions. Fog-Framework - High performance 2d graphics library and GUI toolkit for C++. MathPresso - Mathematical Expression Evaluator and JIT Compiler using AsmJit (currently it's only example, nothing serious). Google Groups and Mailing Lists AsmJit google group: http://groups.google.com/group/asmjit-dev AsmJit mailing list: asmjit-dev@googlegroups.com ©2011 Google - Terms - Privacy - Project Hosting Help Powered by Google Project Hosting asmjit - Complete x86/x64 JIT Assembler for C++ Language. - Google Pr... http://code.google.com/p/asmjit/ 3 of 3 2/5/2012 9:09 PM