A stack-based language necessarily contains at least "push" and "pop" instructions. However, these typically aren't the only ways to manipulate the stack. For example, several languages have an instruction to swap the two values at the top of the stack. Trilangle has an instruction to look arbitrarily far down the stack, but I don't know how common that is.
What are some of the most common stack manipulation operations, and what benefits do they provide?