Pasaje de parámetros en funciones recursivas.

Pasaje de parámetros en funciones recursivas.

de Nelson Juambeltz Zucca -
Número de respuestas: 3

Cuando se implementa una función recursiva y se llega al paso base, los parámetros se retornan en general a través del stack.

Suponiendo el caso donde no interesa preservar los registros, y no se pusheo nada ademas del parámetro, se tiene en el tope del stack el parámetro deseado, y debajo el valor del ip. Por lo tanto, cuando se ejecute ret, el valor del parámetro pasara a estar en el registro ip y el programa se rompe. 

Hay alguna solución mejor para este problema, que previo a pushear el parámetro, popear el valor del ip a un registro, pushear el parámetro, pushear el registro al que se popeo el ip y luego de esto hacer ret?

En respuesta a Nelson Juambeltz Zucca

Re: Pasaje de parámetros en funciones recursivas.

de Federico Rivero -

Estimado,

Esa solución está bien, es lo que hacemos la mayoría de las veces. No creo que eso responda tu pregunta, pero quizás se acerca.

Saludos,

       Federico

En respuesta a Federico Rivero

Re: Pasaje de parámetros en funciones recursivas.

de Nelson Juambeltz Zucca -

Buenaso, gracias.

En caso de que me interesara preservar todos los registros, como se habria que hacer?

En respuesta a Nelson Juambeltz Zucca

Re: Pasaje de parámetros en funciones recursivas.

de Federico Rivero -

Estimado,

Para preservar el valor de los registros tenés que guardarlos en el stack al inicio de la rutina (PUSH) y luego recuperarlos desde el stack al finalizar (POP). En este caso, se debe acomodar los parámetros de retorno y el IP ANTES de realizar el POP que recupera el estado de los registros.

Si te quedan dudas, hay muchos exámenes y ejercicios de práctico que muestran esto.

Saludos,

    Federico