需要在ARC Assembly中显示堆栈指针的位置

时间:2014-10-21 20:35:06

标签: assembly architecture stack

这是一个ARC程序,它调用子程序foo,并传递三个参数abc。子例程有两个局部变量mn。我正在尝试理解并显示堆栈指针的位置和相关堆栈元素的内容,以便在下面显示的程序中的基于堆栈的调用约定。请注意,子程序foo不会返回任何内容。

  1. 就在执行标签x;
  2. 之前的呼叫之前
  3. 当foo的堆栈帧完成时;
  4. 在标签z执行ld之前(即调用例程恢复时)。

    ! Push the arguments a, b, and c x: call foo z: ld %r1, %r2 . . . foo: ! Subroutine starts here . . y: jmpl %r15 + 4, %r0

  5. 任何帮助都值得赞赏!

1 个答案:

答案 0 :(得分:1)

检查here,章节4.6子程序链接和堆栈 第13页,“第三个调用约定使用堆栈”。

请注意,在调用中,不会自动使用堆栈。你必须推动回报 子程序代码中的地址。这在RISC架构中有点常见。