Assembly Programming and Computer Architecture for Software Engineers
Brian R. Hall, Champlain College
Kevin J. Slonka, Pennsylvania Highlands Community College
Publication Date: June 15, 2017
Order A Review Copy
Ordering Information for Students
Student Price: $44.00
eTextbooks are available directly to students from either of two distributors.
Student Price: $68.00
Paperbacks are available directly to students from either of two distributors.
Description & Features
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.
- Based on x86 and x86_64 architecture.
- All programming examples are provided for three common assemblers: GAS (Clang/LLVM), MASM, and NASM, which ensures both AT&T and Intel syntax. This allows for learning on any OS platform: Mac, Windows, and Linux.
- Context and examples provided in both 32-bit and 64-bit, both of which are useful for a programmer.
- Code-oriented and detailed overviews of function calls, floating-point operations (x87 through AVX), Inline Assembly, and system calls, all in one book.
- Brief introduction and code examples for other modern architectures like ARM, AVR, and RISC-V.
- The Appendices provide practical information and guide students in learning Assembly programming.
- 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, Programming, and Learning notes are placed throughout the text to guide the reader in beneficial ways.
Table of Contents
Chapter 1: Language and Data Fundamentals
Chapter 2: Processor and System Architecture
Supplement for Ch 1 & 2, More Architecture Details
Chapter 3: Assembly and Syntax Fundamentals
Chapter 4: Basic Instructions
Chapter 5: Intermediate Instructions
Chapter 6: Functions
Supplement for Ch 6: Program 6.3 x86_64 Implementation
Chapter 7: String Instructions & Structures
Chapter 8: Floating-Point Operations
Supplement for Ch 8: Chapter 8 Programs
Chapter 9: Inline Assembly and Macros
Chapter 10: Advanced Processor and System Architecture
Supplement for Ch 10: Chapter 10 Programs and Resources
Chapter 11: Other Architectures
Chapter 12: Hardware and Electrical Components
Introduction to the Appendices
Appendix A: Assembly Translation
Appendix B: Environment Setup
Appendix C: Disassembly
Appendix D: Command-Line Debugging Assembly with GDB
Appendix E: Linking Assembly and C++
Appendix F: Functions and Stack
Appendix G: Using CPUID
Appendix H: ASCII and Decimal Arithmetic
Appendix I: Intrinsics