将堆栈帧链接列表和堆栈的十六进制内容从FP打印到堆栈帧

时间:2018-01-15 21:49:12

标签: c assembly stackframe

我给出了以下代码:

#include <stdio.h>
#include <stdlib.h>

int A(int x, int y);
int B(int x, int y);

int *FP;

int main(int argc, char *argv[], char *env[]){
  int a, b, c;
  printf("enter main\n");
  A(a,b);
  printf("exit main\n");

  return 0;
}

int A(int x, int y)
{
    int d, e, f;
    printf("enter A\n");
    d = 4; e = 5; f = 6;
    B(d,e);
    printf("exit A\n");
}

int B(int x, int y)
{
    int u, v, w;
    printf("enter B\n");
    u = 7; v = 8; w = 9;
    asm("movl %ebp, FP"); // set FP = CPU's %ebp register
    //Write C code to question here
    printf("exit B\n");
}

我要求:

  • 在B()中,FP指向堆栈中的堆栈帧链接列表。打印堆栈帧链接列表。
  • 在HEX中打印堆栈的地址和内容,从FP到main()的堆栈帧。

我不知道如何开始,并想知道我是否可以得到一些建议/提示。由于FP已经指向堆栈帧,它会是printf("%p", &FP)吗?非常感谢所有帮助。

0 个答案:

没有答案