S
spinoza1111
Well, given the presumptions
1) a function can not execute before it has obtained its arguments
2) a function can not return a value to it's caller before it has
finished its computations.
3) a caller cannot continue ("is blocked") until the callee has returned
its value.
I can see no stack (abstract or concrete) in the above, only ordered
events.
You're blind. You fail to see the difference between "a function" and
"the invocation of a function". 1, 2, and 3 still hold:
1) a function invocation can not execute before it has obtained its
arguments
2) a function invocation can not return a value to its caller before
it has
finished its computations.
3) a function invocation that invokes another function cannot continue
("is blocked") until the callee function has returned its value
But where does a function invocation obtain its arguments? Are they
stored in the space of the calling invocation as was the case in
assembler on the main frame? But if the calling invocation calls
itself directly or indirectly the arguments of the outer invocation
are destroyed, aren't they?
I've got an idea. It's called a stack.
its value.