diff options
Diffstat (limited to 'src/arch/immediate.c')
-rw-r--r-- | src/arch/immediate.c | 107 |
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); |