TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

EXPLOIT

Resenha: EXPLOIT. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  29/6/2014  •  Resenha  •  315 Palavras (2 Páginas)  •  247 Visualizações

Página 1 de 2

Dependendo da implementação, a pilha pode crescer em direção aos endereços

altos ou baixos. O ponteiro de pilha também é de implementação dependente,

podendo apontar para o último endereço ocupado na pilha ou para o próximo

endereço livre. Como o texto trata da arquitetura Intel x86, iremos utilizar uma pilha

que cresce para os endereços baixos, com o ponteiro de pilha (registrador ESP)

apontando para o último endereço da pilha.

Além de um ponteiro de pilha, também é conveniente contar com um "ponteiro de

frame" (FP) que aponta para um endereço fixo no frame. A princípio, variáveis locais

podem ser referenciadas fornecendo-se seus deslocamentos em relação ao

ponteiro de pilha. Entretanto, quando palavras são inseridas e retiradas da pilha,

estes deslocamentos mudam. Apesar de em alguns casos o compilador poder

corrigir os deslocamentos observando o número de palavras na pilha, essa gerência

é cara. O acesso a variáveis locais a distâncias conhecidas do ponteiro de pilha

também iria requerer múltiplas instruções. Desta forma, a maioria dos compiladores

utiliza um segundo registrador que aponta para o topo da pilha no início da

execução da função, para referenciar tanto variáveis locais como parâmetros, já que

suas distâncias não se alteram em relação a este endereço com chamadas a PUSH

e POP. Na arquitetura Intel x86, o registrador EBP é utilizado para esse propósito.

Por causa da disciplina de crescimento da pilha, parâmetros reais têm

deslocamentos positivos e variáveis locais têm deslocamentos negativos a partir de

FP.

A primeira instrução que um procedimento deve executar quando chamado é salvar

o FP anterior, para que possa ser restaurado ao fim da execução. A função então

copia o registrador de ponteiro de pilha para FP para criar o novo ponteiro de frame

e ajusta o ponteiro de pilha para reservar espaço para as variáveis locais. Este

código é chamado de prólogo da função. Ao fim da execução, a pilha deve ser

restaurada e a execução deve retomar na instrução seguinte à de chamada da

função, o que chamamos de epílogo. As instruções CALL, LEAVE e RET nas

...

Baixar como (para membros premium)  txt (2.1 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com