Book

Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture

by Igor Zhirkov

📖 Overview

Low-Level Programming provides a comprehensive exploration of programming at the hardware level, focusing specifically on Intel's x86-64 architecture. The book covers assembly language, C programming, and the intersection between high-level code and machine instructions. Through practical examples and technical deep-dives, the text examines memory management, system calls, program execution flow, and processor architecture. The material progresses from basic assembly concepts to advanced topics like linking, loading, and debugging machine code. Key topics include binary and hexadecimal arithmetic, stack operations, calling conventions, and the relationship between C code and its compiled assembly equivalent. The book includes exercises and code examples that reinforce core concepts through hands-on implementation. This work serves as both an educational text and reference manual for understanding the fundamental layers that exist between hardware and software. Its thorough treatment of low-level programming concepts makes it relevant for systems programmers and anyone seeking to understand how programs truly execute on modern processors.

👀 Reviews

Readers value this book's detailed coverage of low-level programming concepts and x86-64 assembly. Multiple reviews mention its clear explanations of memory management, system calls, and CPU architecture. Liked: - Progressive buildup from basic to complex topics - Code examples that work without modification - Both theoretical foundations and practical implementation - Thorough coverage of calling conventions and ABI Disliked: - Some readers found early chapters too basic - Limited coverage of modern CPU features - Focus only on Linux, no Windows coverage - Some code examples lack sufficient comments Ratings: Goodreads: 4.4/5 (56 ratings) Amazon: 4.5/5 (89 reviews) Notable review from Amazon: "Unlike many assembly books that get bogged down in historical details, this one focuses on modern x86-64 programming with clear, relevant examples." Reddit discussions praise the book's assembly language sections but note it requires prior C programming knowledge to fully benefit from the content.

📚 Similar books

Computer Systems: A Programmer's Perspective by Randal E. Bryant, David R. O'Hallaron This text explains the relationship between hardware and software through examination of x86 assembly, memory hierarchies, and operating system concepts.

Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau The book covers operating system fundamentals including virtualization, concurrency, and persistence while connecting concepts to practical implementation.

Write Great Code: Understanding the Machine by Randall Hyde The text bridges high-level programming and assembly language through detailed coverage of computer architecture and low-level programming techniques.

Programming from the Ground Up by Jonathan Bartlett This book teaches x86 assembly language programming from first principles while explaining computer architecture concepts.

Modern X86 Assembly Language Programming by Daniel Kusswurm The book provides instruction in x86 and x86-64 assembly language programming with focus on SIMD processing and modern processor architectures.

🤔 Interesting facts

📚 The book was published in 2017 and serves as one of the few modern resources specifically focused on x86-64 assembly programming. 🔧 Igor Zhirkov designed the book to bridge the gap between theoretical computer science concepts and practical low-level programming implementation, making it valuable for both students and professional developers. 💻 The text uniquely combines C programming with assembly language, demonstrating how high-level code translates to machine instructions on Intel's 64-bit architecture. 🔍 Throughout the book, readers learn to write their own allocators, explore the inner workings of virtual memory, and understand how programs interact directly with hardware. ⚡ The author's approach emphasizes hands-on learning by having readers build actual working programs rather than just studying theoretical concepts, including creating a simplified shell and memory manager.