summaryrefslogtreecommitdiff
path: root/src/analysis/disass/dragon.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2016-04-02 07:47:13 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2016-04-02 07:47:13 (GMT)
commit36a5b2577d67ab7c9f2c5817f6dba7a9601d1f20 (patch)
tree8b326546f84c5ca82bbff2b41ef967ba3b0c0745 /src/analysis/disass/dragon.h
parent33906ce366efc053dee0b76d5bd668797b99071e (diff)
Handled all routines disassembling processing in one place.
Diffstat (limited to 'src/analysis/disass/dragon.h')
-rw-r--r--src/analysis/disass/dragon.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/analysis/disass/dragon.h b/src/analysis/disass/dragon.h
index c6f6fd5..3449e6f 100644
--- a/src/analysis/disass/dragon.h
+++ b/src/analysis/disass/dragon.h
@@ -49,6 +49,12 @@ size_t get_dragon_node_index(dragon_node *, dragon_node *);
/* Recherche un noeud selon son intruction de départ. */
dragon_node *find_node_for_instruction(dragon_node *, size_t, bool, const GArchInstruction *);
+/* Marque tous les noeuds accessibles pour chaque noeud de code. */
+void compute_all_paths(dragon_node *, size_t);
+
+/* Fournit la liste des noeuds accessibles depuis un autre. */
+const bitfield_t *get_paths_bits(const dragon_node *);
+
/* Détermine toute la chaîne hiérarchique de domination. */
void compute_all_dominators(dragon_node *, size_t);
@@ -57,9 +63,6 @@ const bitfield_t *get_domination_bits(const dragon_node *);
-
-
-
/* ---------------------------- ENCAPSULATION DES NOEUDS ---------------------------- */
@@ -74,7 +77,16 @@ dragon_knight *begin_dragon_knight(const GArchProcessor *, const instr_coverage
void end_dragon_knight(dragon_knight *);
/* Fournit les éléments utiles à un traitement de blocs de code. */
-void get_dragon_knight_content(dragon_knight *, dragon_node **, size_t *);
+void get_dragon_knight_content(const dragon_knight *, dragon_node **, size_t *);
+
+/* Fournit un noeud particulier à partir d'une liste. */
+dragon_node *get_dragon_knight_node(const dragon_knight *, size_t);
+
+/* Fournit l'indice d'un noeud particulier à partir d'une liste. */
+size_t get_dragon_knight_node_index(const dragon_knight *, dragon_node *);
+
+/* Recherche un noeud selon son intruction de départ. */
+dragon_node *find_knight_node_for_instruction(const dragon_knight *, bool, const GArchInstruction *);