Invoking a procedure (with or without parameters) in a structured language involves more than the generation of a "JUMP to Subroutine" machine language instruction for the CALL with a corresponding "Return from Subroutine" instruction in the called procedure.
In FORTRAN-66 - a non-structured language, if a subroutine
has no parameters, then a JSR-RET calling and returning
sequence is possible since all local variables are stored
in static memory rather than on the stack.
If parameters are involved, the code is still simple since
all parameters are passed by address = var parameters.
Why is it not so simple in a modern language?
Instruction Pointer: defines position in procedure code.
Contents of Data Frame: define local variables and parameters.
Pointers: indicating access to non-local data frames.
= Procedure Activation environment.
I.P.: variable used to index into code. == P
Data Frame: space on STACK S and Top of stack pointer T.
Pointers: B with L and A from instruction.
R.A. D.L. S.L.
(return address, dynamic and static links)