# pkivolowitz/asm_book

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pkivolowitz-asm-book).**

3,112 stars · 171 forks · Assembly · other

## Links

- GitHub: https://github.com/pkivolowitz/asm_book
- awesome-repositories: https://awesome-repositories.com/repository/pkivolowitz-asm-book.md

## Topics

`aarch64` `arm64` `assembly-language` `c` `cpp` `software-development`

## Description

This project is an ARMv8 assembly programming guide and tutorial designed to teach the translation of high-level logic into low-level machine instructions. It serves as a low-level systems programming reference for writing and executing code specifically for the ARMv8 architecture.

The resource provides instructions for cross-platform assembly implementation, focusing on unifying symbol naming and memory addressing to ensure source code builds across different operating systems. It also covers the integration of assembly routines with higher-level languages using standardized calling conventions.

The material covers a broad range of systems programming capabilities, including manual register allocation, floating point computation, and bit manipulation. It also details the assembly toolchain workflow, guiding users through the preprocessing, assembling, and linking pipeline required to produce runnable executable binaries.

## Tags

### Education & Learning Resources

- [Instruction Set Architecture References](https://awesome-repositories.com/f/education-learning-resources/instructional-reference-materials/instruction-set-architecture-references.md) — Provides a comprehensive technical reference for translating high-level logic into ARMv8 machine-level instructions.
- [ARMv8 Assembly Programming Education](https://awesome-repositories.com/f/education-learning-resources/armv8-assembly-programming-education.md) — Serves as a comprehensive guide and tutorial for learning to write machine instructions for the ARMv8 architecture. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))
- [Cross-Platform Learning Guides](https://awesome-repositories.com/f/education-learning-resources/cross-platform-learning-guides.md) — Offers instructional guidance on writing portable assembly code that functions across different operating systems.
- [Assembly Optimization Guides](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/machine-learning-education/computational-performance-optimization/assembly-optimization-guides.md) — Acts as a comprehensive instructional resource for writing and optimizing low-level machine code on ARMv8.
- [Assembly](https://awesome-repositories.com/f/education-learning-resources/language-learning-resources/assembly.md) — Provides educational materials for translating source code into binaries for hardware execution.

### Operating Systems & Systems Programming

- [ARMv8 Assembly Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/armv8-assembly-programming.md) — Serves as a comprehensive guide for writing low-level machine instructions specifically for ARMv8.
- [Cross-Platform Assembly Development](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-assembly-development.md) — Provides instructions for unifying symbol naming and memory addressing to ensure assembly builds across different operating systems.
- [High-Level Language Assembly Integration](https://awesome-repositories.com/f/operating-systems-systems-programming/high-level-language-assembly-integration.md) — Provides instructions for executing assembly routines from high-level languages using runtime wrappers. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))
- [Low-Level Systems Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/memory-allocation-libraries/low-level-system-operations/low-level-systems-programming.md) — Provides a reference for gaining precise control over hardware resources through manual memory management.
- [Manual Register Allocation](https://awesome-repositories.com/f/operating-systems-systems-programming/manual-register-allocation.md) — Teaches explicit management of data flow and temporary storage through manual assignment of CPU registers.
- [Binary Assembly](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-analysis-capabilities/binary-assembly.md) — Explains the process of converting human-readable assembly source code into executable binary data. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))
- [Build Pipelines](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-analysis-capabilities/binary-assembly/build-pipelines.md) — Provides a technical walkthrough of the preprocessing, assembling, and linking pipeline.
- [Toolchain Workflows](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-analysis-capabilities/binary-assembly/toolchain-workflows.md) — Details the full assembly toolchain workflow from preprocessing and assembling to the final linking stage.
- [Binary Linkers](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-linkers.md) — Covers the process of resolving memory addresses for global and local labels during the binary linking stage.
- [Cross-Platform Assembly Symbol Unification](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-assembly-symbol-unification.md) — Implements methods to unify symbol naming conventions ensuring assembly code builds across different operating systems.

### Development Tools & Productivity

- [Cross-Platform](https://awesome-repositories.com/f/development-tools-productivity/native-compilation/cross-platform.md) — Implements techniques to ensure assembly code builds consistently across multiple platforms.
- [Native Binary Toolchains](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/build-systems/binary-compilation-toolchains/native-binary-toolchains.md) — Guides users through the pipeline of preprocessing, assembling, and linking to produce runnable native binaries.

### Programming Languages & Runtimes

- [Calling Conventions](https://awesome-repositories.com/f/programming-languages-runtimes/function-argument-passing/calling-conventions.md) — Details the use of standardized register and stack layouts for passing data between high-level languages and assembly.
- [High-Level Language Integration](https://awesome-repositories.com/f/programming-languages-runtimes/high-level-language-integration.md) — Explains how to integrate assembly routines with higher-level languages using standardized calling conventions.
- [Instruction Flow Control](https://awesome-repositories.com/f/programming-languages-runtimes/instruction-flow-control.md) — Teaches the construction of loops and conditional statements through low-level program counter manipulation. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))

### Scientific & Mathematical Computing

- [Floating Point Arithmetic](https://awesome-repositories.com/f/scientific-mathematical-computing/floating-point-arithmetic.md) — Implements mathematical operations for 32-bit and 64-bit floating point numbers using dedicated hardware instructions. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))
- [Floating Point Computation](https://awesome-repositories.com/f/scientific-mathematical-computing/floating-point-computation.md) — Covers high-precision mathematical operations using dedicated hardware registers and precision instructions.
- [Bit Manipulation Techniques](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/algorithms-and-complexity/algorithms/bit-manipulation-techniques.md) — Teaches low-level bitwise operations, bit field implementation, and endianness handling. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))

### Software Engineering & Architecture

- [Instruction Set Architecture Learning](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/computational-efficiency/cpu-optimization-strategies/hardware-instruction-targeting/instruction-set-targets/instruction-set-architecture-learning.md) — Teaches the fundamental operations of the ARMv8 instruction set and how high-level logic translates to binary.
- [Memory Alignment Utilities](https://awesome-repositories.com/f/software-engineering-architecture/memory-alignment-utilities.md) — Explains how to ensure data structures are padded and aligned in memory to optimize hardware access speed.
- [Naming Conventions](https://awesome-repositories.com/f/software-engineering-architecture/naming-conventions.md) — Applies standardized naming rules for identifiers to ensure cross-platform source code compatibility. ([source](https://github.com/pkivolowitz/asm_book/tree/main/macros/))
- [Symbol-To-Address Mapping](https://awesome-repositories.com/f/software-engineering-architecture/reference-management/symbolic-reference-tracing/symbol-to-address-mapping.md) — Explains the mapping of source code identifiers to memory locations for global and local labels. ([source](https://github.com/pkivolowitz/asm_book/tree/main/macros/))

### Data & Databases

- [Memory Layouts](https://awesome-repositories.com/f/data-databases/memory-layouts.md) — Provides guidance on organizing data layouts and memory alignment for efficient hardware access. ([source](https://cdn.jsdelivr.net/gh/pkivolowitz/asm_book@main/README.md))
