¿Cómo saber la dirección de retorno de una función?

En mi código, el control es saltar de una rutina de servicio de interrupción a alguna función X. Después de ejecutar esa función X, se está reiniciando porque no sabe a dónde debe regresar. ¿Puede decirme de qué registros debo ocuparme al saltar de la rutina de servicio de interrupción a la función X?

Guión:

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(); } 

Explicación : la función Z debe ejecutarse dentro de algún tiempo, por lo que estoy usando una interrupción de temporizador para alcanzar ese tiempo de espera. Estoy dando el paso 3 de la función x () dirección en la rutina de servicio de interrupción para que el control regrese después de un tiempo particular (el salto se logra al cambiar la dirección de la PC).

Hardware : procesador NEC V850E2, comstackdor GHS. Software : Embedded C.

Si los comstackdores de GHS son muy compatibles con GCC (como dicen), podrían tener el __builtin_return_address GCC (pero esto no es estándar, y es específico de GCC).

Tal vez su sistema de destino es compatible con un GCC reciente? Si es así, podría valer la pena construir GCC a partir del código fuente.

De lo contrario, necesita escribir su propio código de ensamblaje.