diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/processor.c | 54 | ||||
-rw-r--r-- | src/arch/processor.h | 8 |
2 files changed, 60 insertions, 2 deletions
diff --git a/src/arch/processor.c b/src/arch/processor.c index c2d190b..25a38b4 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -441,3 +441,57 @@ GArchInstruction *g_arch_processor_find_instr_by_address(const GArchProcessor *p return result; } + + +/****************************************************************************** +* * +* Paramètres : proc = processeur recensant diverses instructions. * +* instr = instruction de référence pour un parcours. * +* * +* Description : Fournit l'instruction qui en précède une autre. * +* * +* Retour : Instruction précédente trouvée, ou NULL. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GArchInstruction *g_arch_processor_get_prev_instr(const GArchProcessor *proc, const GArchInstruction *instr) +{ + GArchInstruction *result; /* Instruction à retourner */ + GArchInstruction *list; /* Ensemble des instructions */ + + list = g_arch_processor_get_disassembled_instructions(proc); + + result = g_arch_instruction_get_prev_iter(list, instr); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : proc = processeur recensant diverses instructions. * +* instr = instruction de référence pour un parcours. * +* * +* Description : Fournit l'instruction qui en suit une autre. * +* * +* Retour : Instruction suivante trouvée, ou NULL. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GArchInstruction *g_arch_processor_get_next_instr(const GArchProcessor *proc, const GArchInstruction *instr) +{ + GArchInstruction *result; /* Instruction à retourner */ + GArchInstruction *list; /* Ensemble des instructions */ + + list = g_arch_processor_get_disassembled_instructions(proc); + + result = g_arch_instruction_get_next_iter(list, instr, ~0); + + return result; + +} diff --git a/src/arch/processor.h b/src/arch/processor.h index 3eeefd5..d650266 100644 --- a/src/arch/processor.h +++ b/src/arch/processor.h @@ -87,11 +87,15 @@ void g_arch_processor_set_disassembled_instructions(GArchProcessor *, GArchInstr /* Fournit les instructions désassemblées pour une architecture. */ GArchInstruction *g_arch_processor_get_disassembled_instructions(const GArchProcessor *); - - /* Recherche une instruction d'après son adresse. */ GArchInstruction *g_arch_processor_find_instr_by_address(const GArchProcessor *, const vmpa2t *); +/* Fournit l'instruction qui en précède une autre. */ +GArchInstruction *g_arch_processor_get_prev_instr(const GArchProcessor *, const GArchInstruction *); + +/* Fournit l'instruction qui en suit une autre. */ +GArchInstruction *g_arch_processor_get_next_instr(const GArchProcessor *, const GArchInstruction *); + #endif /* _ARCH_PROCESSOR_H */ |