No estoy familiarizado con la arquitectura MIPS, pero si está usando gcc, hay un gcc incorporado para este propósito:
void * __builtin_return_address (unsigned int level);
La documentación integrada de gcc (http://gcc.gnu.org/onlinedocs/gc…) dice lo siguiente:
Esta función devuelve la dirección de retorno de la función actual o de uno de sus llamantes. El argumento de nivel es el número de tramas para escanear la pila de llamadas. Un valor de 0 produce la dirección de retorno de la función actual, un valor de 1 produce la dirección de retorno del llamador de la función actual, y así sucesivamente
- ¿Por qué necesitamos estudiar el microcontrolador 8051?
- ¿Cuál es la diferencia entre arduino y pic?
- ¿Cuáles son las mejores prácticas de diseño de sistemas integrados?
- ¿Es el sistema embebido lo mismo que una computadora de placa única?
- ¿Qué tipo de pasantías son mejores si uno está interesado en sistemas integrados, investigación o capacitación industrial?
Entonces, puedes hacer algo como esto:
#include void foo() { printf("%p\n", __builtin_return_address(1)); } int main (int argc, const char* argv[]) { foo(); }