Ich weiß, dass in den Architekturen, mit denen ich persönlich vertraut bin (x86, 6502 usw.), der Stapel normalerweise nach unten wächst (dh jedes auf den Stapel geschobene Element führt zu einem dekrementierten SP, nicht zu einem inkrementierten).
Ich wundere mich über die historischen Gründe dafür. Ich weiß, dass es in einem einheitlichen Adressraum praktisch ist, den Stapel am gegenüberliegenden Ende des Datensegments zu starten (z. B.), sodass es nur dann ein Problem gibt, wenn die beiden Seiten in der Mitte kollidieren. Aber warum bekommt der Stapel traditionell den oberen Teil? Besonders wenn man bedenkt, wie das Gegenteil des "konzeptuellen" Modells ist?
(Beachten Sie, dass in der 6502-Architektur der Stapel auch nach unten wächst, obwohl er auf eine einzelne 256-Byte-Seite beschränkt ist und diese Richtungsauswahl willkürlich erscheint.)