is a low-level general-purpose library offering basic routines needed by assembly programmers to interface the x64 CPU in a low-level, controlled, command-line environment. It is specifically tailored for beginners, hobbyists and self-learners of x64 assembly language programming. CPU2.0 is a feature-rich library and has proven to be a very effective set of tools for learning, teaching and other system purposes.

CPU2.0 operates both on Linux64 and Win64 platforms, each contain about 270+ helper routines. Both versions of CPU2.0 have similar functionalities but with different calling conventions. In addition, CPU2.0 is also accessible from high-level languages such as C and C++ operating in 64-bit mode on x64 CPU.

CPU2.0 is a bare-metal library with the main objective is to allow coders and programmers to interface the CPU on-the-fly, from the source. This makes CPU2.0 a very lightweight module, extremely convenient, and independant of third party library, except with hosting OS's kernel services. That means no confusing include files, no complicated linking process and command-line switches.

Starting from Revision 1.1.0, we introduced CPU86, the 32-bit version of CPU2.0. This version observes CDECL / C Calling Convention. CPU86 is distributed along with CPU2.0

Download the latest version of CPU2.0 and see the examples on how to access and use CPU2.0 from various platforms and assemblers. CPU2.0 will be updated and improved from time to time to give you the best features.




Q: Is CPU2.0 a debugger?
A: In many cases, yes. But CPU2.0 has never been designed to take the role of a debugger. CPU2.0 is conditioned to help the assembly language programmers interface the CPU in a protected and controlled execution environment. Therefore in so many ways, CPU2.0 share many similarities with a debugger.

Q: Is CPU2.0 standalone
A: It is. CPU2.0’s only dependency is on the OS kernel services without using any other third party libraries. That simply means CPU2.0 is relatively fast with very small memory footprint, lightweight, easy to use and setup, no confusing include files, and simple linking and execution. CPU2.0 essentially offers a very thin layer betweed applications and the machine internals.

Q: Is CPU2.0 an industrial product
A: No. CPU2.0 was primarily designed for the purposes of teaching and learning, offering only lightweight routines suitable for talk-and-chalk methods or to quickly build up proofs and test-case codes. Should not be used around heavyweight tasks and those that require industrial precision. However with enough expertise and familiarity around CPU2.0, you can accomplish complicated tasks with it.

Q: Is CPU2.0 a GUI library
A: No. CPU2.0 is a CPU-interfacing tool with strong emphasis on machine instructions. It is not a GUI application and should be run in command-line environment only. With the right setting and expert use of CPU2.0, you can however probe your GUI programs with low-level CPU2.0 routines.

Q: Is CPU2.0 optimized
A: CPU2.0 is general-purpose library intented to run on all x86_64 platforms. Therefore we have never made serious attempts to optimize the routines for specific CPU or microarchitecture. We strived for accuracy and functionality rather than speed. However, you will find many of the routines to be fast enough.

Q: Licence
A: We developed this library for the benefit of learners, beginners, hobbyists and students of x64 assembly programming without any commercial intentions. So you are free to use and distribute it, for private or commercial purposes, as long as you include the licence.txt.

©2018,2019. www.cpu2.net. All rights reserved.