diff options
Diffstat (limited to 'src/arch/processor.h')
-rw-r--r-- | src/arch/processor.h | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/src/arch/processor.h b/src/arch/processor.h index 6c65e95..0c6d852 100644 --- a/src/arch/processor.h +++ b/src/arch/processor.h @@ -30,7 +30,6 @@ #include "operand.h" /* AsmSyntax */ #include "instruction.h" -#include "../format/exe_format.h" @@ -57,12 +56,57 @@ asm_processor *create_processor(void); + + +#include <glib-object.h> + + +#include "../common/endianness.h" + + + +#define G_TYPE_ARCH_PROCESSOR g_arch_processor_get_type() +#define G_ARCH_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_arch_processor_get_type(), GArchProcessor)) +#define G_IS_ARCH_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_arch_processor_get_type())) +#define G_ARCH_PROCESSOR_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_arch_processor_get_type(), GArchProcessorIface)) + + +/* Ligne de représentation générique (instance) */ +typedef struct _GArchProcessor GArchProcessor; + +/* Ligne de représentation générique (classe) */ +typedef struct _GArchProcessorClass GArchProcessorClass; + + +/* Indique le type défini pour un processeur d'architecture. */ +GType g_arch_processor_get_type(void); + +/* Fournit le boustime du processeur d'une architecture. */ +SourceEndian g_arch_processor_get_endianness(const GArchProcessor *); + /* Décode une instruction dans un flux de données. */ -asm_instr *decode_instruction(const asm_processor *, const uint8_t *, off_t *, off_t, off_t, uint64_t); +GArchInstruction *g_arch_processor_decode_instruction(const GArchProcessor *, const bin_t *, off_t *, off_t, off_t, vmpa_t); + + + +/* ------------------------ ARCHITECTURES DANS LEUR ENSEMBLE ------------------------ */ + + +/* Type de processeurs disponibles */ +typedef enum _ArchProcessorType +{ + APT_JVM, /* Java Virtual Machine */ + + APT_COUNT + +} ArchProcessorType; + -/* Traduit une instruction en version humainement lisible. */ -void print_hinstruction(const asm_processor *, const exe_format *, const asm_instr *, char *, size_t, AsmSyntax); +/* Procède au chargement des différentes architectures. */ +bool init_all_processors(void); +/* Fournit le processeur d'architecture correspondant à un type. */ +GArchProcessor *get_arch_processor_for_type(ArchProcessorType); |