summaryrefslogtreecommitdiff
path: root/src/arch/processor.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2008-10-26 23:37:51 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2008-10-26 23:37:51 (GMT)
commit197933fdf469ab9b8897b33c51809c128f1e3c03 (patch)
tree104d91be1a69d80eb4b59b247e4b719531bc7492 /src/arch/processor.c
parentac438e8ad47f267c9eb6f462eb5a7e2b5c017f26 (diff)
Completed support of the 0x81 and 0xc1 opcodes.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@37 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/processor.c')
-rw-r--r--src/arch/processor.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/arch/processor.c b/src/arch/processor.c
index fc9f773..1afb576 100644
--- a/src/arch/processor.c
+++ b/src/arch/processor.c
@@ -52,8 +52,11 @@ asm_instr *decode_instruction(const asm_processor *proc, const uint8_t *data, of
{
asm_instr *result; /* Représentation à renvoyer */
+ off_t old_pos; /* Sauvegarde de la position */
+ old_pos = *pos;
+
result = proc->fetch_instr(proc, data, pos, len, offset);
@@ -63,6 +66,8 @@ asm_instr *decode_instruction(const asm_processor *proc, const uint8_t *data, of
if (result == NULL)
{
+ *pos = old_pos;
+
printf("err while decoding opcode 0x%0hhx at 0x%08llx\n", data[*pos], offset);
result = create_db_instruction(data, pos, len);
}