summaryrefslogtreecommitdiff
path: root/src/core/processors.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-01-21 18:49:45 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-01-21 18:49:45 (GMT)
commite10081897750e74dfd01266606870aab3638cfbf (patch)
treeb9fbb90301a9ca443af82e3f9dd5e58f05dfbbe3 /src/core/processors.c
parent7c04cf1a2dcc9e04ce8f280f399d6904053e89d9 (diff)
Provided a way to register new available processors from Python.
Diffstat (limited to 'src/core/processors.c')
-rw-r--r--src/core/processors.c68
1 files changed, 21 insertions, 47 deletions
diff --git a/src/core/processors.c b/src/core/processors.c
index 68fd0f6..631e819 100644
--- a/src/core/processors.c
+++ b/src/core/processors.c
@@ -34,15 +34,14 @@
#include "../arch/target.h"
#include "../arch/undefined.h"
#include "../arch/operands/register.h"
-//#include "../arch/jvm/processor.h"
/* Caractéristiques d'un processeur */
typedef struct _proc_t
{
- char *key; /* Clef pour un accès rapide */
- char *name; /* Désignation humaine */
+ char *name; /* Clef pour un accès rapide */
+ char *desc; /* Désignation humaine */
GType instance; /* Type à manipuler en interne */
} proc_t;
@@ -86,8 +85,8 @@ void register_arch_gtypes(void)
/******************************************************************************
* *
-* Paramètres : key = désignation rapide et interne d'un processeur. *
-* name = désignation humaine de l'architecture. *
+* Paramètres : name = désignation rapide et interne d'un processeur. *
+* desc = désignation humaine de l'architecture. *
* instance = type GLib représentant le type à instancier. *
* *
* Description : Enregistre un processeur pour une architecture donnée. *
@@ -98,14 +97,14 @@ void register_arch_gtypes(void)
* *
******************************************************************************/
-bool register_processor_type(const char *key, const char *name, GType instance)
+bool register_processor_type(const char *name, const char *desc, GType instance)
{
bool result; /* Bilan à retourner */
proc_t *new; /* Nouvel élément à définir */
G_LOCK(_pdef_access);
- new = find_processor_by_key(key);
+ new = find_processor_by_key(name);
result = (new == NULL);
@@ -116,8 +115,8 @@ bool register_processor_type(const char *key, const char *name, GType instance)
new = &_processors_definitions[_processors_definitions_count - 1];
- new->key = strdup(key);
new->name = strdup(name);
+ new->desc = strdup(desc);
new->instance = instance;
}
@@ -133,31 +132,6 @@ bool register_processor_type(const char *key, const char *name, GType instance)
* *
* Paramètres : - *
* *
-* Description : Charge les définitions de processeurs "natifs". *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool load_hard_coded_processors_definitions(void)
-{
- bool result; /* Bilan à retourner */
-
- result = true;
-
- //result &= register_processor_type("jvm", "Java Virtual Machine", G_TYPE_JVM_PROCESSOR);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
* Description : Décharge toutes les définitions de processeurs. *
* *
* Retour : - *
@@ -174,8 +148,8 @@ void unload_processors_definitions(void)
for (i = 0; i < _processors_definitions_count; i++)
{
- free(_processors_definitions[i].key);
free(_processors_definitions[i].name);
+ free(_processors_definitions[i].desc);
}
if (_processors_definitions != NULL)
@@ -191,7 +165,7 @@ void unload_processors_definitions(void)
/******************************************************************************
* *
-* Paramètres : key = nom technique du processeur recherché. *
+* Paramètres : name = nom technique du processeur recherché. *
* *
* Description : Retrouve l'enregistrement correspondant à une architecture. *
* *
@@ -201,7 +175,7 @@ void unload_processors_definitions(void)
* *
******************************************************************************/
-static proc_t *find_processor_by_key(const char *key)
+static proc_t *find_processor_by_key(const char *name)
{
proc_t *result; /* Trouvaille à retourner */
size_t i; /* Boucle de parcours */
@@ -212,9 +186,9 @@ static proc_t *find_processor_by_key(const char *key)
result = NULL;
- if (key != NULL)
+ if (name != NULL)
for (i = 0; i < _processors_definitions_count; i++)
- if (strcmp(_processors_definitions[i].key, key) == 0)
+ if (strcmp(_processors_definitions[i].name, name) == 0)
result = &_processors_definitions[i];
return result;
@@ -224,7 +198,7 @@ static proc_t *find_processor_by_key(const char *key)
/******************************************************************************
* *
-* Paramètres : key = nom technique du processeur recherché. *
+* Paramètres : name = nom technique du processeur recherché. *
* *
* Description : Fournit le nom humain de l'architecture visée. *
* *
@@ -234,20 +208,20 @@ static proc_t *find_processor_by_key(const char *key)
* *
******************************************************************************/
-const char *get_arch_processor_name(const char *key)
+const char *get_arch_processor_description(const char *name)
{
const char *result; /* Description à retourner */
proc_t *def; /* Définition d'architecture */
G_LOCK(_pdef_access);
- def = find_processor_by_key(key);
+ def = find_processor_by_key(name);
if (def == NULL)
result = NULL;
else
- result = def->name;
-
+ result = def->desc;
+
G_UNLOCK(_pdef_access);
return result;
@@ -257,9 +231,9 @@ const char *get_arch_processor_name(const char *key)
/******************************************************************************
* *
-* Paramètres : key = nom technique du processeur recherché. *
+* Paramètres : name = nom technique du processeur recherché. *
* *
-* Description : Fournit le processeur d'architecture correspondant à un type.*
+* Description : Fournit le processeur d'architecture correspondant à un nom. *
* *
* Retour : Processeur d'architecture trouvé. *
* *
@@ -267,14 +241,14 @@ const char *get_arch_processor_name(const char *key)
* *
******************************************************************************/
-GArchProcessor *get_arch_processor_for_type(const char *key)
+GArchProcessor *get_arch_processor_for_name(const char *name)
{
GArchProcessor *result; /* Instance à retourner */
proc_t *def; /* Définition d'architecture */
G_LOCK(_pdef_access);
- def = find_processor_by_key(key);
+ def = find_processor_by_key(name);
if (def == NULL)
result = NULL;