CHAPTER 3 CPU FUNCTIONS
User’s Manual U13850EJ4V0UM
75
3.2.1 Program register set
The program register set includes general-purpose registers and a program counter.
(1) General-purpose registers
Thirty-two general-purpose registers, r0 to r31, are available. Any of these registers can be used as a data
variable or address variable.
However, r0 and r30 are implicitly used by instructions, and care must be exercised when using these registers.
Also, r1, r3, r4, r5, and r31 are implicitly used by the assembler and C compiler. Therefore, before using these
registers, their contents must be saved so that they are not lost. The contents must be restored to the registers
after the registers have been used.
There are cases when r2 is used by the real-time OS. If r2 is not used by the real-time OS, r2 can be used as a
variable register.
Table 3-1. Program Registers
Name
Usage
Operation
r0
Zero register
Always holds 0
r1
Assembler-reserved register
Working register for generating 32-bit immediate
r2
Address/data variable register (when r2 is not used by the real-time OS)
r3
Stack pointer
Used to generate stack frame when function is called
r4
Global pointer
Used to access global variable in data area
r5
Text pointer
Register to indicate the start of the text area
Note
r6 to r29
Address/data variable registers
r30
Element pointer
Base pointer when memory is accessed
r31
Link pointer
Used by compiler when calling function
PC
Program counter
Holds instruction address during program execution
Note
Area in which program code is mapped.
(2) Program counter (PC)
This register holds the address of the instruction under execution. The lower 24 bits of this register are valid, and
bits 31 to 24 are fixed to 0. If a carry occurs from bit 23 to 24, it is ignored.
Bit 0 is fixed to 0, and branching to an odd address cannot be performed.
Figure 3-2. Program Counter (PC)
After reset: 00000000H
Symbol
31
24
23
1
0
PC
Fixed to 0
Instruction address under execution
0