From ceeba88cafc4c7d2c625e53fb175b763e480f6ba Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Tue, 19 Jun 2018 20:19:56 +0200 Subject: Provided instruction unique identifiers as requested. --- plugins/pychrysalide/arch/instruction.c | 37 +++++++++++++++++++++++++++++++++ src/arch/instruction.c | 23 ++++++++++++++++++++ src/arch/instruction.h | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) 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 *); /** -- cgit v0.11.2-87-g4458