diff options
Diffstat (limited to 'src/analysis/disass/fetch.c')
-rw-r--r-- | src/analysis/disass/fetch.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c index 575eb06..5f93eba 100644 --- a/src/analysis/disass/fetch.c +++ b/src/analysis/disass/fetch.c @@ -23,6 +23,10 @@ #include "fetch.h" +#ifdef DEBUG +# include "../../arch/artificial.h" +#endif + /****************************************************************************** @@ -50,6 +54,10 @@ GArchInstruction *disassemble_binary_parts(const GOpenidaBinary *binary, GBinPar size_t i; /* Boucle de parcours #1 */ off_t sum; /* Somme de toutes les tailles */ off_t done; /* Quantité déjà traitée */ +#ifdef DEBUG + unsigned int valid; /* Instructions traduites */ + unsigned int db; /* Instructions non décodées */ +#endif off_t pos; /* Début d'une zone binaire */ off_t len; /* Taille de cette même zone */ vmpa_t base; /* Adresse de la zone binaire */ @@ -83,6 +91,11 @@ GArchInstruction *disassemble_binary_parts(const GOpenidaBinary *binary, GBinPar /* Décodage des instructions */ +#ifdef DEBUG + valid = 0; + db = 0; +#endif + start = pos; pos = 0; @@ -94,11 +107,18 @@ GArchInstruction *disassemble_binary_parts(const GOpenidaBinary *binary, GBinPar &pos, len, start, addr); g_arch_instruction_add_to_list(&result, instr); +#ifdef DEBUG + if (G_IS_DB_INSTRUCTION(instr)) db++; + else valid++; +#endif + if (pos < len) gtk_extended_status_bar_update_activity(statusbar, id, (done + pos) * 1.0 / sum); } + g_binary_part_set_checkup(parts[i], valid, db); + done += len; gtk_extended_status_bar_update_activity(statusbar, id, done * 1.0 / sum); |