Difference between revisions of "W1251 Parameter Passing"
m (Merlin moved page Project-1251 to W1251 Parameter Passing: Improved navigation) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Prerequisites == | |||
* [[W1215 Function Signatures]] | |||
== Background == | == Background == | ||
* Pass-by-Value | |||
* Pass-by-Reference | |||
=== The Stack === | === The Stack === | ||
An operating system provides an executing program with a structure called a '''stack'''. (Multithreaded programs may be provided with one stack per thread.) The stack is used by the application to ensure that when the invocation of a function completes, controls returns to the proper location, i.e., the next statement after the function invocation. A stack is a data structure that maintains its elements in a certain order, namely '''Last-In-First-Out'''. This means that the most recent element placed on the stack is the first one to be removed. Placing an element on the stack is performed by a '''PUSH''' operation, while removing an element from the stack (always the top-most element), is performed by a '''POP''' operation. The ''top'' of the stack is tracked in a special processor register called the '''stack pointer'''. | An operating system provides an executing program with a structure called a '''stack'''. (Multithreaded programs may be provided with one stack per thread.) The stack is used by the application to ensure that when the invocation of a function completes, controls returns to the proper location, i.e., the next statement after the function invocation. A stack is a data structure that maintains its elements in a certain order, namely '''Last-In-First-Out'''. This means that the most recent element placed on the stack is the first one to be removed. Placing an element on the stack is performed by a '''PUSH''' operation, while removing an element from the stack (always the top-most element), is performed by a '''POP''' operation. The ''top'' of the stack is tracked in a special processor register called the '''stack pointer'''. | ||
Line 28: | Line 34: | ||
== Research == | == Research == | ||
* Read [[Media:ComputerScienceOne.pdf| Section 5.2 (Computer Science I Textbook by Bourke)]] | * Read [[Media:ComputerScienceOne.pdf| Section 5.2 (Computer Science I Textbook by Bourke)]] | ||
* View [https://www.youtube.com/watch?v=d-2Peb3pCBg The Stack (YouTube-Abelardo Pardo)] |
Latest revision as of 19:43, 19 June 2019
Prerequisites[edit]
Background[edit]
- Pass-by-Value
- Pass-by-Reference
The Stack[edit]
An operating system provides an executing program with a structure called a stack. (Multithreaded programs may be provided with one stack per thread.) The stack is used by the application to ensure that when the invocation of a function completes, controls returns to the proper location, i.e., the next statement after the function invocation. A stack is a data structure that maintains its elements in a certain order, namely Last-In-First-Out. This means that the most recent element placed on the stack is the first one to be removed. Placing an element on the stack is performed by a PUSH operation, while removing an element from the stack (always the top-most element), is performed by a POP operation. The top of the stack is tracked in a special processor register called the stack pointer.
PUSH Operation[edit]
The PUSH operation performs the following steps:
- Write the data to the location immediately above the current stack pointer
- Decrement the stack pointer so that it points at the next available location
Let's consider an example where we push three elements on to the stack: 57, 42, and 84. We begin with an empty stack. | |
We then PUSH(57). Remember that we write the data to the location immediately above the current stack pointer and then decrement the stack pointer. | |
We then PUSH(42). | |
And finally, we PUSH(84). |