Вы также можете отслеживать регистр ESP с помощью встроенной сборки.Регистр ESP содержит адрес незанятого стека.Так что, если что-то помещается в стек - ESP уменьшается, а если всплывает - ESP увеличивается.(Существуют другие команды, которые изменяют стек, например, вызов / возврат функции).
Например, что происходит со стеком, когда мы пытаемся вычислить рекурсивную функцию, такую как число Фибоначчи (Visual Studio):
#include <stdio.h>
int FibonacciNumber(int n) {
int stackpointer = 0;
__asm {
mov stackpointer, esp
}
printf("stack pointer: %i\n", stackpointer);
if (n < 2)
return n;
else
return FibonacciNumber(n-1) + FibonacciNumber(n-2);
}
int main () {
FibonacciNumber(10);
return 0;
}