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:
Przenieś zawartość rejestru
ebp
doT0
.Dodaj
4
do wartości wT0
pliku , aby utworzyć adres, pobrać wartość z tego adresu i zapisać wartość w rejestrzeeip
.Pobierz wartość z adresu przechowywanego w
T0
lokalizacji i zapisz wartość w rejestrzeebp
.Dodaj
8
wartość do plikuT0
i zapisz wartość w rejestrzeesp
.Pamiętaj, że ciąg programu jest specyficzny dla procesora CPU i konwencji wywoływania skonfigurowanej dla funkcji reprezentowanej przez bieżącą ramkę stosu.