Examen 2017 Dic Problema 2

Examen 2017 Dic Problema 2

de Rodrigo Alain De La Vega Rodriguez -
Número de respuestas: 1

Buenas, el link de este examen es
https://eva.fing.edu.uy/pluginfile.php/44683/mod_folder/content/0/2017/solExAC201712.pdf?forcedownload=1

No entiendo como calcular el consumo del stack por lo que para esta pregunta me voy a basar en la solución dada en la parte a.

Al leer la solución de la parte b veo que dicen que el consumo del stack es 14*(n+1) pero no estoy logrando llegar a lo mismo. Si bien tengo la recursión con los 14 bytes y la entiendo, en mi caso tengo 6 bytes que estoy contando en el momento de la llamada a la función por lo que mi resultado seria 6 + 14n. 

Adjunto el stack con el que trabaje y ahí se puede ver como lo pienso. El ejemplo se basa en un árbol degenerado en una lista, solo con un nodo derecho.



Como pueden ver en el momento que hago la llamada estoy teniendo en cuenta esos 6 bytes que menciono, que para mi son el paso 0.
Mi pregunta es, hay que contar esos bytes o se cuenta desde el momento que estoy dentro de la función? O sea en la imagen seria cuando comienza el bloque de color amarillo... 

Si no se entiende me avisan y vuelvo a preguntar. Gracias. Saludos

En respuesta a Rodrigo Alain De La Vega Rodriguez

Re: Examen 2017 Dic Problema 2

de Federico Rivero -
Hola Rodrigo!

Creo que lo que te falta es llegar hasta el final con el cálculo. La última llamada es a un árbol NULL, y en esa llamada recursiva se agregan BP, CX, BX y DX y eso es lo último que se agrega al stack, porque luego de ahí se salta a la etiqueta FIN, que empieza a popear y RET. Entonces, volviendo a tu cálculo, en el stack vas a tener N secciones de 14 bytes como las que mostrás en amarillo (una por cada nodo), los 6 bytes que indicás vos de la primer llamada, y 8 bytes adicionales de contexto que se suman en el caso donde el puntero es NULL. En total da 14 * (n + 1)

Saludos,
Federico