diff options
Diffstat (limited to 'plugins/pychrysalide/analysis/disass')
-rw-r--r-- | plugins/pychrysalide/analysis/disass/block.c | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/plugins/pychrysalide/analysis/disass/block.c b/plugins/pychrysalide/analysis/disass/block.c index 6855368..38e65a1 100644 --- a/plugins/pychrysalide/analysis/disass/block.c +++ b/plugins/pychrysalide/analysis/disass/block.c @@ -40,7 +40,8 @@ /* ------------------------ MISE EN PLACE DES BLOCS BASIQUES ------------------------ */ - +/* Fournit les instructions limites d'un bloc basique. */ +static PyObject *py_basic_block_get_boundaries(PyObject *, void *); @@ -51,6 +52,43 @@ /****************************************************************************** * * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * +* Description : Fournit les instructions limites d'un bloc basique. * +* * +* Retour : Première et dernière instructions du bloc. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_basic_block_get_boundaries(PyObject *self, void *closure) +{ + PyObject *result; /* Trouvailles à retourner */ + GBasicBlock *block; /* Bloc de code à consulter */ + GArchInstruction *first; /* Première instruction de bloc*/ + GArchInstruction *last; /* Dernière instruction de bloc*/ + + block = G_BASIC_BLOCK(pygobject_get(self)); + + g_basic_block_get_boundaries(block, &first, &last); + + result = PyTuple_New(2); + + PyTuple_SetItem(result, 0, pygobject_new(G_OBJECT(first))); + PyTuple_SetItem(result, 1, pygobject_new(G_OBJECT(last))); + + g_object_unref(G_OBJECT(first)); + g_object_unref(G_OBJECT(last)); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : - * * * * Description : Fournit un accès à une définition de type à diffuser. * @@ -68,6 +106,10 @@ PyTypeObject *get_python_basic_block_type(void) }; static PyGetSetDef py_basic_block_getseters[] = { + { + "boundaries", py_basic_block_get_boundaries, NULL, + "First and last instructions of the basic block.", NULL + }, { NULL } }; |