diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2009-06-08 12:46:23 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2009-06-08 12:46:23 (GMT) |
commit | fc8324b66dee0abf0a5e5e3cc570e1aed96b80c8 (patch) | |
tree | 04b9220e34b8bdc3449cd73e54a32c5037be5f0c /src/arch | |
parent | dd75712aac8f70d18f07787d5d484d426600edeb (diff) |
Refreshed the panel dealing with found symbols.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@72 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/jvm/processor.c | 1 | ||||
-rw-r--r-- | src/arch/mips/processor.c | 1 | ||||
-rw-r--r-- | src/arch/processor-int.h | 1 | ||||
-rw-r--r-- | src/arch/processor.c | 60 | ||||
-rw-r--r-- | src/arch/processor.h | 29 | ||||
-rw-r--r-- | src/arch/x86/processor.c | 1 |
6 files changed, 71 insertions, 22 deletions
diff --git a/src/arch/jvm/processor.c b/src/arch/jvm/processor.c index 8226afc..034b864 100644 --- a/src/arch/jvm/processor.c +++ b/src/arch/jvm/processor.c @@ -98,6 +98,7 @@ static void g_jvm_processor_init(GJvmProcessor *proc) parent = G_ARCH_PROCESSOR(proc); parent->endianness = SRE_BIG; + parent->memsize = MDS_32_BITS; parent->decode = (decode_instruction_fc)g_jvm_processor_decode_instruction; diff --git a/src/arch/mips/processor.c b/src/arch/mips/processor.c index c28c7b4..7e921c1 100644 --- a/src/arch/mips/processor.c +++ b/src/arch/mips/processor.c @@ -97,6 +97,7 @@ static void g_mips_processor_init(GMipsProcessor *proc) parent = G_ARCH_PROCESSOR(proc); parent->endianness = SRE_BIG; + parent->memsize = MDS_32_BITS; parent->decode = (decode_instruction_fc)g_mips_processor_decode_instruction; diff --git a/src/arch/processor-int.h b/src/arch/processor-int.h index bbe2384..fc9097e 100644 --- a/src/arch/processor-int.h +++ b/src/arch/processor-int.h @@ -58,6 +58,7 @@ struct _GArchProcessor GObject parent; /* A laisser en premier */ SourceEndian endianness; /* Boutisme de l'architecture */ + MemoryDataSize memsize; /* Taille de l'espace mémoire */ decode_instruction_fc decode; /* Traduction en instructions */ diff --git a/src/arch/processor.c b/src/arch/processor.c index 317e893..c8630d7 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -132,6 +132,25 @@ SourceEndian g_arch_processor_get_endianness(const GArchProcessor *proc) /****************************************************************************** * * +* Paramètres : proc = processeur d'architecture à consulter. * +* * +* Description : Fournit la taille de l'espace mémoire d'une architecture. * +* * +* Retour : Taille de l'espace mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +MemoryDataSize g_arch_processor_get_memory_size(const GArchProcessor *proc) +{ + return proc->memsize; + +} + + +/****************************************************************************** +* * * Paramètres : proc = architecture visée par la procédure. * * data = flux de données à analyser. * * pos = position courante dans ce flux. [OUT] * @@ -216,3 +235,44 @@ GArchProcessor *get_arch_processor_for_type(ArchProcessorType type) return _processors_list[type]; } + + +/****************************************************************************** +* * +* Paramètres : format = exécutable d'origine. * +* * +* Description : Fournit le processeur d'architecture lié à un format. * +* * +* Retour : Processeur d'architecture trouvé. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GArchProcessor *get_arch_processor_from_format(const exe_format *format) +{ + GArchProcessor *result; /* Conversion à retourner */ + + switch (get_exe_target_machine(format)) + { + case FTM_JVM: + result = get_arch_processor_for_type(APT_JVM); + break; + + case FTM_MIPS: + result = get_arch_processor_for_type(APT_MIPS); + break; + + case FTM_386: + result = get_arch_processor_for_type(APT_386); + break; + + default: + result = NULL; + break; + + } + + return result; + +} diff --git a/src/arch/processor.h b/src/arch/processor.h index 5726197..8529d50 100644 --- a/src/arch/processor.h +++ b/src/arch/processor.h @@ -25,31 +25,10 @@ #define _ARCH_PROCESSOR_H -#include <sys/types.h> - - -#include "operand.h" /* AsmSyntax */ -#include "instruction.h" - - - -/* FIXME : lieu de définition temporaire */ - -/* Mode d'adressage à utiliser */ -typedef enum _AdressMode -{ - ADM_32BITS, /* Adresses sur 32 bits */ - ADM_64BITS /* Adresses sur 64 bits */ - -} AdressMode; - - - - - #include <glib-object.h> +#include "instruction.h" #include "../common/endianness.h" @@ -73,6 +52,9 @@ GType g_arch_processor_get_type(void); /* Fournit le boustime du processeur d'une architecture. */ SourceEndian g_arch_processor_get_endianness(const GArchProcessor *); +/* Fournit la taille de l'espace mémoire d'une architecture. */ +MemoryDataSize g_arch_processor_get_memory_size(const GArchProcessor *); + /* Décode une instruction dans un flux de données. */ GArchInstruction *g_arch_processor_decode_instruction(const GArchProcessor *, const bin_t *, off_t *, off_t, off_t, vmpa_t); @@ -99,6 +81,9 @@ bool init_all_processors(void); /* Fournit le processeur d'architecture correspondant à un type. */ GArchProcessor *get_arch_processor_for_type(ArchProcessorType); +/* Fournit le processeur d'architecture lié à un format. */ +GArchProcessor *get_arch_processor_from_format(const exe_format *); + #endif /* _ARCH_PROCESSOR_H */ diff --git a/src/arch/x86/processor.c b/src/arch/x86/processor.c index 8af84b2..7370da1 100644 --- a/src/arch/x86/processor.c +++ b/src/arch/x86/processor.c @@ -97,6 +97,7 @@ static void g_x86_processor_init(GX86Processor *proc) parent = G_ARCH_PROCESSOR(proc); parent->endianness = SRE_BIG; + parent->memsize = MDS_32_BITS; parent->decode = (decode_instruction_fc)g_x86_processor_decode_instruction; |