A chain of subprogram calls, from the initial entry point down to the currently executing subprogram. Each subprogram call is represented by a frame on the downward-growing call stack, in which newly entered subprograms are added to the bottom of the stack.