Patent ID: 8799626

Claim:
A segment allocation method of expanding an RISC processor register, comprising steps: a) setting an instruction format of the RISC processor, the instruction format having at least two register fields, whose number corresponds to that of the registers and which are a destination register field and at least one source register respectively, setting that the destination register field has 6 bits for saving a destination register code corresponding to 64 registers and the source register field has 4 bits for saving a difference that is defined between a code of a register of the destination register field and that of the source register field, the difference corresponding to at least 16 registers, the registers corresponding to the at least one source register field and being defined as a stack pointer register and a zero register respectively, the capacity of the source register field being capable of saving the difference depending on its size minus what it takes for defining the two registers; b) providing two solutions to a problem resulting from that the instruction format in the step a) goes beyond range under some circumstances: (i) regarding the 64 (0-63) registers corresponding to the destination register field as an endless circle, namely deeming the 63rd and 0 register adjacent and connected with each other; (ii) reserving a plurality of the registers among the 64 registers and defining them as plural reserved registers, the plural reserved registers being spaced from one another for a predetermined number of the registers, the plural reserved registers being adapted for convenient insertion of a special movement instruction that can enable data movement among the registers of less than 9 bits (i.e. no more than 128 registers); and c) setting an allocation algorithm for finding a desired physical register among physical registers for the registers required by one instruction, the register allocation algorithm comprising steps of: c1) providing and grouping a plurality of pseudo registers according to the loop range of the instruction; if one of the pseudo registers is used by a lot of loops, that pseudo register will be precedentially assigned to the loop having more levels in the process of the grouping; as the loops are more, the priority is higher; c2) prioritizing the pseudo registers in each of the groups according to three conditions including frequency of occurrence of the pseudo register in the instruction, frequency of use of the pseudo register, and length of service cycle of the pseudo register; c3) combining the groups pursuant to the priorities of the groups; and c4) locating the physical register of lowest computational cost according to the frequency of use of the instruction and the number of the instruction beyond range among the pseudo registers, wherein this physical register is the desired one to be used, and then making the pseudo register correspond to this physical register.