Я знаю, що в архітектурах, з якими я особисто знайомий (x86, 6502 та ін.), Стек зазвичай росте вниз (тобто кожен елемент, що надходить у стек, призводить до зменшеного SP, а не до збільшеного).
Мені цікаво про історичне обгрунтування цього. Я знаю, що в уніфікованому адресному просторі зручно запускати стек на протилежному кінці сегмента даних (скажімо), тому існує проблема лише в тому випадку, якщо обидві сторони стикаються посередині. Але чому стек традиційно отримує верхню частину? Особливо з огляду на те, як це протилежність «концептуальній» моделі?
(І зауважте, що в архітектурі 6502 стек також зростає вниз, хоча він обмежений однією 256-байтовою сторінкою, і цей вибір напрямку виглядає довільним.)