IDiaFrameData::get_program
Récupère la chaîne de programme utilisée pour calculer le jeu de registres avant l’appel à la fonction active.
Syntaxe
HRESULT get_program (
BSTR* pRetVal
);
Paramètres
pRetVal
[sortie] Retourne la chaîne du programme.
Valeur renvoyée
En cas de réussite, retourne S_OK
. Retourne S_FALSE
si cette propriété n’est pas prise en charge. Sinon, retourne un code d'erreur.
Remarques
La chaîne de programme est une séquence de macros qui est interprétée pour établir le prologue. Par exemple, un frame de pile classique peut utiliser la chaîne de programme "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + ="
. Le format est la notation polonaise inverse, où les opérateurs suivent les opérandes. T0
représente une variable temporaire sur la pile. Cet exemple effectue les étapes suivantes :
Déplacez le contenu de lu registre
ebp
versT0
.Ajoutez
4
à la valeur dansT0
pour produire une adresse, obtenez la valeur de cette adresse et stockez la valeur dans le registreeip
.Récupérez la valeur de l’adresse stockée dans
T0
et stockez cette valeur dans le registreebp
.Ajoutez
8
à la valeur dansT0
et stockez cette valeur dans le registreesp
.Notez que la chaîne du programme est spécifique au processeur et à la convention d’appel configurée pour la fonction représentée par le frame de pile actuel.