New York: Prospect Press, 2017. — 347 p.
This book is an educational examination of Assembly programming and computer architecture that approaches the topics from a practical point of view. The authors readily address “why” and “how” questions throughout the text. The first two chapters lay the foundation of computer language and computer architecture. Then, subsequent chapters use Assembly programming as the mechanism for gaining a better understanding of computer architecture and how Assembly can be harnessed in terms of software development. Software engineers who understand the fundamentals of computer architecture and Assembly programming better understand how programs utilize hardware and are better prepared to efficiently write and debug code for a variety of systems and tasks. What makes this book unique is our multi-faceted approach.
This book is based on a dominant architecture in the computing market: x86 and x86_64; what students learn will be transferable to other architectures.
The programming examples are unique in that code is provided for three common assemblers: GAS, MASM, and NASM. This allows for learning on any OS platform: Mac, Windows, and Linux. This approach also ensures code examples in both AT&T and Intel syntax.
Context and examples provided in both 32 and 64-bit, both of which are useful for a programmer.
The Appendices provide practical information to help students learn and use the technologies associated with Assembly and architecture.
Chapter Supplements provide a deeper dive on topics as necessary.
Links to wikis, developer resources, and videos are provided to assist in further exploration of topics.
Attention notes, Programming notes, and Learning notes are placed throughout the text to guide the reader in beneficial ways.
Language and Data Fundamentals
Processor and System Architecture
More Architecture Details
Assembly and Syntax Fundamentals
Basic Instructions
Intermediate Instructions
Functions
Program 6.3 x86_64 Implementation
String Instructions & Structures
Floating-Point Operations
Chapter 8 Programs
Inline Assembly and Macros
Advanced Processor and System Architecture
Chapter 10 Programs and Resources
Other Architectures
Hardware and Electrical Components
Appendices
Introduction to the Appendices
Assembly Translation
Environment Setup
Disassembly
Command-Line Debugging Assembly with GDB
Linking Assembly and C++
Functions and Stack
Using CPUID
ASCII and Decimal Arithmetic
Intrinsics
Hall: Assembly Programming & Computer Architecture
2017 PROSPECT PRESS - ALL RIGHTS RESERVED