Udostępnij za pośrednictwem


IDiaFrameData::get_program

Pobiera ciąg programu używany do obliczania zestawu rejestrów przed wywołaniem bieżącej funkcji.

Składnia

HRESULT get_program ( 
   BSTR* pRetVal
);

Parametry

pRetVal

[out] Zwraca ciąg programu.

Wartość zwracana

Jeśli operacja powiedzie się, zwraca wartość S_OK. Zwraca wartość S_FALSE , jeśli ta właściwość nie jest obsługiwana. W przeciwnym razie zwraca kod błędu.

Uwagi

Ciąg programu to sekwencja makr interpretowanych w celu ustanowienia prologu. Na przykład typowa ramka stosu może używać ciągu "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + ="programu . Format jest odwrotną notacją polerowaną, gdzie operatory podążają za operandami. T0 reprezentuje zmienną tymczasową na stosie. W tym przykładzie są wykonywane następujące kroki:

  1. Przenieś zawartość rejestru ebp do T0.

  2. Dodaj 4 do wartości w T0 pliku , aby utworzyć adres, pobrać wartość z tego adresu i zapisać wartość w rejestrze eip.

  3. Pobierz wartość z adresu przechowywanego w T0 lokalizacji i zapisz wartość w rejestrze ebp.

  4. Dodaj 8 wartość do pliku T0 i zapisz wartość w rejestrze esp.

    Pamiętaj, że ciąg programu jest specyficzny dla procesora CPU i konwencji wywoływania skonfigurowanej dla funkcji reprezentowanej przez bieżącą ramkę stosu.

Zobacz też