summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/pychrysalide/arch/instruction.c37
-rw-r--r--src/arch/instruction.c23
-rw-r--r--src/arch/instruction.h2
3 files changed, 61 insertions, 1 deletions
diff --git a/plugins/pychrysalide/arch/instruction.c b/plugins/pychrysalide/arch/instruction.c
index bb977ce..7d5462d 100644
--- a/plugins/pychrysalide/arch/instruction.c
+++ b/plugins/pychrysalide/arch/instruction.c
@@ -49,6 +49,9 @@
+/* Fournit l'identifiant unique pour un ensemble d'instructions. */
+static PyObject *py_arch_instruction_get_unique_id(PyObject *, void *);
+
/* Fournit la place mémoire d'une instruction. */
static PyObject *py_arch_instruction_get_range(PyObject *, void *);
@@ -207,6 +210,36 @@ static PyObject *py_arch_instruction_get_destinations(PyObject *self, void *unus
* Paramètres : self = classe représentant une instruction. *
* closure = adresse non utilisée ici. *
* *
+* Description : Fournit l'identifiant unique pour un ensemble d'instructions.*
+* *
+* Retour : Identifiant unique par type d'instruction et architecture. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_arch_instruction_get_unique_id(PyObject *self, void *closure)
+{
+ PyObject *result; /* Conversion à retourner */
+ GArchInstruction *instr; /* Version native */
+ itid_t uid; /* Identifiant unique associé */
+
+ instr = G_ARCH_INSTRUCTION(pygobject_get(self));
+
+ uid = g_arch_instruction_get_unique_id(instr);
+
+ result = PyLong_FromUnsignedLong(uid);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : self = classe représentant une instruction. *
+* closure = adresse non utilisée ici. *
+* *
* Description : Fournit la place mémoire d'une instruction. *
* *
* Retour : Valeur associée à la propriété consultée. *
@@ -384,6 +417,10 @@ PyTypeObject *get_python_arch_instruction_type(void)
static PyGetSetDef py_arch_instruction_getseters[] = {
{
+ "uid", py_arch_instruction_get_unique_id, NULL,
+ "Provide the unique identification number given to this kind of instruction.", NULL
+ },
+ {
"range", py_arch_instruction_get_range, py_arch_instruction_set_range,
"Give access to the memory range covered by the current instruction.", NULL
},
diff --git a/src/arch/instruction.c b/src/arch/instruction.c
index e2d8d2a..212b5b5 100644
--- a/src/arch/instruction.c
+++ b/src/arch/instruction.c
@@ -273,6 +273,29 @@ bool g_arch_instruction_set_flag(GArchInstruction *instr, ArchInstrFlag flag)
/******************************************************************************
* *
+* Paramètres : instr = instruction quelconque à consulter. *
+* *
+* Description : Fournit l'identifiant unique pour un ensemble d'instructions.*
+* *
+* Retour : Identifiant unique par type d'instruction et architecture. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+itid_t g_arch_instruction_get_unique_id(const GArchInstruction *instr)
+{
+ itid_t result; /* Numéro à retourner */
+
+ result = instr->uid;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : instr = instruction quelconque à modifier. *
* *
* Description : Fournit les informations complémentaires d'une instruction. *
diff --git a/src/arch/instruction.h b/src/arch/instruction.h
index 2201dd5..d89158e 100644
--- a/src/arch/instruction.h
+++ b/src/arch/instruction.h
@@ -90,7 +90,7 @@ bool g_arch_instruction_set_flag(GArchInstruction *, ArchInstrFlag);
ArchInstrFlag g_arch_instruction_get_flags(const GArchInstruction *);
/* Fournit l'identifiant unique pour un ensemble d'instructions. */
-itid_t g_arch_instruction_get_type_id(const GArchInstruction *instr);
+itid_t g_arch_instruction_get_unique_id(const GArchInstruction *);
/**