Ada/PM is a native 64-bit programming language based on design philosophies adapted from Ada, Pascal, and Modula. Its primary purpose is to explore the fundamentals of high-level language definition, low-level assembly language programming, and compiler design and development.
Ada/PM embraces bi-level programming. Programs may contain both high-level source code, which isolates programmers from the machine architecture, and low-level assembly instructions, which allow access to system-level hardware. This mixed-mode programming approach serves as a logical path to understanding the role of assembly language in the design of modern programming languages. It also provides the tools needed to create reliable and efficient compilers.
Key features include Ada-like syntax, strong static checking, fewer predefined data types, optimized set of orthogonal constructs, exploitation of multicore technology, and access to abstract data types contained in separate library units. The intent is to design a reasonably safe, highly readable programming language focused on math operations, string manipulation, and direct hardware access.
Ada/PM is a special-purpose language designed to make x86-64 inline assembly language code an integral component of Windows-based programming. It is an imperative, statically typed language using block structures to group declarations and statements. Ada/PM focuses on low-level programming capabilities to extract the power of modern multi-core processors by manipulating data based on the inexorable Von Neumann computer architecture. Ada/PM derives syntactical features principally found in the Ada, Pascal, Modula, Oberon, C/Go, and BASIC program languages.
Five reasons to learn assembly language programming: (1) efficient code and space utilization, (2) access to system hardware, (3) overcome the limitations of high-level languages, (4) improve user overall programming skills and understanding, and (5) learn something new and complex.
The superiority of assembly language in generating compact code that runs fast is well documented. Assembly code is ideal for time-critical tasks that have to be completed in short order. Likewise, some systems require compactness of application code such as portable computers, mobile phones, and onboard systems found in aircraft and spacecraft. Again, assembly code excels in compactness.
Software applications often require direct control over the system hardware. Examples include operating systems, assemblers, compilers, linkers, device drivers, and network interfaces. Assembly language programming, sometimes referred to as low-level programming, performs lower level tasks when compared to instructions in high-level languages such as Ada, BASIC, C, Go, and Pascal. Assembly provides direct control over system hardware.
Sometimes programmers find that their high-level programming language has serious limitations that prevent them from performing certain kinds of operations. Examples include text and bit manipulation, math calculations, access to the SSE and AVX registers, and multiple core utilization. Typically, only assembly language gives you access to these machine-level capabilities.
Assembly language is central to computer science. Learning assembly language has both practical and educational purposes. A strong foundation in assembly language programming can help improve your awareness of why high-level languages are structured the way they are and improve your understanding of the underlying computer system.
Although learning assembly language programming is more difficult than learning a high-level language such as BASIC or C, there is a certain aspect of personal satisfaction that comes with learning something new and complex. You also become aware of the power of assembly language. The insights assembly language programming give you makes the time spent learning assembly well worth it.
The goal of this website is to teach general principles of assembly language programming. It is not necessary to have prior knowledge of computer hardware or programming to enjoy its benefits. In actuality, it is not always necessary for programmers to choose between coding in assembly language and coding in a high-level language because many high-level languages allow inline assembly language instructions to be inserted in the source code.
Assembly language is fundamental to understanding computer architecture and computer science. We believe that all students should be thoroughly knowledgeable of the underlying operating system and computer hardware. Although proficiency in programming at the lowest levels is not as important as it once was, understanding the capabilities of the system at the low-level is vital. Mixed-mode applications that allow high-level languages to include assembly mnemonics embraces assembly language--not replaces it!
One way to learn assembly language programming is to embed inline assembly instructions inside the source code of high-level programming languages. This process is referred to as mixed-mode programming. Mixed-mode programming avoids the complexities of standalone assembly language programs. Additionally, the compiler can assist the user in avoiding critical mistakes that might otherwise go undetected when writing standard assembly language routines.
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 a high-level programming language called Ada/PM.
Copyright © 2023 PMzone Software. All rights reserved. Terms of Use