summaryrefslogtreecommitdiff
path: root/src/arch/instruction.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/instruction.c')
-rw-r--r--src/arch/instruction.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/arch/instruction.c b/src/arch/instruction.c
index a86509c..4bb2e2d 100644
--- a/src/arch/instruction.c
+++ b/src/arch/instruction.c
@@ -750,8 +750,43 @@ static size_t g_arch_instruction_inc_link_counter(GArchInstruction *instr, bool
* *
* Paramètres : instr = instruction dont les informations sont à consulter. *
* dest = ligne visée par la liaison (côté destination). *
+* *
+* Description : Détermine si un lien est déjà établi entre deux instructions.*
+* *
+* Retour : Bilan de l'état actuel des liaisons. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool g_arch_instruction_has_link_to(GArchInstruction *instr, const GArchInstruction *dest)
+{
+ bool result; /* Bilan à retourner */
+ size_t count; /* Nombre de liens à parcourir */
+ size_t i; /* Boucle de parcours */
+
+ result = false;
+
+ g_arch_instruction_rlock_dest(instr);
+
+ count = g_arch_instruction_get_destination_counter(instr);
+
+ for (i = 0; i < count && !result; i++)
+ if (instr->to[i].linked == dest)
+ result = true;
+
+ g_arch_instruction_runlock_dest(instr);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : instr = instruction dont les informations sont à consulter. *
+* dest = ligne visée par la liaison (côté destination). *
* type = type de lien à construire. *
-* ... = éventuelles informations complémentaires. *
* *
* Description : Etablit un lien entre deux instructions. *
* *