Sé que en las arquitecturas con las que estoy familiarizado (x86, 6502, etc.), la pila generalmente crece hacia abajo (es decir, cada elemento insertado en la pila da como resultado un SP decrementado, no uno incrementado).¿Por qué las pilas normalmente crecen hacia abajo?
Me pregunto acerca de la razón histórica para esto. Sé que en un espacio de dirección unificado, es conveniente comenzar la pila en el extremo opuesto del segmento de datos (por ejemplo), por lo que solo hay un problema si los dos lados colisionan en el medio. ¿Pero por qué la pila tradicionalmente obtiene la parte superior? ¿Especialmente dado que esto es lo opuesto al modelo "conceptual"?
(Y tenga en cuenta que en la arquitectura de 6502, la pila también crece hacia abajo, a pesar de que está limitada a una sola página de 256 bytes, y esta elección dirección parece arbitrario.)
Me gusta la historia de estrategia de detección de Z80 RAM. Tiene sentido que los segmentos de texto se desarrollen hacia arriba, los programadores de antaño tenían un contacto un tanto más directo al tratar con las implicaciones de eso que la pila. Gracias paxdiablo. El puntero al conjunto de formas alternativas de implementaciones de pila también es muy interesante. –
¿La memoria de los primeros días no tiene forma de notificar su tamaño y tenemos que calcularla manualmente? –
@ LưuVĩnhPhúc, tengo que asumir que eres una generación (o dos) detrás de mí. Aún recuerdo el método TRS-80 modelo 3 para obtener la fecha y la hora para * preguntarle al usuario * en el momento del arranque. Tener un escáner de memoria para establecer el límite superior de la memoria se consideró de última generación en el día :-) ¿Te imaginas lo que sucedería si Windows preguntase la hora o la cantidad de memoria que tenías cada vez que arrancabas? – paxdiablo