summaryrefslogtreecommitdiff
path: root/plugins/arm/register.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/arm/register.c')
-rw-r--r--plugins/arm/register.c97
1 files changed, 44 insertions, 53 deletions
diff --git a/plugins/arm/register.c b/plugins/arm/register.c
index 5d24806..6a58d59 100644
--- a/plugins/arm/register.c
+++ b/plugins/arm/register.c
@@ -46,22 +46,22 @@ static void g_arm_register_dispose(GArmRegister *);
/* Procède à la libération totale de la mémoire. */
static void g_arm_register_finalize(GArmRegister *);
-/* Produit une empreinte à partir d'un registre. */
-static guint g_arm_register_hash(const GArmRegister *);
-/* Compare un registre avec un autre. */
-static int g_arm_register_compare(const GArmRegister *, const GArmRegister *);
+/* --------------------- IMPLEMENTATION DES FONCTIONS DE CLASSE --------------------- */
-/* --------------------- TRANSPOSITIONS VIA CACHE DES REGISTRES --------------------- */
+/* Produit une empreinte à partir d'un registre. */
+static guint g_arm_register_hash(const GArmRegister *);
+/* Compare un registre avec un autre. */
+static int g_arm_register_compare(const GArmRegister *, const GArmRegister *);
-/* Charge un registre depuis une mémoire tampon. */
-static GArchRegister *g_arm_register_unserialize(GArmRegister *, GAsmStorage *, packed_buffer_t *);
+/* Charge un contenu depuis une mémoire tampon. */
+static bool g_arm_register_load(GArmRegister *, GObjectStorage *, packed_buffer_t *);
-/* Sauvegarde un registre dans une mémoire tampon. */
-static bool g_arm_register_serialize(const GArmRegister *, GAsmStorage *, packed_buffer_t *);
+/* Sauvegarde un contenu dans une mémoire tampon. */
+static bool g_arm_register_store(GArmRegister *, GObjectStorage *, packed_buffer_t *);
@@ -88,20 +88,21 @@ G_DEFINE_TYPE(GArmRegister, g_arm_register, G_TYPE_ARCH_REGISTER);
static void g_arm_register_class_init(GArmRegisterClass *klass)
{
- GObjectClass *object_class; /* Autre version de la classe */
- GArchRegisterClass *reg_class; /* Classe de haut niveau */
+ GObjectClass *object; /* Autre version de la classe */
+ GArchRegisterClass *reg; /* Classe de haut niveau */
- object_class = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(klass);
- object_class->dispose = (GObjectFinalizeFunc/* ! */)g_arm_register_dispose;
- object_class->finalize = (GObjectFinalizeFunc)g_arm_register_finalize;
+ object->dispose = (GObjectFinalizeFunc/* ! */)g_arm_register_dispose;
+ object->finalize = (GObjectFinalizeFunc)g_arm_register_finalize;
- reg_class = G_ARCH_REGISTER_CLASS(klass);
+ reg = G_ARCH_REGISTER_CLASS(klass);
- reg_class->hash = (reg_hash_fc)g_arm_register_hash;
- reg_class->compare = (reg_compare_fc)g_arm_register_compare;
- reg_class->unserialize = (reg_unserialize_fc)g_arm_register_unserialize;
- reg_class->serialize = (reg_serialize_fc)g_arm_register_serialize;
+ reg->hash = (reg_hash_fc)g_arm_register_hash;
+ reg->compare = (reg_compare_fc)g_arm_register_compare;
+
+ reg->load = (load_register_fc)g_arm_register_load;
+ reg->store = (store_register_fc)g_arm_register_store;
}
@@ -181,6 +182,12 @@ uint8_t g_arm_register_get_index(const GArmRegister *reg)
}
+
+/* ---------------------------------------------------------------------------------- */
+/* IMPLEMENTATION DES FONCTIONS DE CLASSE */
+/* ---------------------------------------------------------------------------------- */
+
+
/******************************************************************************
* *
* Paramètres : reg = opérande à consulter pour le calcul. *
@@ -224,19 +231,13 @@ static int g_arm_register_compare(const GArmRegister *a, const GArmRegister *b)
}
-
-/* ---------------------------------------------------------------------------------- */
-/* TRANSPOSITIONS VIA CACHE DES OPERANDES */
-/* ---------------------------------------------------------------------------------- */
-
-
/******************************************************************************
* *
-* Paramètres : reg = registre d'architecture à constituer. *
-* storage = mécanisme de sauvegarde à manipuler. *
-* pbuf = zone tampon à remplir. *
+* Paramètres : reg = élément GLib à constuire. *
+* storage = conservateur de données à manipuler ou NULL. *
+* pbuf = zone tampon à lire. *
* *
-* Description : Charge un registre depuis une mémoire tampon. *
+* Description : Charge un contenu depuis une mémoire tampon. *
* *
* Retour : Bilan de l'opération. *
* *
@@ -244,24 +245,17 @@ static int g_arm_register_compare(const GArmRegister *a, const GArmRegister *b)
* *
******************************************************************************/
-static GArchRegister *g_arm_register_unserialize(GArmRegister *reg, GAsmStorage *storage, packed_buffer_t *pbuf)
+static bool g_arm_register_load(GArmRegister *reg, GObjectStorage *storage, packed_buffer_t *pbuf)
{
- GArchRegister *result; /* Instance à retourner */
+ bool result; /* Bilan à retourner */
GArchRegisterClass *parent; /* Classe parente à consulter */
- /**
- * L'indice de registre est utilisé par les sous-classes pour la regénération
- * à partir du cache.
- *
- * Il est donc lu depuis le tempon avant l'appel à cette fonction, et est
- * ainsi déjà pris en compte.
- */
-
- result = G_ARCH_REGISTER(reg);
-
parent = G_ARCH_REGISTER_CLASS(g_arm_register_parent_class);
- result = parent->unserialize(result, storage, pbuf);
+ result = parent->load(G_ARCH_REGISTER(reg), storage, pbuf);
+
+ if (result)
+ result = extract_packed_buffer(pbuf, &reg->index, sizeof(uint8_t), true);
return result;
@@ -270,11 +264,11 @@ static GArchRegister *g_arm_register_unserialize(GArmRegister *reg, GAsmStorage
/******************************************************************************
* *
-* Paramètres : reg = registre d'architecture à consulter. *
-* storage = mécanisme de sauvegarde à manipuler. *
+* Paramètres : reg = élément GLib à consulter. *
+* storage = conservateur de données à manipuler ou NULL. *
* pbuf = zone tampon à remplir. *
* *
-* Description : Sauvegarde un registre dans une mémoire tampon. *
+* Description : Sauvegarde un contenu dans une mémoire tampon. *
* *
* Retour : Bilan de l'opération. *
* *
@@ -282,20 +276,17 @@ static GArchRegister *g_arm_register_unserialize(GArmRegister *reg, GAsmStorage
* *
******************************************************************************/
-static bool g_arm_register_serialize(const GArmRegister *reg, GAsmStorage *storage, packed_buffer_t *pbuf)
+static bool g_arm_register_store(GArmRegister *reg, GObjectStorage *storage, packed_buffer_t *pbuf)
{
bool result; /* Bilan à retourner */
GArchRegisterClass *parent; /* Classe parente à consulter */
- result = extend_packed_buffer(pbuf, &reg->index, sizeof(uint8_t), false);
-
- if (result)
- {
- parent = G_ARCH_REGISTER_CLASS(g_arm_register_parent_class);
+ parent = G_ARCH_REGISTER_CLASS(g_arm_register_parent_class);
- result = parent->serialize(G_ARCH_REGISTER(reg), storage, pbuf);
+ result = parent->store(G_ARCH_REGISTER(reg), storage, pbuf);
- }
+ if (result)
+ result = extend_packed_buffer(pbuf, &reg->index, sizeof(uint8_t), false);
return result;