• Aucun résultat trouvé

Architecture des ordinateurs TP 1 : Assembleur S PARC

N/A
N/A
Protected

Academic year: 2022

Partager "Architecture des ordinateurs TP 1 : Assembleur S PARC "

Copied!
1
0
0

Texte intégral

(1)

Architecture des ordinateurs TP 1 : Assembleur S PARC

Arnaud Giersch, Benoît Meister et Frédéric Vivien

Remarques préliminaires :

– le nom d’un fichier contenant un programme assembleur doit obligatoirement avoir le suffixe.s;

– on passe d’un programme assembleur à un fichier exécutable en utilisantgccde la même manière qu’avec un programme C.

1. Étude d’un programme en assembleur SPARC

(a) Récupérez le programmeaddition.squi réalise la somme de 2 entiers. Compilez en utilisant la com- mandegcc -o addition addition.set exécutez-le.

URL :http://icps.u-strasbg.fr/~vivien/Enseignement/Archi-2001-2002/addition.s.

Étudiez ce programme et rajoutez des commentaires explicatifs dans ce fichier addition.s.

(b) Réalisez un programme C faisant appel à une fonction prenant 8 paramètres, produisez le programme assembleur correspondant (option-Sdegcc:gcc -S fichiersource).

Déterminez ensuite quels paramètres sont placés dans les registres, lesquels ne le sont pas et trouvez l’emplacement mémoire de ces derniers.

2. Exercices de programmation

(a) Écrivez un programme assembleur calculant la factorielle d’un entier de manière itérative (une seule fonc- tion principale contenant une boucle).

(b) Écrivez un programme assembleur calculant la factorielle d’un entier de manière récursive.

(c) Modifiez-le programme précédent pour qu’il affiche à chaque étape de la récursion les valeurs des pointeurs de pile (%spet%fp).

(d) Dans un processeur où la multiplication n’est pas implémentée par un circuit, celle-ci peut être réalisée efficacement en se basant sur l’algorithme suivant :

a×b :=si b=0 alors 0

sinon si b=2×b0alors(a×2)×b0 sinon((a×2)×b0) +a

En vous appuyant sur cette méthode, proposez une fonction assembleur réalisant la multiplication entière en utilisant uniquement des additions et des décalages.

(e) Utilisez la fonction précédente dans un programme C. L’exécutable s’obtient en donnant simplement le fichier C et le fichier assembleur au programmegcc, ce dernier s’occupe de faire les liens.

(f) Écrivez un programme assembleur de recherche de l’élément minimum d’un tableau. Le tableau est une variable locale à la routine principale. Cette dernière fait appel à une routine pour la recherche de l’élément minimum d’un tableau.

Références

Documents relatifs

Nous avons gagné sur la rapidité du calculateur, car la mémoire morte, étant un circuit électronique, sera plus rapide que des cartes perforées, par

Pour scruter le clavier, on envoie un niveau logique un sur la ligne L0 (IOPB0=1) et ensuite on lit le niveau logique sur les colonnes (IOPB4 à IOPB7). Si aucune touche de cette

Une fois arrivé à l’adresse « SUITE_Fbnc », on ajoute au compteur programme le contenu de « W », ce qui permet de sauter à la ligne qui nous intéresse, dont

; l’instruction qui va suivre se trouvera à cette adresse goto debut ; saut à l’étiquette marquant le début du programme org 0x10 ; cette adresse doit être supérieure

• Des définitions de données déclarées par des directives (mots spéciaux interprétés par l'assembleur, nous les étudierons plus tard, le but est ici de donner une idée de ce

• Les données sont regroupées dans une zone de la mémoire appelée segment de données, tandis que les instructions se situent dans un autre segment qui est le

Écrire une procédure qui permet de retourner, dans le registre AX, la position du premier caractère qui soit le même dans deux chaînes données.. Utiliser cette procédure dans

Résumé des instructions sur des chaînes de caractères pour effectuer des opérations avec des opérandes se trouvant dans des locations mémoire. Instruction Mnémonique