diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-12-04 20:28:35 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-12-04 20:28:35 (GMT) |
commit | 6c67ffbb6c8a8dfb7120a0dab82dadbbf8112e88 (patch) | |
tree | 98b5195a053d7de292f2caced14e3ecda5ec32a5 /src/arch/instruction.c | |
parent | f95598b68b98f6eda701f8f02bc09cb13f65fc72 (diff) |
Listed accesses to registers.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@294 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/instruction.c')
-rw-r--r-- | src/arch/instruction.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/arch/instruction.c b/src/arch/instruction.c index 98d7c85..aa90e70 100644 --- a/src/arch/instruction.c +++ b/src/arch/instruction.c @@ -264,6 +264,37 @@ void g_arch_instruction_detach_operand(GArchInstruction *instr, GArchOperand *op } +/****************************************************************************** +* * +* Paramètres : instr = instruction à consulter. * +* rregs = liste des rgistres lus. [OUT] * +* rcount = nombre de registres lus. [OUT] * +* wregs = liste des rgistres écrits. [OUT] * +* wcount = nombre de registres écrits. [OUT] * +* * +* Description : Liste les registres lus et écrits par l'instruction. * +* * +* Retour : - * +* * +* Remarques : Les compteurs de références sont à décrémenter après usage ! * +* * +******************************************************************************/ + +void g_arch_instruction_get_rw_registers(const GArchInstruction *instr, GArchRegister ***rregs, size_t *rcount, GArchRegister ***wregs, size_t *wcount) +{ + size_t i; /* Boucle de parcours */ + + instr->get_rw_regs(instr, rregs, rcount, wregs, wcount); + + for (i = 0; i < *rcount; i++) + g_object_ref(G_OBJECT((*rregs)[i])); + + for (i = 0; i < *wcount; i++) + g_object_ref(G_OBJECT((*wregs)[i])); + +} + + /* ---------------------------------------------------------------------------------- */ /* DEFINITION DES LIAISONS ENTRE INSTRUCTIONS */ |