Partager via


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 :

  1. Déplacez le contenu de lu registre ebp vers T0.

  2. Ajoutez 4 à la valeur dans T0 pour produire une adresse, obtenez la valeur de cette adresse et stockez la valeur dans le registre eip.

  3. Récupérez la valeur de l’adresse stockée dans T0 et stockez cette valeur dans le registre ebp.

  4. Ajoutez 8 à la valeur dans T0 et stockez cette valeur dans le registre esp.

    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.

Voir aussi