The MIPS Programmer's Handbook (The Morgan Kaufmann Series in Computer Architecture and Design)
A hands-on view of the highly successful MIPS family of microprocessors, written for programmers developing systems applications for the MIPS platform.
The MIPS Programmer's Handbook describes the MIPS architecture from the perspective of assembly- and C-language programmers, with special emphasis on issues related to embedded applications. Engineers writing system-level programs for MIPS-based embedded systems will find the topic selection especially useful including the sections on software conventions, initializing the processor in a bare machine environment, and writing exception handlers.
For convenient use, the instruction set reference is presented with only one page per instruction. The authors focus on the instructions available to assembly-language programmers, rather than on the hardware-level instruction set documented in data books released by vendors of the MIPS processor. Provides enough detail for anyone doing serious system-level programming. Also included are ten complete program examples, with line-by-line explanations.
Several sample sections are available from the authors' website.
Why Read This Book
You should read this book if you need a compact, hands-on reference to program MIPS processors at the system level: you will learn MIPS assembly idioms, C/ABI conventions, and the steps to initialize and service exceptions on bare-metal systems. It pairs a concise instruction reference with practical guidance for embedded and system-level programming.
Who Will Benefit
Embedded and systems engineers or firmware developers working with MIPS-based SoCs (or studying RISC architectures) who need concrete guidance on low-level programming, boot/exception code, and ABI conventions.
Level: Intermediate — Prerequisites: Basic C programming, familiarity with general computer architecture concepts (registers, memory, interrupts), and some exposure to assembly language.
Key Takeaways
- Implement bare-metal processor initialization and basic boot sequences on MIPS systems.
- Write and debug MIPS assembly routines and interface them correctly with C using the MIPS ABI.
- Design and implement exception and interrupt handlers for MIPS processors.
- Use and reason about the MIPS instruction set to optimize common code patterns for pipeline and latency.
- Understand coprocessor usage (including floating point) and basic TLB/virtual memory issues on MIPS.
- Read and use a per-instruction reference to map instructions to addressing modes and expected behavior.
Topics Covered
- Introduction to the MIPS Architecture and RISC Principles
- Registers, Addressing Modes, and Data Representations
- Assembler Basics and Assembly Language Programming
- Arithmetic and Logical Instructions
- Control Flow, Branches and Procedures
- Calling Conventions and Interfacing with C (MIPS ABI)
- Memory System: Caches, Load/Store, and Alignment
- Exceptions, Interrupts and Exception Handler Design
- Coprocessors and Floating Point Support
- Bootstrapping and Bare-Machine Initialization
- Linking, Object Formats and System-Level Tools
- Code Optimization and Pipeline Considerations
- Instruction Reference (one-page-per-instruction) and Appendices
Languages, Platforms & Tools
How It Compares
More narrowly practical and programmer-oriented than Patterson & Hennessy's "Computer Organization and Design," and more approachable for firmware work than the official MIPS architecture manuals, which are more formal and exhaustive.













