Using subroutines also means you have to keep track of the caller, that is the return address. Some architectures have a dedicated stack for this purpose, while others implicitly use the “normal” stack. MIPS by default only uses a register, but in non-leaf functions (ie. functions that call other functions) that return address is overwritten.
For More Information Please Refer: