You seem to be confused with theoretical stack-based machines with their clear implementation, and their practical implementations. There's no reason why stack-based machine cannot have one instruction to add a constant, for example "addc 125" to add 125 to the top of the stack.
Similarly, there's no reason why register-based VMs wouldn't have push/pop instructions.
Similarly, there's no reason why register-based VMs wouldn't have push/pop instructions.