diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-04-20 18:52:01 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-04-20 18:52:01 (GMT) |
commit | 8e5c8417e8ef79c1b475cb1b86a1754b24f9af78 (patch) | |
tree | 650a39bde7a5367995b471a562aa766febd505bc /src/arch/immediate.h | |
parent | c177597d6da5dedb32aa176e8370db8ffb7f87aa (diff) |
Shared immediate operands in order to avoid useless allocations.
Diffstat (limited to 'src/arch/immediate.h')
-rw-r--r-- | src/arch/immediate.h | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/arch/immediate.h b/src/arch/immediate.h index fa30fe0..b4d1f84 100644 --- a/src/arch/immediate.h +++ b/src/arch/immediate.h @@ -32,10 +32,14 @@ #include "archbase.h" #include "operand.h" +#include "sharing/container.h" #include "../analysis/content.h" +/* ------------------ MANIPULATION D'OPERANDES DE VALEUR IMMEDIATE ------------------ */ + + /* Grande ligne d'un format d'affichage */ typedef enum _ImmOperandDisplay { @@ -87,22 +91,22 @@ bool g_imm_operand_get_value(const GImmOperand *, MemoryDataSize, ...); uint64_t g_imm_operand_get_raw_value(const GImmOperand *); /* Définit la nouvelle valeur de l'opérande à une valeur. */ -bool g_imm_operand_set_value(GImmOperand *, MemoryDataSize, uint64_t); +void g_imm_operand_set_value(GImmOperand **, MemoryDataSize, uint64_t, GShareContainer *); /* Précise si des zéro doivent compléter l'affichage ou non. */ -void g_imm_operand_pad(GImmOperand *, bool); +void g_imm_operand_pad(GImmOperand **, bool, GShareContainer *); /* Indique le signe d'une valeur immédiate. */ bool g_imm_operand_does_padding(const GImmOperand *); /* Définit le format textuel par défaut de la valeur. */ -void g_imm_operand_set_default_display(GImmOperand *, ImmOperandDisplay); +void g_imm_operand_set_default_display(GImmOperand **, ImmOperandDisplay, GShareContainer *); /* Indique le format textuel par défaut de la valeur. */ ImmOperandDisplay g_imm_operand_get_default_display(const GImmOperand *); /* Définit la grande ligne du format textuel de la valeur. */ -void g_imm_operand_set_display(GImmOperand *, ImmOperandDisplay); +void g_imm_operand_set_display(GImmOperand **, ImmOperandDisplay, GShareContainer *); /* Indique la grande ligne du format textuel de la valeur. */ ImmOperandDisplay g_imm_operand_get_display(const GImmOperand *); @@ -145,4 +149,20 @@ bool g_imm_operand_to_off_t(const GImmOperand *, off_t *, bool *) __attribute__ +/* -------------------------- PARTAGES DE CONTENUS UNIQUES -------------------------- */ + + +/* Initialise les mécanismes de partage des opérandes immédiates. */ +bool init_imm_operand_sharing(void); + +/* Imprime des statistiques quant aux partages dans l'archi. */ +#ifdef DEBUG_DUMP_STATS +void dump_imm_operand_share_stats(void); +#endif + +/* Supprime les mécanismes de partage des opérandes immédiates. */ +void exit_imm_operand_sharing(void); + + + #endif /* _ARCH_IMMEDIATE_H */ |