summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/operand.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2010-12-21 00:51:14 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2010-12-21 00:51:14 (GMT)
commitdbec8e8af5f296f0b95cd9c07e7d96b1a4277137 (patch)
tree4c5a9307bc4f0c168911e86459de5a51baaac226 /src/arch/dalvik/operand.h
parent56deaf395c65658102ef0111cfc072d65335331a (diff)
Redefined all existing kinds of Dalvik operands in a proper way.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@203 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/dalvik/operand.h')
-rw-r--r--src/arch/dalvik/operand.h154
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