SlideShare a Scribd company logo
1 of 3
Download to read offline
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

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

tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
WE-IT TUTORIALS
 
Minko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.js
Minko3D
 
Dot net interview_questions
Dot net interview_questionsDot net interview_questions
Dot net interview_questions
9292929292
 

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

tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
 
Typescript for the programmers who like javascript
Typescript for the programmers who like javascriptTypescript for the programmers who like javascript
Typescript for the programmers who like javascript
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integration
 
Software used in Electronics and Communication
Software used in Electronics and CommunicationSoftware used in Electronics and Communication
Software used in Electronics and Communication
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
 
The Seven Pillars Of Asp.Net
The Seven Pillars Of Asp.NetThe Seven Pillars Of Asp.Net
The Seven Pillars Of Asp.Net
 
Module 4_WorkinUnixLinuxCommandAndKeepDoing
Module 4_WorkinUnixLinuxCommandAndKeepDoingModule 4_WorkinUnixLinuxCommandAndKeepDoing
Module 4_WorkinUnixLinuxCommandAndKeepDoing
 
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
 
Minko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.js
 
resume
resumeresume
resume
 
Dot net interview_questions
Dot net interview_questionsDot net interview_questions
Dot net interview_questions
 
just in time JIT compiler
just in time JIT compilerjust in time JIT compiler
just in time JIT compiler
 
PowerAI Deep dive
PowerAI Deep divePowerAI Deep dive
PowerAI Deep dive
 
pythonOCC PDE2009 presentation
pythonOCC PDE2009 presentationpythonOCC PDE2009 presentation
pythonOCC PDE2009 presentation
 
As pnet
As pnetAs pnet
As pnet
 
Lotus Domino 8.5
Lotus Domino 8.5Lotus Domino 8.5
Lotus Domino 8.5
 
Dotnet basics
Dotnet basicsDotnet basics
Dotnet basics
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application Development
 
Embedded Rust
Embedded RustEmbedded Rust
Embedded Rust
 

More from htdvul

Agile Enterprise architecture.pptx
Agile Enterprise architecture.pptxAgile Enterprise architecture.pptx
Agile Enterprise architecture.pptx
htdvul
 
SysInternals Disk2vhd - docs.pdf
SysInternals Disk2vhd - docs.pdfSysInternals Disk2vhd - docs.pdf
SysInternals Disk2vhd - docs.pdf
htdvul
 
American civil war museum va
American civil war museum vaAmerican civil war museum va
American civil war museum va
htdvul
 
Ap08 compsci coursedesc
Ap08 compsci coursedescAp08 compsci coursedesc
Ap08 compsci coursedesc
htdvul
 
Leadtools evaluation downloads
Leadtools evaluation downloadsLeadtools evaluation downloads
Leadtools evaluation downloads
htdvul
 
Oscon anatomy of_os_cloud_ecosystem
Oscon anatomy of_os_cloud_ecosystemOscon anatomy of_os_cloud_ecosystem
Oscon anatomy of_os_cloud_ecosystem
htdvul
 
Linkedinmobile 111011223417-phpapp02
Linkedinmobile 111011223417-phpapp02Linkedinmobile 111011223417-phpapp02
Linkedinmobile 111011223417-phpapp02
htdvul
 

More from htdvul (10)

Agile Enterprise architecture.pptx
Agile Enterprise architecture.pptxAgile Enterprise architecture.pptx
Agile Enterprise architecture.pptx
 
CON 1300V Webinar Slides v1.pptx
CON 1300V Webinar Slides v1.pptxCON 1300V Webinar Slides v1.pptx
CON 1300V Webinar Slides v1.pptx
 
PMOs Deliver Value.pdf
PMOs Deliver Value.pdfPMOs Deliver Value.pdf
PMOs Deliver Value.pdf
 
SysInternals Disk2vhd - docs.pdf
SysInternals Disk2vhd - docs.pdfSysInternals Disk2vhd - docs.pdf
SysInternals Disk2vhd - docs.pdf
 
Team drive get free storage
Team drive get free storageTeam drive get free storage
Team drive get free storage
 
American civil war museum va
American civil war museum vaAmerican civil war museum va
American civil war museum va
 
Ap08 compsci coursedesc
Ap08 compsci coursedescAp08 compsci coursedesc
Ap08 compsci coursedesc
 
Leadtools evaluation downloads
Leadtools evaluation downloadsLeadtools evaluation downloads
Leadtools evaluation downloads
 
Oscon anatomy of_os_cloud_ecosystem
Oscon anatomy of_os_cloud_ecosystemOscon anatomy of_os_cloud_ecosystem
Oscon anatomy of_os_cloud_ecosystem
 
Linkedinmobile 111011223417-phpapp02
Linkedinmobile 111011223417-phpapp02Linkedinmobile 111011223417-phpapp02
Linkedinmobile 111011223417-phpapp02
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Recently uploaded (20)

Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 

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