Масив з точки зору програмістів, закріплений за місцем і розміром, ви знаєте, де ви знаходитесь в ньому і де вся справа. Ви маєте доступ до всього цього.
Зі штабелем ви сидите на одному кінці його, але не маєте уявлення про його розмір і про те, як далеко ви можете спокійно зайти. Ваш доступ до нього обмежений сумою, яку ви виділили, ви часто навіть не знаєте, чи виділяєте потрібну суму, якщо ви просто засунули в кучу чи програму. Ваш погляд на стек - це невеликий масив, який ви самі виділили, розмір, який ви хотіли, ви маєте контроль над і можете бачити. Ваша частина не відрізняється від масиву. Різниця полягає в тому, що ваш масив прикріплений до кінця іншого масиву заради аргументів та термінології, які ви не маєте видимості, не маєте ідеї, наскільки великий чи малий, і ви не можете доторкнутися до нього, не завдаючи шкоди. Масив, якщо не глобальний, часто все-таки реалізується на стеку, тому масив та стек ділять однаковим простором протягом тривалості цієї функції.
Якщо ви хочете потрапити на апаратну сторону, то, звичайно, це процесор, але звичайно масив заснований на відомій початковій точці / адресі, розмір відомий компілятором / програмістом, а адреси обчислюються в ньому, іноді використовуючи адресацію зміщення регістру (завантажуйте значення з адреси, визначеної цим базовим регістровим значенням, плюс це значення регістру зміщення; аналогічно при компіляції це може бути негайне зміщення, не обов'язково засноване на реєстрації, залежить від процесора, звичайно), яке в зборі дуже нагадує доступ до масиву в коді високого рівня. Точно так само і з стеком, якщо він є, ви можете використовувати реєстрацію або негайну зміщення адреси, часто, хоча для цього використовується спеціальний реєстр, або сам покажчик стека, або реєстр, зарезервований компілятором / програмістом, який буде використовуватися для доступу до кадру стека для цього функція. А для деяких процесорів використовуються спеціальні функції доступу до стеку та / або потрібні для доступу до стеку. У вас є інструкції push і pop, але вони використовуються не так часто, як ви могли б подумати, і справді не застосовуєтесь до цього питання. Для деяких процесорів push і pop - псевдоніми для інструкцій, які можна використовувати з будь-яким регістром у будь-якому місці, а не лише вказівником стека на стеку, що надалі усуває зв'язок push та pop з цим питанням.