Call-Ret (CALL & RET)
* Purpose: Used for procedure/function calls and returns.
* Function:
* `CALL`: Pushes the return address (the instruction address after the CALL instruction) onto the stack, then jumps to the called procedure's starting address.
* `RET`: Pops the return address from the stack and jumps to that address, effectively returning control to the calling procedure.
* Key features: Manages the flow of execution between different parts of a program.
* Relationship to Stack: Utilizes the stack to store and retrieve the return address, allowing for structured function calls and returns.
Push-Pop (PUSH & POP)
* Purpose: Used for saving and restoring data values on the stack.
* Function:
* `PUSH`: Pushes a specific value onto the top of the stack.
* `POP`: Removes the value at the top of the stack and puts it in a register or memory location.
* Key features: Provides a temporary storage mechanism for variables or data that needs to be preserved during program execution.
* Relationship to Stack: Directly interacts with the stack, manipulating the data stored within it.
In summary:
* Call-ret focuses on the control flow of the program.
* Push-pop focuses on data storage and retrieval.
They both rely on the stack, but their operations and purposes are distinct.