There are two types of registers, general registers and control registers, explained below.
There are 16 general purpose registers, each 32 bits wide. They are used to hold source operand data and computation results. Although only r0 has a special function at the hardware level, a convention has been established whereby the following MCore general registers have reserved functions at the software level:
The jsr instruction overwrites the contents of register r15 with the return address generated by the call. However, the contents of r15 may also be overwritten by software if required.
There are 32 control registers, each 32-bits wide:
Control registers can be loaded and stored from via the mfcr and mtcr, respectively. For a detailed description of the purpose of each of these registers, please refer to the MCore Programming Manual.