The rule is that each function call results in a creation of a stack frame.
When a function call is made, function's arguments are PUSHed on stack. These arguments are further referenced by base pointer.
When the function returns to its caller, the arguments of the returning function are POPed from the stack using LIFO method.
Since there is no function call is embedded, the expression can be evaluated by using only one stack.