O que é stack? (nos CISCs) - Processadores - Clube do Hardware
O que é stack? (nos CISCs)
Por mshonorato, 5 de outubro de 2008 em Processadores
mshonorato 0
Olá pessoal, alguém saberia me dizer o que é stack?
Só sei que está relacionado aos processadores CISC...
stack é literalmente uma pilha, e não é usada apenas nos "CISC".
A pilha é um artifício utilizado na programação que impõe a regra de acesso, o primeiro item a entrar é o último a sair, imagine uma pilha de livros, você só vai poder tirar o último (que foi o primeiro a entrar na pilha) depois que retirar todos os outros.
No caso que você falou a principal utilização é o endereço de retorno de chamadas (e as variaveis locais, mas deixa essas para la para não complicar), imagine uma função a, que chama a função b que chama uma função c, que chama uma função d, a pilha ficaria mais ou menos assim:
assim que a excução do programa sair da função d ele volta para a c (que é a que esta no topo da fila), removendo-a da fila, depois b e por fim a.
Eis a vantagem de jogar magic! saber como funciona a pilha!!
Mas os CISCs costumam suportar uma stack diretamente no hardware, pelo menos "nominalmente". Enquanto isso, nos RISCs, o compilador tende a administrar esse tipo de coisa, reservar os registradores necessários, etc...
Só comentando a diferença... bem na verdade um bom CISC implemente pelo menos uma "Instrução Maníaca em Microcódigo que Implementa um Programa Inteiro em C contido nas Ferramentas UNIX" TM...
Enquanto isso, nos RISCs, o compilador tende a administrar esse tipo de coisa, reservar os registradores necessários, etc...
Muitos "RISC"s possuem um registrador destinado a pilha, já faz tempo que isso não é exclusividade dos CISC.
"Se todos precisam da droga da pilha forneçam as instruções para manipulá-la, p@#$%".
Por isso que eu disse que "na verdade um bom CISC implemente pelo menos uma "Instrução Maníaca em Microcódigo que Implementa um Programa Inteiro em C contido nas Ferramentas UNIX" TM..."
Implementar instruções especiais para manipular uma estrutura que todo mundo usa é bem razoável, principalmente em alguns casos. Coisas bem mais complexas que costumam definir um CISC típico... não? Os ARMs, por exemplo, já há um bom tempo têm funções bem pouco típicas para um RISC (ou um CISC...), mas que são de uso geral.