Все зависит от определения слов; что именно вы подразумеваете под словами «верх» и «низ» в этом контексте, а также под реализацией операционной системы или компьютерной архитектуры.
Я помню следующее давно, когда я программировал на Commodore 64. Память между адресами $ 0800 (2048) и $ 9FFF (40959) была зарезервирована для программ BASIC. Код вашей BASIC-программы хранился, начиная с нижнего адреса ($ 800, оттуда вверх). Стек для хранения переменных и адресов возврата подпрограмм начинался с вершины ($ 9FFF) этого диапазона и увеличивался в сторону более низких адресов. Таким образом, в этом контексте было логично видеть, что стек растёт вниз, и когда вы возвращаетесь из подпрограммы, кадр стека подпрограммы отбрасывается путем увеличения указателя стека, так что вы можете сказать, что «двигались вверх по стеку», когда возвращаясь из подпрограммы.
Я не знаю, как это работает на современных версиях, например, процессоров Windows или Intel x86. Возможно, стек работает наоборот, т. Е. Растет с более низких адресов на более высокие. Если бы это было так, то вы, вероятно, использовали бы слова «верх», «низ» и «вверх», «вниз» в точности наоборот.