Compartir a través de


IDiaFrameData::get_program

Recupera la cadena de programa que se usa para calcular el conjunto de registros antes de la llamada a la función actual.

Sintaxis

HRESULT get_program ( 
   BSTR* pRetVal
);

Parámetros

pRetVal

[out] Devuelve la cadena de programa.

Valor devuelto

Si la operación se realiza correctamente, devuelve S_OK. Devuelve S_FALSE si no se admite esta propiedad. De lo contrario, devuelve un código de error.

Observaciones

La cadena de programa es una secuencia de macros que se interpreta para establecer el prólogo. Por ejemplo, un marco de pila típico podría usar la cadena de programa "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =". El formato es la notación polaca inversa, donde los operadores siguen a los operandos. T0 representa una variable temporal en la pila. En este ejemplo se realizan los siguientes pasos:

  1. Mueva el contenido del registro ebp a T0.

  2. Agregue 4 al valor en T0 para producir una dirección, obtenga el valor de esa dirección y almacene el valor en el registro eip.

  3. Obtenga el valor de la dirección almacenada en T0 y almacene ese valor en el registro ebp.

  4. Agregue 8 al valor de T0 y almacene ese valor en el registro esp.

    Tenga en cuenta que la cadena de programa es específica de la CPU y de la convención de llamada configurada para la función representada por el marco de pila actual.

Consulte también