diff options
Diffstat (limited to 'src/arch/immediate.c')
-rw-r--r-- | src/arch/immediate.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/arch/immediate.c b/src/arch/immediate.c index 3a3e64c..fc8e40d 100644 --- a/src/arch/immediate.c +++ b/src/arch/immediate.c @@ -858,10 +858,39 @@ static void g_imm_operand_print(const GImmOperand *operand, GBufferLine *line, A { char value[VMPA_MAX_SIZE]; /* Chaîne à imprimer */ size_t len; /* Taille de l'élément inséré */ + GBufferSegment *segment; /* Nouveau segment mis en place*/ len = g_imm_operand_to_string(operand, syntax, value); - g_buffer_line_insert_text(line, BLC_MAIN, value, len, RTT_IMMEDIATE); + segment = g_buffer_line_insert_text(line, BLC_MAIN, value, len, RTT_IMMEDIATE); + g_buffer_segment_set_creator(segment, G_OBJECT(operand)); + +} + + +/****************************************************************************** +* * +* Paramètres : operand = opérande à traiter. * +* addr = valeur résultante. [OUT] * +* * +* Description : Convertit une valeur immédiate en adresse de type virt_t. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool g_imm_operand_to_virt_t(const GImmOperand *operand, virt_t *addr) +{ + bool result; /* Bilan à renvoyer */ + + result = !MDS_IS_SIGNED(operand->size); + + if (result) + *addr = operand->raw; + + return result; } |