Initially, ESP refers to the empty space of memory.
When I push something such as push 1, then it will refers to the memory location of 1, or next empty space?
here is the example
push ebp
mov ebp, esp
/*
---------
(empty space) <- esp, ebp
---------
ebp (initially stack pointer was here)
---------
*/
Another question is that when I make an empty stack space, which point ESP will points?
Here is the example: (each memory location is 4 bytes)
/*
--------
1 <- initial esp
--------
*/
sub esp, 12
; now esp points to this one
/*
--------
4 <- esp
--------
3
--------
2
--------
1
--------
*/
; or this one
/*
--------
3 <- esp
--------
2
--------
1
--------
*/
Assume that numbers are the memory location addresses
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…