This standard defines three basic types of procedures. A compiler may choose which type to generate based on the requirements of the procedure in question.
The standard procedure types are:
Some procedures maintain their call frame on the stack, others maintain their call frame entirely in registers (although they may use the stack). Very simple procedures do not necessarily maintain any call frame at all and simply execute in the context of their caller. The calling procedure need not distinguish these cases.