mmozeiko
Yes, currently compilers use stack like this. But nothing is preventing compiler writers to use/allocate stack differently.
As a slight digression, languages with lexical closures and continuations often require a tree-shaped "stack", usually referred to as a
cactus stack. ML is arguably the best example. JavaScript is arguably the worst example.
Also, some languages require multiple stacks for their semantics, although smart compilers can usually compile one of these out or combine them into a single stack. Prolog, for example, usually has a separate stack (called a "trail" in WAM-speak) for undoing variable bindings when backtracking.
The SECD machine, often used to implement Lisp, has two stacks called the "stack" and the "dump". Confusingly, the stack is usually implemented using machine registers and the dump is implemented using the stack.