On Thu, Jun 19, 2003 at 02:54:53PM +0200, Eli Billauer wrote: > Hello Orna. > > What I would do, is to write a small function which returns the value of > the stack pointer, when it was called. It's not very accurate, but it > can give a good indication of how heavily the stack is consumed.
There are two ways to do this, both straight out of "introduction to
operating systems"
int foo(void)
{
char b;
unsigned long stackaddr = &b;
fprintf(stdout, "stack is roughly at %lx\n", stackaddr);
}
and the other, much more elegant, is using inline asm to get the value
of %esp.
#include <stdio.h>
static inline unsigned long getstack(void)
{
unsigned long stackaddr;
/* I think the constraints are correct, but won't bet on it */
asm volatile("movl %%esp,%0\n\t" :"=m" (stackaddr):);
return stackaddr;
}
int main(int argc, char* argv[])
{
fprintf(stdout, "stack pointer: 0x%lx\n", getstack());
return 0;
}
--
Muli Ben-Yehuda
http://www.mulix.org
http://www.livejournal.com/~mulix/
pgp00000.pgp
Description: PGP signature
