IDiaFrameData::get_program
Recupera a seqüência do programa que é usada para calcular o registro definido antes da chamada para a função atual.
HRESULT get_program (
BSTR* pRetVal
);
Parâmetros
- pRetVal
[out] Retorna a seqüência do programa.
Valor de retorno
Se bem-sucedida, retorna S_OK. Retorna S_FALSE se não há suporte para esta propriedade. Caso contrário, retorna um código de erro.
Comentários
A seqüência do programa é uma seqüência de macros que é interpretada para estabelecer o prólogo. Por exemplo, um quadro de pilha típica pode usar a seqüência de caracteres do programa "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =". O formato é a notação reversa polonês, onde os operadores seguem os operandos. T0representa uma variável temporária na pilha. Este exemplo executa as seguintes etapas:
Move o conteúdo do registrador de ebp para T0.
Adicionar 4 com o valor em T0 para produzir um endereço, obter o valor desse endereço e armazenar o valor no registro de eip.
Obter o valor do endereço armazenado em T0 e armazene esse valor no registro de ebp.
Adicionar 8 com o valor em T0 e armazene esse valor no registro de esp.
Observe que a seqüência de caracteres do programa é específica para a CPU e a convenção de chamada definido para a função representada por um quadro de pilha atual.