summaryrefslogtreecommitdiff
path: root/src/arch/immediate.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/immediate.c')
-rw-r--r--src/arch/immediate.c107
1 files changed, 20 insertions, 87 deletions
diff --git a/src/arch/immediate.c b/src/arch/immediate.c
index 6c52892..6ae7b66 100644
--- a/src/arch/immediate.c
+++ b/src/arch/immediate.c
@@ -44,6 +44,9 @@
+/* ------------------ MANIPULATION D'OPERANDES DE VALEUR IMMEDIATE ------------------ */
+
+
/* Définition d'un opérande de valeur numérique (instance) */
struct _GImmOperand
{
@@ -361,8 +364,8 @@ GArchOperand *g_imm_operand_new_from_value(MemoryDataSize size, uint64_t value)
/******************************************************************************
* *
-* Paramètres : operand = objet partagé à initialiser. *
-* fake = coquille vide contenant les infos à enregistrer. *
+* Paramètres : operand = objet partagé à initialiser. *
+* template = coquille vide contenant les infos à enregistrer. *
* *
* Description : Initialise un nouvel objet partagé avec des informations. *
* *
@@ -372,14 +375,9 @@ GArchOperand *g_imm_operand_new_from_value(MemoryDataSize size, uint64_t value)
* *
******************************************************************************/
-static bool g_imm_operand_do_init(GImmOperand *operand, const GImmOperand *fake)
+static bool g_imm_operand_do_init(GImmOperand *operand, const GImmOperand *template)
{
- operand->raw = fake->raw;
- operand->size = fake->size;
-
- operand->zpad = fake->zpad;
- operand->def_display = fake->def_display;
- operand->display = fake->display;
+ g_imm_operand_quickly_copy(template, operand);
return true;
@@ -629,35 +627,18 @@ uint64_t g_imm_operand_get_raw_value(const GImmOperand *operand)
void g_imm_operand_set_value(GImmOperand **operand, MemoryDataSize size, uint64_t value, GShareContainer *container)
{
GSharedInstance *shared; /* Instace de travail partagée */
- size_t index; /* Indice du déménagement */
GImmOperand fake; /* Transport d'informations */
assert(size != MDS_UNDEFINED);
shared = G_SHARED_INSTANCE(*operand);
- if (container == NULL)
- {
- index = g_share_manager_prepare_light_update(_imm_operand_manager, shared);
-
- (*operand)->size = size;
- (*operand)->raw = value;
-
- shared = g_share_manager_complete_light_update(_imm_operand_manager, shared, index);
+ g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
- }
-
- else
- {
- g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
-
- fake.size = size;
- fake.raw = value;
-
- shared = g_share_manager_update(_imm_operand_manager, shared,
- (GSharedInstance *)&fake, container);
+ fake.size = size;
+ fake.raw = value;
- }
+ shared = g_share_manager_update(_imm_operand_manager, shared, (GSharedInstance *)&fake, container);
*operand = G_IMM_OPERAND(shared);
@@ -681,31 +662,15 @@ void g_imm_operand_set_value(GImmOperand **operand, MemoryDataSize size, uint64_
void g_imm_operand_pad(GImmOperand **operand, bool state, GShareContainer *container)
{
GSharedInstance *shared; /* Instace de travail partagée */
- size_t index; /* Indice du déménagement */
GImmOperand fake; /* Transport d'informations */
shared = G_SHARED_INSTANCE(*operand);
- if (container == NULL)
- {
- index = g_share_manager_prepare_light_update(_imm_operand_manager, shared);
-
- (*operand)->zpad = state;
-
- shared = g_share_manager_complete_light_update(_imm_operand_manager, shared, index);
-
- }
-
- else
- {
- g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
-
- fake.zpad = state;
+ g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
- shared = g_share_manager_update(_imm_operand_manager, shared,
- (GSharedInstance *)&fake, container);
+ fake.zpad = state;
- }
+ shared = g_share_manager_update(_imm_operand_manager, shared, (GSharedInstance *)&fake, container);
*operand = G_IMM_OPERAND(shared);
@@ -748,31 +713,15 @@ bool g_imm_operand_does_padding(const GImmOperand *operand)
void g_imm_operand_set_default_display(GImmOperand **operand, ImmOperandDisplay display, GShareContainer *container)
{
GSharedInstance *shared; /* Instace de travail partagée */
- size_t index; /* Indice du déménagement */
GImmOperand fake; /* Transport d'informations */
shared = G_SHARED_INSTANCE(*operand);
- if (container == NULL)
- {
- index = g_share_manager_prepare_light_update(_imm_operand_manager, shared);
-
- (*operand)->def_display = display;
-
- shared = g_share_manager_complete_light_update(_imm_operand_manager, shared, index);
+ g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
- }
-
- else
- {
- g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
-
- fake.def_display = display;
+ fake.def_display = display;
- shared = g_share_manager_update(_imm_operand_manager, shared,
- (GSharedInstance *)&fake, container);
-
- }
+ shared = g_share_manager_update(_imm_operand_manager, shared, (GSharedInstance *)&fake, container);
*operand = G_IMM_OPERAND(shared);
@@ -815,31 +764,15 @@ ImmOperandDisplay g_imm_operand_get_default_display(const GImmOperand *operand)
void g_imm_operand_set_display(GImmOperand **operand, ImmOperandDisplay display, GShareContainer *container)
{
GSharedInstance *shared; /* Instace de travail partagée */
- size_t index; /* Indice du déménagement */
GImmOperand fake; /* Transport d'informations */
shared = G_SHARED_INSTANCE(*operand);
- if (container == NULL)
- {
- index = g_share_manager_prepare_light_update(_imm_operand_manager, shared);
-
- (*operand)->display = display;
+ g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
- shared = g_share_manager_complete_light_update(_imm_operand_manager, shared, index);
+ fake.display = display;
- }
-
- else
- {
- g_shared_instance_quickly_copy(shared, (GSharedInstance *)&fake);
-
- fake.display = display;
-
- shared = g_share_manager_update(_imm_operand_manager, shared,
- (GSharedInstance *)&fake, container);
-
- }
+ shared = g_share_manager_update(_imm_operand_manager, shared, (GSharedInstance *)&fake, container);
*operand = G_IMM_OPERAND(shared);