[英]Get %ebp ,%esp in C and output value in stack
当前,我正在解决一个问题,我需要在调用堆栈中输出一些值。 这是我所做的:
int funcA()
{
int a = 1;
int b = 2;
char c = '3';
asm("mov %ebp, ebp");
asm("mov %esp, esp");
printf("&a = %x\n", &a);
printf("&b = %x\n", &b);
printf("&c = %x\n", &c);
printf("esp = %X ebp = %X\n", esp, ebp);
}
esp和ebp已经预先声明。 上面的代码输出为:
&a = ff7f7c
&b = ff7f78
&c = ff7f77
esp = FF7F68 ebp = FF7F88
另一个问题是,如果我这样做:
printf("%x", ebp-4);
输出是
ff7f78
谁能向我解释为什么输出不是ff7f84?
谢谢大家!
不,编译器可以执行任何所需的操作。
不,编译器可以执行任何所需的操作。
您可能ebp
声明为char *
以外的东西。 您正在看到指针运算的结果。 在这种情况下,它看起来像是一个指向4字节类型的指针。 无论如何,您都不应该使用%x
来打印指针。 这就是%p
目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.