MIPS Assembly/Register File

From Wikibooks, open books for an open world
< MIPS Assembly
Jump to: navigation, search

This page will talk about the structural details of the MIPS register file.

Contents

Zero Register [edit]

The zero register ($zero or $0) always contains a value of 0. It is built into the hardware and therefore cannot be modified.

$at Register [edit]

The $at (Assembler Temporary) register is used for temporary values within pseudo commands. It is not preserved across function calls.

$v Registers [edit]

The $v Registers are used for returning values from functions. They are not preserved across function calls.

Argument Registers [edit]

The $a registers are used for passing arguments to functions. They are not preserved across function calls.

Temporaries [edit]

The temporary registers are used by the assembler or assembly language programmer to store intermediate values. They are not preserved across function calls.

Saved Temporaries [edit]

Saved Temporary registers are used to store longer lasting values. They are preserved across function calls.

$k Registers [edit]

The k registers are reserved for use by the OS kernel.

Pointer Registers [edit]

  • Global Pointer ($gp)
  • Stack Pointer ($sp) - Used to store the value of the stack pointer.
  • Frame Pointer ($fp) - Used to store the value of the frame pointer.
  • Return Address ($ra) - Stores the return address (the location in the program that a function needs to return to).

All Pointer Registers are preserved accross function calls.