diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2018-12-07 20:33:21 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2018-12-07 20:33:21 (GMT) | 
| commit | c0af4cc392a246b05d41b7b7c05bbcd8b0cfb39e (patch) | |
| tree | 0d645c71c40fc4b625271d0ab1ef8e7ebab04075 /src | |
| parent | a13d12c758184449bf3305785ef33273802a761c (diff) | |
Relied on GObject introspection and dynamic gtypes to inherit in Python.
Diffstat (limited to 'src')
| -rw-r--r-- | src/arch/processor.c | 49 | ||||
| -rw-r--r-- | src/arch/processor.h | 6 | 
2 files changed, 39 insertions, 16 deletions
| diff --git a/src/arch/processor.c b/src/arch/processor.c index 4450208..4d7bacc 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -69,6 +69,8 @@ static void g_arch_processor_dispose(GArchProcessor *);  /* Procède à la libération totale de la mémoire. */  static void g_arch_processor_finalize(GArchProcessor *); +/* Fournit un contexte générique pour l'exécution du processeur. */ +static GProcContext *_g_arch_processor_get_context(const GArchProcessor *); @@ -125,6 +127,8 @@ static void g_arch_processor_class_init(GArchProcessorClass *klass)      object->dispose = (GObjectFinalizeFunc/* ! */)g_arch_processor_dispose;      object->finalize = (GObjectFinalizeFunc)g_arch_processor_finalize; +    klass->get_ctx = _g_arch_processor_get_context; +      g_signal_new("changed",                   G_TYPE_ARCH_PROCESSOR,                   G_SIGNAL_RUN_LAST, @@ -225,28 +229,21 @@ static void g_arch_processor_finalize(GArchProcessor *proc)  /******************************************************************************  *                                                                             * -*  Paramètres  : proc = architecture visée par la procédure.                  * +*  Paramètres  : proc = architecture, spectatrice ici.                        *  *                                                                             * -*  Description : Fournit un contexte propre au processeur d'une architecture. * +*  Description : Fournit un contexte générique pour l'exécution du processeur.*  *                                                                             * -*  Retour      : Nouveau contexte mis à disposition.                          * +*  Retour      : Contexte mis en place.                                       *  *                                                                             *  *  Remarques   : -                                                            *  *                                                                             *  ******************************************************************************/ -GProcContext *g_arch_processor_get_context(const GArchProcessor *proc) +static GProcContext *_g_arch_processor_get_context(const GArchProcessor *proc)  { -    GProcContext *result;                   /* Contexte à retourner        */ -    GArchProcessorClass *class;             /* Classe de l'instance active */ +    GProcContext *result;                   /* Instance à retourner        */ -    class = G_ARCH_PROCESSOR_GET_CLASS(proc); - -    if (class->get_ctx != NULL) -        result = class->get_ctx(proc); - -    else -        result = NULL; +    result = g_object_new(G_TYPE_PROC_CONTEXT, NULL);      return result; @@ -331,6 +328,32 @@ bool g_arch_processor_has_virtual_space(const GArchProcessor *proc)  /******************************************************************************  *                                                                             * +*  Paramètres  : proc = architecture visée par la procédure.                  * +*                                                                             * +*  Description : Fournit un contexte propre au processeur d'une architecture. * +*                                                                             * +*  Retour      : Nouveau contexte mis à disposition.                          * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +GProcContext *g_arch_processor_get_context(const GArchProcessor *proc) +{ +    GProcContext *result;                   /* Contexte à retourner        */ +    GArchProcessorClass *class;             /* Classe de l'instance active */ + +    class = G_ARCH_PROCESSOR_GET_CLASS(proc); + +    result = class->get_ctx(proc); + +    return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : proc    = architecture visée par la procédure.               *  *                ctx     = contexte lié à l'exécution du processeur.          *  *                content = flux de données à analyser.                        * diff --git a/src/arch/processor.h b/src/arch/processor.h index 24d9287..26eddb1 100644 --- a/src/arch/processor.h +++ b/src/arch/processor.h @@ -55,9 +55,6 @@ typedef struct _GArchProcessorClass GArchProcessorClass;  /* Indique le type défini pour un processeur d'architecture. */  GType g_arch_processor_get_type(void); -/* Fournit un contexte propre au processeur d'une architecture. */ -GProcContext *g_arch_processor_get_context(const GArchProcessor *); -  /* Fournit le boustime du processeur d'une architecture. */  SourceEndian g_arch_processor_get_endianness(const GArchProcessor *); @@ -70,6 +67,9 @@ MemoryDataSize g_arch_processor_get_instruction_min_size(const GArchProcessor *)  /* Indique si l'architecture possède un espace virtuel ou non. */  bool g_arch_processor_has_virtual_space(const GArchProcessor *); +/* Fournit un contexte propre au processeur d'une architecture. */ +GProcContext *g_arch_processor_get_context(const GArchProcessor *); +  /* Désassemble une instruction dans un flux de données. */  GArchInstruction *g_arch_processor_disassemble(const GArchProcessor *, GProcContext *, const GBinContent *, vmpa2t *, GExeFormat *); | 
