Sdílet prostřednictvím


IDiaFrameData::get_program

Načte řetězec programu, který se používá k výpočtu sady registru před voláním aktuální funkce.

Syntaxe

HRESULT get_program ( 
   BSTR* pRetVal
);

Parametry

pRetVal

[ven] Vrátí řetězec programu.

Vrácená hodnota

V případě úspěchu vrátí hodnotu S_OK. Vrátí S_FALSE , pokud tato vlastnost není podporována. V opačném případě vrátí kód chyby.

Poznámky

Řetězec programu je posloupnost maker, která se interpretují za účelem vytvoření prologue. Například typický rámec zásobníku může použít řetězec "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + ="programu . Formát je reverzní leštěný zápis, kde operátory následují operandy. T0 představuje dočasnou proměnnou v zásobníku. Tento příklad provede následující kroky:

  1. Přesunout obsah registru ebp do T0.

  2. Přidejte 4 k hodnotě T0 pro vytvoření adresy, získejte hodnotu z této adresy a uložte hodnotu v registru eip.

  3. Získá hodnotu z adresy uložené v T0 registru a uloží ji do registru ebp.

  4. Přidejte 8 k hodnotě T0 a uložte ji v registru esp.

    Všimněte si, že řetězec programu je specifický pro procesor a konvence volání nastavené pro funkci reprezentovanou aktuálním rámcem zásobníku.

Viz také