Uma matriz é da perspectiva dos programadores, fixa no local e no tamanho, você sabe onde está e onde está a coisa toda. Você tem acesso a tudo isso.
Com uma pilha, você fica sentado em uma das extremidades, mas não tem idéia do tamanho ou do quão longe pode ir com segurança. Seu acesso a ele é limitado à quantia que você alocou, muitas vezes você nem sabe se, ao alocar a quantia que queria, se tivesse acabado de bater no heap ou no espaço do programa. Sua visão de uma pilha é uma pequena matriz que você alocou, o tamanho que você queria, você tem controle e pode ver. Sua parte não é diferente de uma matriz. A diferença é que sua matriz está presa a uma extremidade de outra matriz por razões de argumento e terminologia, das quais você não tem visibilidade, não tem idéia de quão grande ou pequeno, e você não pode tocá-la sem causar danos. Uma matriz, a menos que global, é geralmente implementada na pilha de qualquer maneira, portanto, a matriz e a pilha compartilham o mesmo espaço pela duração dessa função.
Se você deseja entrar no lado do hardware, é claro que é específico do processador, mas geralmente a matriz é baseada em um ponto / endereço de partida conhecido, o tamanho é conhecido pelo compilador / programador e os endereços são computados, às vezes, usando o endereçamento de deslocamento de registro (carrega um valor do endereço definido por esse valor de registro base mais esse valor de registro de deslocamento, da mesma forma que quando compilado, poderia ser um deslocamento imediato, não necessariamente baseado em registro, depende do processador, é claro) que na montagem se assemelha a acessar uma matriz em código de alto nível. Da mesma forma, com a pilha, se disponível, você pode usar o registro ou o endereçamento de deslocamento imediato, geralmente usando um registro especial, o próprio ponteiro da pilha ou um registro reservado pelo compilador / programador a ser usado para acessar o quadro da pilha para esse função. E para alguns processadores, funções especiais de acesso à pilha são usadas e / ou necessárias para acessar a pilha. Você tem instruções push e pop, mas elas não são usadas com a frequência que você imagina e realmente não se aplicam a essa pergunta. Para alguns processadores, push e pop são aliases de instruções que podem ser usadas com qualquer registrador, em qualquer lugar, não apenas com o ponteiro da pilha na pilha, removendo ainda mais o push e pop de serem relacionados a esta pergunta.