Eroxl's Notes
Procedure

A procedure is the higher level generalization of a subroutine with its own name, arguments and local scope. Procedures can be called which causes their encased code to be run, and possibly a result bound when the function returns.

int fib(n) {
	if (n == 0 || n == 1) return n;

	return fib(n-1) + fib(n-2);
}

Example of a procedure that returns the nth value of the Fibonacci sequence in C.

Low Level Implementation

Call Stack

Procedures can be implemented using a call stack to store and retrieve required information about the procedure such as the return address and any arguments.