[Practico7] [Ej3] segunda parte

[Practico7] [Ej3] segunda parte

de Pedro Daniel Cremona Fernandez -
Número de respuestas: 7

Buenas porque el tamaño maximo de la pila es 2 + 4*255? es porque en cada llamada recursiva ademas de guardar BX tambien se guarda el IP? además porque primero se suma 2? siempre se guarda el IP?

Muchas gracias. 

En respuesta a Pedro Daniel Cremona Fernandez

Re: [Practico7] [Ej3] segunda parte

de Federico Rivero -

Hola!

Primero que nada ese resultado es en particular para la solución que dimos en el práctico y bajo las suposiciones que se hicieron. Dicho esto, te conviene repasar qué es lo que hace la instrucción call. En la cartilla y en el teórico está explicado. Si persisten las dudas por favor volvé a escribir.

Saludos!

En respuesta a Federico Rivero

Re: [Practico7] [Ej3] segunda parte

de Pedro Daniel Cremona Fernandez -

gracias, lo que no tenia claro era el cocepto de llamada far y near, near es cuando llamo a un procedimiento "local"  como por ejemplo el propio procedimiento y far es cuando llamo a otro procedimiento con el call? otra duda más porque es 255 la cantidad maxima de elementos del arbol? muchas gracias.

En respuesta a Pedro Daniel Cremona Fernandez

Re: [Practico7] [Ej3] segunda parte

de Martin Giachino -

Near es cuando saltas a una dirección dentro de tu mismo segmento (lo que tú llamas "local"), y far cuando no lo está. Te recomiendo que leas un poco mas sobre eso.

Sobre por qué es 255, como te dijo Federico eso depende del problema particular, cuantas llamadas hay y cuantos bytes se guardan en el stack cada vez. Dado que el stack segment tiene un máximo, el 255 sale de esa división entre lo que guardan y el máximo del stack

 

Martín

En respuesta a Martin Giachino

Re: [Practico7] [Ej3] segunda parte

de Matias Fernando Banchero Martinez -

Yo me quedé con la misma duda sobre el 255 y sigo sin entender con las explicaciones.

En mi razonamiento, el peor caso sería cuando el árbol sólo tiene nodos izq. Entonces, habrá 1 paso base (para el cual se necesitan 2 bytes del stack) y MAX_NODOS-1 pasos recursivos (para los cuales se necesitan 4 bytes en el stack).

Por lo tanto: TAM_MIN_STACK = 2 + 4*(MAX_NODOS-1)

¿Esto esta bien o estoy errando en algo? Si esta bien, ¿cómo se calcula el tamaño máximo de nodos?

Gracias, saludos.

En respuesta a Matias Fernando Banchero Martinez

Re: [Practico7] [Ej3] segunda parte

de Federico Rivero -

Matías:

Tu razonamiento es correcto. En realidad la consideración particular que se hizo durante el práctico es que como el array arbol  es indexado por un byte (los campos hijoIzq e hijoDer son de tipo byte), eso da como máximo 256 nodos (puesto que el número 257 y siguientes no se podrían apuntar desde otro nodo), por lo tanto no tendría sentido que el valor MAX_NODOS fuera mayor que 256. Sustituyendo ese valor en la fórmula que presentás da el mismo resultado.

Saludos!