diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2008-07-29 22:31:55 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2008-07-29 22:31:55 (GMT) |
commit | 57758c2cd11938e3e4c6e45b983cee4c2269ff44 (patch) | |
tree | ade6e434f0a5e68dec379c20432a09dd1cc75a1a /src/arch/x86/operand.c | |
parent | 4d004094424bb1fc52082f2e442c4c43a5525fe1 (diff) |
Loaded the executable part of an ELF file.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@10 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/x86/operand.c')
-rw-r--r-- | src/arch/x86/operand.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/arch/x86/operand.c b/src/arch/x86/operand.c index 84d4038..4b8eef8 100644 --- a/src/arch/x86/operand.c +++ b/src/arch/x86/operand.c @@ -130,6 +130,7 @@ asm_x86_operand *create_new_x86_operand(void) * * * Paramètres : data = donnée à analyser. * * is_reg32 = indique si le registre est un registre 32 bits. * +* base = valeur du premier registre. * * * * Description : Crée une opérande renvoyant vers un registre 16 ou 32 bits. * * * @@ -139,17 +140,17 @@ asm_x86_operand *create_new_x86_operand(void) * * ******************************************************************************/ -asm_x86_operand *x86_create_reg1632_operand(uint8_t data, bool is_reg32) +asm_x86_operand *x86_create_reg1632_operand(uint8_t data, bool is_reg32, uint8_t base) { asm_x86_operand *result; /* Registre à retourner */ X8616bRegister reg16; /* Registre 16 bits */ X8632bRegister reg32; /* Registre 32 bits */ if (is_reg32) - switch (data - 0xb8) + switch (data - base) { case 0 ... 7: - reg32 = (X8632bRegister)(data - 0xb8); + reg32 = (X8632bRegister)(data - base); break; default: return NULL; @@ -157,10 +158,10 @@ asm_x86_operand *x86_create_reg1632_operand(uint8_t data, bool is_reg32) } else - switch (data - 0xb0) + switch (data - base) { case 0 ... 7: - reg16 = (X8616bRegister)(data - 0xb0); + reg16 = (X8616bRegister)(data - base); break; default: return NULL; |