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