TP Architecture et assembleur Procédure et passage de

publicité
TP Architecture et assembleur
Procédure et passage de paramètres
Eric Ramat
[email protected]
17 octobre 2012
Durée : 3 heures
1
Question 1
Développer en Assembleur la fonction de calcul de factoriel en itératif et en récursif. Pour la version
récursive, la fonction doit obligatoirement garantir aucun registre n’est affecté par ses instructions sauf
le registre contenant le résultat. Naturellement, les fonctions à développer seront codées sous forme de
fonction et les paramètres de la fonction sont passés par la pile. Un exemple devra être proposé.
2
Question 2
Développer l’algorithme de tri rapide (Quick Sort) en Assembleur. Les consignes exposées à la question 1 restent vrai ici. Les valeurs à trier sont placées dans un tableau. Déclarer une variable de type
tableau d’octets et une variable contenant la taille du tableau.
Rappel de l’algorithme du Quick Sort
TriRapide (A , p , r )
Si p < r alors
q = partitionner (A , p , r )
TriRapide (A , p , q )
TriRapide (A , q + 1 , r )
FinSi
Partitionner (A , p , r )
x = A[p]
i = p - 1
j = r + 1
Tant que vrai faire
Repeter j = j - 1 jusqu ’a A [ j ] <= x
Repeter i = i + 1 jusqu ’a A [ i ] <= x
Si i < j alors echanger A [ i ] et A [ j ]
Sinon retourner j
Fin Si
Fin tant que
L’appel initial de la fonction TriRapide est TriRapide(A, 1, taille) où A est le tableau et taille la taille
du tableau.
1
Téléchargement