Programming at the Hardware/Software Interface is a textbook appropriate for a Computer Organization or introductory Computer Systems course for undergraduate computer science or software engineering students. Stripping away many of the computing abstractions that students and professionals rely upon, this publication introduces students to the underlying realities of computer systems that can introduce unexpected and unwelcome surprises into software designed for an idealized machine. From data representation and assembly language to concurrency and hardware design concepts, students will explore the low-level world of computer systems. The textbook contains material that can be covered in a 15-week academic semester. Each chapter, after motivating the topic, guides students through the topic, provides randomized practice problems to allow students to check their understanding, and includes “reality checks” that relate the chapter’s topic to real-world examples.
- Chapter 1 Introduction
- Chapter 2 Putting "Digital" In Digital Computers
- Chapter 3 Integer Representation and Arithmetic
- Chapter 4 Floating-Point Representation and Arithmetic
- Chapter 5 Assembly Language
- Chapter 6 The Compiler Cookbook
- Chapter 7 Security Issues
- Chapter 8 Concurrency In Your Program
- Chapter 9 Concurrency, Your Program In the Computer System
- Chapter 10 Digital Logic Circuits
- Chapter 11 Processor Microarchitecture
- Chapter 12 Computer Memory
- Chapter 13 Optimizing Your Programs
- Appendix A “A” is for Assembly Language
- Appendix B “B” is for Building a Program
- Appendix C “C” is for the C Programming Language