Skip to content
Related Articles

Related Articles

Subroutine, Subroutine nesting and Stack memory

Improve Article
Save Article
Like Article
  • Difficulty Level : Easy
  • Last Updated : 24 Jan, 2022

1. Subroutine – 
A set of instructions that are used repeatedly in a program can be referred to as Subroutine. Only one copy of this Instruction is stored in the memory. When a Subroutine is required it can be called many times during the Execution of a particular program. A call Subroutine Instruction calls the Subroutine. Care Should be taken while returning a Subroutine as Subroutine can be called from a different place from the memory. 

The content of the PC must be Saved by the call Subroutine Instruction to make a correct return to the calling program. 

Figure – Process of a subroutine in a program 

The subroutine linkage method is a way in which computers call and return the Subroutine. The simplest way of Subroutine linkage is saving the return address in a specific location, such as a register which can be called a link register call Subroutine. 

2. Subroutine Nesting – 
Subroutine nesting is a common Programming practice In which one Subroutine calls another Subroutine. 

Figure – Subroutine calling another subroutine 

From the above figure, assume that when Subroutine 1 calls Subroutine 2 the return address of Subroutine 2 should be saved somewhere. So if the link register stores the return address of Subroutine 1 this will be (destroyed/overwritten) by the return address of Subroutine 2. As the last Subroutine called is the first one to be returned ( Last in first out format). So stack data structure is the most efficient way to store the return addresses of the Subroutines. 

Figure – Return address of subroutine is stored in stack memory 

3. Stack memory – 
Stack is a basic data structure that can be implemented anywhere in the memory. It can be used to store variables that may be required afterward in the program Execution. In a stack, the first data put will be the last to get out of a stack. So the last data added will be the first one to come out of the stack (last in first out). 

Figure – Stack memory having data A, B & C 

So from the diagram above first A is added then B & C. While removing first C is Removed then B & A.
 

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!