Learn how to think about software design and development without all the jargon!
Whether you're a novice programmer who wants to learn how to build a compiler or a more advanced computer scientist who wants to create a custom programming language, our projects will give you a solid foundation in the art of Windows™ software design and development. Whatever your motivation, our learn-by-doing approach reduces the learning curve using easy-to-follow instructions, numerous code examples, detailed references, and readily available software tools.
➤ Edit, compile, and interface assembly language instructions in high-level programming languages
➤ Specify and engineer a bi-level, strictly typed Windows-based programming language
➤ Design and develop a 64-bit compiler for a programming language
➤ Create an integrated development environment (IDE)
➤ Build a component library using Win API and C Runtime functions
No reasonably-sized set of books or tutorials can thoroughly cover every aspect of application development! Our projects generally cover only the most useful concepts and techniques needed to get applications up and running. For more detailed coverage, check out our books.
There are two good reasons to learn assembly language: (1) code efficiency and (2) machine-level hardware access. The best way to use assembly language instructions is to choose a high-level programming language that allows you to place assembly code instructions right in the program. This mixed-mode programming approach makes it much easier to learn and understand assembly language programming. Assembly language code that is incorporated in this way is referred to as inline assembly language instructions.Assembly Language Project
Before you can go about the business of writing a compiler for a new programming language, you need to identify and document the primary specifications that will guide your effort. In this project, we outline the specifications for a new language called Adagé. This new programming language focuses on three primary concepts: (1) program readability, (2) program writeability, and (3) overall program consistency. This project is intentionally scaled to what one individual can realistically undertake in a reasonable amount of time.Language Design Project
This project demonstrates how to implement a new programming language by creating a professional guide designed to assist users in learning to build practical applications using the Adagé programming language. This straightforward guide covers the many detailed features of the Adagé programming language. It incorporates example programs, programming tips, recommended practices, and learning exercises that showcase the range of features offered by the Adagé programming language.User Manual Project
NOTE Our projects are in various stages of completion and are to be considered works in progress. They are constantly evolving as new technologies appear, editorial changes are incorporated, and additional insights are gleaned. Notice that each project is strictly focused on mixed-mode inline assembly programming for Intel-based x86-64 microprocessors using the Windows OS. You will find no examples of MASM or AT&T/GNU GAS syntax nor any reference to Linux, Unix, MS DOS, CP/M, or Apple operating systems.
If you have a desire to create a compiler, this project is aimed at you. It does not matter whether you are a casual programmer, student, or a professional developer, the approach is the same for all user levels. Learn the basics of how to design and develop a production-quality 64-bit compiler for the Adagé programming language. The compiler covered in this project is specifically designed to work with Intel x86-64 and AMD64 processors operating in the Windows™ environment.Compiler Design Project
An integrated development environment (IDE) is a software application that provides facilities for writing code, saving and opening code files, building projects, and running and debugging programs. This project shows you how to build a simple graphical user interface (GUI) editor for the Adagé programming language. Although focused on the Adagé programming language, the concepts shown in this project are applicable to a wide range of programming languages.IDE Design Project
Well-designed programming languages generally are concise. This means they include only the necessary and fundamental constructs to make programs work. To expand the functionality of any programming language, appropriate runtime libraries are either included with the program or created by the programmer. These libraries are separate from the compiler. In this project, you will learn how to create structured runtime libraries that include text, math, and input–output functions.Component Design Project
PMzone projects are provided for learning purposes only. Each is designed for the casual programmer desiring a straightforward approach to application development using non-C/C++ procedural-based tools. Programmers who want to learn how to design and engineer a custom-made programming language will find that our practical hands-on approach avoids the complexity and academic theory associated with many college-level computer science courses. Follow along with the author on a unique journey of discovery.
Our inline assembly language tutorials feature everything you need to write code for Intel x86-64 based architectures, access capabilities of the CPU not available from high-level languages, and call Windows API and C runtime library functions.
The goal of our on-line tutorials is to help you learn by following along with the author on his journey of discovery. Learn to develop various software applications along side the author as he performs experiments that test various software programming theories.
This web page describes PMzone's application development approach using the Adagé programming language. PMzone's tutorials contain special learn-by-doing features that provide easy-to-understand instructions, numerous code examples, handy reference tables, and world-class software tools.
PMzone's tutorials are based on the Intel 64 and IA-32 processor architectures and use the Netwide Assembler (NASM) to translate assembly mnemonics into machine readable code. Each tutorial focuses on interfacing inline assembly language instructions to high-level programming languages such as BASIC and Adagé.
As you can guess from the title of this web page, our tutorials are set up so that you can teach yourself how to create a new programming language and then design and develop a compiler for that language. Despite the number of very good programming languages available to programmers, not every language is consistent and standardized; meets the intended needs of particular users; or provides sufficient readability, maintainability, and safety. For this reason, there is always room for a custom-made language.