diff options
Diffstat (limited to 'src/arch/dalvik/operand.h')
-rw-r--r-- | src/arch/dalvik/operand.h | 154 |
1 files changed, 5 insertions, 149 deletions
diff --git a/src/arch/dalvik/operand.h b/src/arch/dalvik/operand.h index 452bb5e..a596225 100644 --- a/src/arch/dalvik/operand.h +++ b/src/arch/dalvik/operand.h @@ -1,6 +1,6 @@ /* OpenIDA - Outil d'analyse de fichiers binaires - * operand.h - prototypes pour la gestion des operandes de l'architecture Dalvik + * operand.h - prototypes pour l'aide à la création d'opérandes Dalvik * * Copyright (C) 2010 Cyrille Bagard * @@ -25,158 +25,14 @@ #define _ARCH_DALVIK_OPERAND_H -#include "../immediate.h" +#include "operands/args.h" +#include "operands/pool.h" +#include "operands/register.h" +#include "operands/target.h" #include "../instruction.h" -#include "../../common/endianness.h" -/* ----------------------- COQUILLE VIDE POUR OPERANDE DALVIK ----------------------- */ - - -#define G_TYPE_DALVIK_OPERAND g_dalvik_operand_get_type() -#define G_DALVIK_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_dalvik_operand_get_type(), GDalvikOperand)) -#define G_IS_DALVIK_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_dalvik_operand_get_type())) -#define G_DALVIK_OPERAND_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_dalvik_operand_get_type(), GDalvikOperandIface)) - - -/* Définition d'un opérande de Dalvik (instance) */ -typedef struct _GDalvikOperand GDalvikOperand; - -/* Définition d'un opérande de Dalvik (classe) */ -typedef struct _GDalvikOperandClass GDalvikOperandClass; - - -/* Indique le type défini par la GLib pour un opérande de Dalvik. */ -GType g_dalvik_operand_get_type(void); - - - -/* --------------------- OPERANDES VISANT UN REGISTRE DE DALVIK --------------------- */ - - -#define G_TYPE_DALVIK_REGISTER_OPERAND g_dalvik_register_operand_get_type() -#define G_DALVIK_REGISTER_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_dalvik_register_operand_get_type(), GDalvikRegisterOperand)) -#define G_IS_DALVIK_REGISTER_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_dalvik_register_operand_get_type())) -#define G_DALVIK_REGISTER_OPERAND_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_dalvik_register_operand_get_type(), GDalvikRegisterOperandIface)) - - -/* Définition d'un opérande visant un registre Dalvik (instance) */ -typedef struct _GDalvikRegisterOperand GDalvikRegisterOperand; - -/* Définition d'un opérande visant un registre Dalvik (classe) */ -typedef struct _GDalvikRegisterOperandClass GDalvikRegisterOperandClass; - - -/* Indique le type défini par la GLib pour un opérande de registre Dalvik. */ -GType g_dalvik_register_operand_get_type(void); - -/* Crée un opérande visant un registre Dalvik. */ -GArchOperand *g_dalvik_register_operand_new(const bin_t *, off_t *, off_t, bool *, MemoryDataSize, SourceEndian); - - - -/* -------------------- LISTE D'OPERANDES RASSEMBLES EN ARGUMENT -------------------- */ - - -#define G_TYPE_DALVIK_ARGS_OPERAND g_dalvik_args_operand_get_type() -#define G_DALVIK_ARGS_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_dalvik_args_operand_get_type(), GDalvikArgsOperand)) -#define G_IS_DALVIK_ARGS_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_dalvik_args_operand_get_type())) -#define G_DALVIK_ARGS_OPERAND_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_dalvik_args_operand_get_type(), GDalvikArgsOperandIface)) - - -/* Définition d'un opérande visant une liste d'opérandes Dalvik (instance) */ -typedef struct _GDalvikArgsOperand GDalvikArgsOperand; - -/* Définition d'un opérande visant une liste d'opérandes Dalvik (classe) */ -typedef struct _GDalvikArgsOperandClass GDalvikArgsOperandClass; - - -/* Indique le type défini par la GLib pour une liste d'arguments Dalvik. */ -GType g_dalvik_args_operand_get_type(void); - -/* Crée un réceptacle pour opérandes Dalvik servant d'arguments. */ -GArchOperand *g_dalvik_args_operand_new(void); - -/* Ajoute un élément à la liste d'arguments Dalvik. */ -void g_dalvik_args_operand_add(GDalvikArgsOperand *, GArchOperand *); - - - -/* ----------------- OPERANDES POINTANT VERS LA TABLE DE CONSTANTES ----------------- */ - - - -#define G_TYPE_DALVIK_POOL_OPERAND g_dalvik_pool_operand_get_type() -#define G_DALVIK_POOL_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_dalvik_pool_operand_get_type(), GDalvikPoolOperand)) -#define G_IS_DALVIK_POOL_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_dalvik_pool_operand_get_type())) -#define G_DALVIK_POOL_OPERAND_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_dalvik_pool_operand_get_type(), GDalvikPoolOperandIface)) - - -/* Définition d'un opérande visant un élément de table de constantes Dalvik (instance) */ -typedef struct _GDalvikPoolOperand GDalvikPoolOperand; - -/* Définition d'un opérande visant un élément de table de constantes Dalvik (classe) */ -typedef struct _GDalvikPoolOperandClass GDalvikPoolOperandClass; - - -/* Type de table de constantes */ -typedef enum _DalvikPoolType -{ - DPT_NONE = 0x0, - DPT_STRING = 0x1, - DPT_TYPE = 0x2, - DPT_PROTO = 0x3, - DPT_FIELD = 0x4, - DPT_METHOD = 0x5 - -} DalvikPoolType; - - -/* Indique le type défini par la GLib pour un un élément de table de constantes Dalvik. */ -GType g_dalvik_pool_operand_get_type(void); - -/* Crée un opérande visant un élément constant Dalvik. */ -GArchOperand *g_dalvik_pool_operand_new(DalvikPoolType, const bin_t *, off_t *, off_t, MemoryDataSize, SourceEndian); - -/* Indique la nature de la table de constantes visée ici. */ -DalvikPoolType g_dalvik_pool_operand_get_pool_type(const GDalvikPoolOperand *); - -/* Indique l'indice de l'élément dans la table de constantes. */ -uint32_t g_dalvik_pool_operand_get_index(const GDalvikPoolOperand *); - - - -/* ---------------------- OPERANDES VISANT UNE ADRESSE DE CODE ---------------------- */ - - -#define G_TYPE_DALVIK_TARGET_OPERAND g_dalvik_target_operand_get_type() -#define G_DALVIK_TARGET_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_dalvik_target_operand_get_type(), GDalvikTargetOperand)) -#define G_IS_DALVIK_TARGET_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_dalvik_target_operand_get_type())) -#define G_DALVIK_TARGET_OPERAND_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_dalvik_target_operand_get_type(), GDalvikTargetOperandIface)) - - -/* Définition d'un opérande visant une adresse de code Dalvik (instance) */ -typedef struct _GDalvikTargetOperand GDalvikTargetOperand; - -/* Définition d'un opérande visant une adresse de code Dalvik (classe) */ -typedef struct _GDalvikTargetOperandClass GDalvikTargetOperandClass; - - -/* Indique le type défini par la GLib pour un opérande de ciblage de code Dalvik. */ -GType g_dalvik_target_operand_get_type(void); - -/* Crée un opérande visant un instruction Dalvik. */ -GArchOperand *g_dalvik_target_operand_new(const bin_t *, off_t *, off_t, MemoryDataSize, SourceEndian, vmpa_t); - -/* Fournit l'adresse représentée par une opérande Dalvik. */ -const GImmOperand *g_dalvik_target_operand_get_value(const GDalvikTargetOperand *); - - - -/* ------------------------- AIDE A LA CREATION D'OPERANDES ------------------------- */ - - /** * Cf. les documentations suivantes : * - http://www.netmite.com/android/mydroid/dalvik/docs/instruction-formats.html |