如何知道函数的返回地址?

时间:2011-11-11 12:31:45

标签: c

在我的代码中,控制是从中断服务程序跳转到某个X函数。执行该X函数后,它正在执行重置,因为它不知道应该返回的位置。你能否告诉我从中断服务程序跳转到功能X时需要注意哪些寄存器?

情境:

Function m() {
    Function x();
}

Function x() {
    Step1:
    Step2:call Function Y();
    Step3: 
}

Function y() {
    Step1:Enable interrupt;
    Step2:call function z();
    step3:disable interrupt;
}

interrupt() {
    Step1:Jump Step 3 of function x();
}

解释:函数Z应该在一段时间内执行,所以我使用定时器中断来实现超时。我在中断服务程序中给出了函数x()地址的第3步,以便控制在特定的持续时间后返回(通过改变PC地址实现跳转)。

硬件:NEC V850E2处理器,GHS编译器。 软件:嵌入式C。

1 个答案:

答案 0 :(得分:2)

如果GHS compilers与GCC非常兼容(正如他们所声称的那样),那么他们可能会拥有GCC __builtin_return_address(但这不是标准的,并且特定于GCC)。

最近的海湾合作委员会可能支持你的目标系统吗?如果是,从源代码构建GCC可能是值得的。

否则你需要编写自己的汇编代码。