在我的代码中,控制是从中断服务程序跳转到某个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。
答案 0 :(得分:2)
如果GHS compilers与GCC非常兼容(正如他们所声称的那样),那么他们可能会拥有GCC __builtin_return_address
(但这不是标准的,并且特定于GCC)。
最近的海湾合作委员会可能支持你的目标系统吗?如果是,从源代码构建GCC可能是值得的。
否则你需要编写自己的汇编代码。