diff options
Diffstat (limited to 'src/arch/processor.c')
-rw-r--r-- | src/arch/processor.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/arch/processor.c b/src/arch/processor.c index 67457d2..f7c8d85 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -274,6 +274,43 @@ GArchInstruction *g_arch_processor_decode_instruction(const GArchProcessor *proc } +/****************************************************************************** +* * +* Paramètres : proc = architecture visée par la procédure. * +* ctx = contexte lié à l'exécution du processeur. * +* data = flux de données à analyser. * +* pos = position courante dans ce flux. [OUT] * +* end = limite des données à analyser. * +* * +* Description : Désassemble une instruction dans un flux de données. * +* * +* Retour : Instruction mise en place ou NULL en cas d'échec. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GArchInstruction *g_arch_processor_disassemble(const GArchProcessor *proc, GProcContext *ctx, const bin_t *data, vmpa2t *pos, phys_t end) +{ + GArchInstruction *result; /* Instruction à renvoyer */ + vmpa2t back; /* Position sauvegardée */ + + copy_vmpa(&back, pos); + + result = G_ARCH_PROCESSOR_GET_CLASS(proc)->disassemble(proc, ctx, data, pos, end); + + if (result == NULL) + copy_vmpa(pos, &back); + + return result; + +} + + + + + + /* ---------------------------------------------------------------------------------- */ /* ARCHITECTURES DANS LEUR ENSEMBLE */ |