diff options
Diffstat (limited to 'src/arch/arm')
| -rw-r--r-- | src/arch/arm/instruction.c | 4 | ||||
| -rw-r--r-- | src/arch/arm/processor.c | 63 | ||||
| -rw-r--r-- | src/arch/arm/v456/instruction.c | 4 | 
3 files changed, 62 insertions, 9 deletions
diff --git a/src/arch/arm/instruction.c b/src/arch/arm/instruction.c index 70517b3..77dd621 100644 --- a/src/arch/arm/instruction.c +++ b/src/arch/arm/instruction.c @@ -101,7 +101,7 @@ static void g_arm_instruction_init(GArmInstruction *instr)  *                                                                             *  *  Paramètres  : data = flux de données à analyser.                           *  *                pos  = position courante dans ce flux.                       * -*                len  = taille totale des données à analyser.                 * +*                end  = limite des données à analyser.                        *  *                                                                             *  *  Description : Recherche l'identifiant de la prochaine instruction.         *  *                                                                             * @@ -111,7 +111,7 @@ static void g_arm_instruction_init(GArmInstruction *instr)  *                                                                             *  ******************************************************************************/ -ArmOpcodes arm_guess_next_instruction(const bin_t *data, off_t pos, off_t len) +ArmOpcodes arm_guess_next_instruction(const bin_t *data, off_t pos, off_t end)  {      ArmOpcodes result;                   /* Identifiant à retourner     */ diff --git a/src/arch/arm/processor.c b/src/arch/arm/processor.c index 44dcb19..4bd342f 100644 --- a/src/arch/arm/processor.c +++ b/src/arch/arm/processor.c @@ -52,6 +52,12 @@ static void g_arm_processor_class_init(GArmProcessorClass *);  /* Initialise une instance de processeur ARM. */  static void g_arm_processor_init(GArmProcessor *); +/* Supprime toutes les références externes. */ +static void g_arm_processor_dispose(GArmProcessor *); + +/* Procède à la libération totale de la mémoire. */ +static void g_arm_processor_finalize(GArmProcessor *); +  /* Décode une instruction dans un flux de données. */  static GArchInstruction *g_arm_processor_decode_instruction(const GArmProcessor *, GProcContext *, const bin_t *, off_t *, off_t, vmpa_t, GBinFormat *); @@ -75,6 +81,17 @@ G_DEFINE_TYPE(GArmProcessor, g_arm_processor, G_TYPE_ARCH_PROCESSOR);  static void g_arm_processor_class_init(GArmProcessorClass *klass)  { +    GObjectClass *object;                   /* Autre version de la classe  */ +    GArchProcessorClass *proc;              /* Encore une autre vision...  */ + +    object = G_OBJECT_CLASS(klass); + +    object->dispose = (GObjectFinalizeFunc/* ! */)g_arm_processor_dispose; +    object->finalize = (GObjectFinalizeFunc)g_arm_processor_finalize; + +    proc = G_ARCH_PROCESSOR_CLASS(klass); + +    proc->decode = (decode_instruction_fc)g_arm_processor_decode_instruction;  } @@ -101,7 +118,43 @@ static void g_arm_processor_init(GArmProcessor *proc)      parent->memsize = MDS_32_BITS;      parent->inssize = MDS_32_BITS; -    parent->decode = (decode_instruction_fc)g_arm_processor_decode_instruction; +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : proc = instance d'objet GLib à traiter.                      * +*                                                                             * +*  Description : Supprime toutes les références externes.                     * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void g_arm_processor_dispose(GArmProcessor *proc) +{ +    G_OBJECT_CLASS(g_arm_processor_parent_class)->dispose(G_OBJECT(proc)); + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : bookmark = instance d'objet GLib à traiter.                  * +*                                                                             * +*  Description : Procède à la libération totale de la mémoire.                * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void g_arm_processor_finalize(GArmProcessor *proc) +{ +    G_OBJECT_CLASS(g_arm_processor_parent_class)->finalize(G_OBJECT(proc));  } @@ -131,11 +184,11 @@ GArchProcessor *g_arm_processor_new(void)  /******************************************************************************  *                                                                             * -*  Paramètres  : proc   = architecture visée par la procédure.                  * -*                ctx    = contexte lié à l'exécution du processeur.             * +*  Paramètres  : proc   = architecture visée par la procédure.                * +*                ctx    = contexte lié à l'exécution du processeur.           *  *                data = flux de données à analyser.                           *  *                pos  = position courante dans ce flux. [OUT]                 * -*                len  = taille totale des données à analyser.                 * +*                end  = limite des données à analyser.                        *  *                addr = adresse virtuelle de l'instruction.                   *  *                format = format du fichier contenant le code.                *  *                                                                             * @@ -149,7 +202,7 @@ GArchProcessor *g_arm_processor_new(void)  #include "encoding.h"  extern GArchInstruction *try_to_decode_arm_v456_instr(bin_t *); -static GArchInstruction *g_arm_processor_decode_instruction(const GArmProcessor *proc, GProcContext *ctx, const bin_t *data, off_t *pos, off_t len, vmpa_t addr, GBinFormat *format) +static GArchInstruction *g_arm_processor_decode_instruction(const GArmProcessor *proc, GProcContext *ctx, const bin_t *data, off_t *pos, off_t end, vmpa_t addr, GBinFormat *format)  {      GArchInstruction *result;               /* Instruction à renvoyer      */ diff --git a/src/arch/arm/v456/instruction.c b/src/arch/arm/v456/instruction.c index 0ab85c0..3ba3c54 100644 --- a/src/arch/arm/v456/instruction.c +++ b/src/arch/arm/v456/instruction.c @@ -509,7 +509,7 @@ static void g_dalvik_instruction_get_rw_registers(const GDalvikInstruction *inst  *                                                                             *  *  Paramètres  : data = flux de données à analyser.                           *  *                pos  = position courante dans ce flux.                       * -*                len  = taille totale des données à analyser.                 * +*                end  = limite des données à analyser.                        *  *                                                                             *  *  Description : Recherche l'identifiant de la prochaine instruction.         *  *                                                                             * @@ -519,7 +519,7 @@ static void g_dalvik_instruction_get_rw_registers(const GDalvikInstruction *inst  *                                                                             *  ******************************************************************************/ -DalvikOpcodes dalvik_guess_next_instruction(const bin_t *data, off_t pos, off_t len) +DalvikOpcodes dalvik_guess_next_instruction(const bin_t *data, off_t pos, off_t end)  {      DalvikOpcodes result;                   /* Identifiant à retourner     */  | 
