[2021][Febrero][Problema 2]

[2021][Febrero][Problema 2]

de Camilo Fossemale Zanotta -
Número de respuestas: 1

Dos preguntas sobre la corrección propuesta para este ejercicio, 

1)el XOR DI, DI  no debería ir antes de la comparación, porque si entra al paso base de entrada, va a pushear un DI cargado con basura.

2)No me queda claro cómo calcula el consumo del stack del paso recursivo. Antes de hacer la llamada recursiva, se hacen tres push para salvar a)el valor de la dir.retorno vieja y b) el largo calculado c)el nuevo parámetro. Tampoco me queda claro si no habría que sumar dos bytes más para la nueva dir de retorno. No sería entonces 8 bytes por paso recursivo.  En caso de que lo que dije anteriormente sea correcto, cuańto sería el consumo?


En respuesta a Camilo Fossemale Zanotta

Re: [examen feb 2021] [ejercicio2]

de Federico Rivero -

Estimado,

1) Correcto, está mal ahí eso que señalás. Lo corrijo.

2) La solución es algo ingeniosa con el manejo del stack. Efectivamente en las líneas antes de la llamada recursiva se realizan 3 push más el call, por lo tanto se agregan 8 bytes al stack, pero a diferencia de otras soluciones, esta comienza realizando 2 POP, por lo tanto de esos 8 bytes que se agregan al stack, solo 4 son bytes 'extra' que se agregan en la llamada recursiva. Por lo tanto el consumo de stack es 4 bytes para cada llamada recursiva  y 4 bytes para el caso base.

Saludos,

           Federico