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