5.12 Procedures and the Stack
Because procedures use the stack to hold the return address, you must exercise caution when pushing and popping data within a procedure. Consider the following simple (and defective) procedure:
procedure MessedUp; @noframe; @nodisplay; begin MessedUp; push( eax ); ret(); end MessedUp;
At the point the program encounters the ret
instruction, the 80x86 stack takes the form shown in Figure 5-1.
Figure 5-1. Stack contents before ret
in MessedUp
procedure
The ret
instruction isn't aware that the value on the top of stack is not a valid address. It simply pops whatever value is on the top of the stack and jumps to that location. ...
Get The Art of Assembly Language, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.