[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [escepticos] Ackermann
Eloy Anguiano wrote:
>
> Alfonso A. C. wrote:
>
> > Uff... si bueno, no te niego que sea memoria, pero no memoria convencional,
> > sino que es tratada de forma aparte... la de codigo recursivo que he tenido
> > que rehacer en iterativo tras el archiconocido "stack overflow"
>
[Eloy]
> Te recuerdo que un:
>
> MOV BP,SP
>
> Te permite acceder al stack como memoria normal y corriente que es, lo
> unico que sucede es que PUSH y POP actuan amontonando en la memoria de
> arriba a abajo y desamontonando al reves.
>
> El stack overflow es porque rebosas el tamaño del stack. Es como si
> rebosases la memoria reservada a n array cualquiera pero este tiene
> control porque se desborda al reves, es decir, por 0 y el control de
> desbordamiento de stack es simple basta con que internamente si SP es 0
> no pueda hacerse un PUSH (que es lo que sucede).
>
> Para evitarlo basta con aumentar el tamaño de stack lo necesario.
>
No se si seria tan osado como para implementar recursividad en
assembler, pero si trabajas en C, donde creo la pila tiene mas o menos 1
MB, no debe ser tan facil tocar en ella como en assembler, o sea,
agotada la pila, debe ser bastante trabajoso superar el problema. Esta
funcion de Ackerman me reboso la pila de recursividad con A(4,1), que es
un resultado ridiculo, pues A(4,1) = 65000 y algo.
Mig