Architecture des ordinateurs
Assembleur : Exercices avec Solutions. EMI. Page 3/34. Introduction à la programmation en assembleur (TASM). Le langage assembleur est classé dans la
Architecture des Ordinateurs corrigé TP 2
Recommandations. — Etudier préalablement et utiliser le MémoMIPS proposé en ligne. — Commenter soigneusement chaque ligne écrite en assembleur Exercice ...
´Eléments darchitecture des ordinateurs : travaux pratiques d
6 févr. 2011 Exercice 3 — Conditionnelles simples. Le code assembleur ci-dessous affiche le caract`ere * grâce `a un appel au noyau Linux (ce sujet sera ...
ARCHITECTURE DES ORDINATEURS Corrigé PARTIEL Octobre
Q 4) Ecrire le programme assembleur ARM qui effectue la somme S = A+B en supposant que le registre R1 contient initialement F000 0000H. Pour les instructions
EXERCICES DARCHITECTURE DES ORDINATEURS
EXERCICES D'ARCHITECTURE DES. ORDINATEURS. CHAPITRES 1&2 Donnez l'écriture assembleur des instructions de codes suivants : 0xC4204000. 0x81C7E004.
ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre
(une latence de 1 signifie qu'elle peut démarrer au cycle suivant). La table présente un programme C et le programme assembleur ARM correspondant (On suppose
Recueil dexercices corrigés en INFORMATIQUE I
Recueil d'exercices corrigés en INFORMATIQUE I. (Architecture de l'ordinateur logiciels de bureautique et Internet et technologie web). L. Ghalouci
ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre
La Table 1 présente un programme C et le programme assembleur MIPS correspondant. Les tableaux A B
ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre
Les instructions nécessaires et les modes d'adressage du jeu d'instructions ARM sont rappelés en annexe. Question 1 ) Ecrire le code assembleur ARM
Architecture des ordinateurs Corrigé du TP 1 : Assembleur SPARC
Architecture des ordinateurs le nom d'un fichier contenant un programme assembleur doit obligatoirement avoir le suffixe ... Exercices de programmation.
TD Architecture des ordinateurs - univ-lillefr
Fiche 5 Assembleur Exercice 1 1) Donnez l'arbre dévaluation la notation post-fixée et la notation préfixée de cette expression: I = ( A + B * C ) / ( D - E * F ) 2) On dispose de 4 processeurs avec leur propre jeu d'instruction 0 adresse 1 adresse 2 adresses 3 adresses PUSH M LOAD M MOV(X:=Y) MOV(X:=Y)
Searches related to architecture des ordinateurs exercices corrigés assembleur PDF
ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre 2011 3H – Tous documents autorisés Les questions sont indépendantes On utilise le jeu d’instructions ARM PROGRAMMATION ASSEMBLEUR PREMIERE PARTIE Soit le code C int a b; short c; unsigned char d; // Les adresses de a b c d sont initialement // dans R1 R2 R3 R4 a= (int) c;
Comment fonctionne l’architecture d’un ordinateur ?
L’architecture d’un ordinateur est organisée de sorte que tous les composants s’accordent entre eux avec des données binaires afin de réaliser toutes les requêtes souhaitées. Malgré la complexité de son architecture, l’utilisateur peut utiliser un ordinateur de nos jours de manière simple et guidée sur les derniers systèmes d’exploitation.
Comment télécharger le cours d’architecture des ordinateurs ?
Tout en PDF/PPT, Tout est gratuit. NOTE: N’oubliez pas de voir le cours de Architecture des ordinateurs. Liens dans la section ci-dessous. Pour télécharger le cours complet d’Architecture des ordinateurs, Cliquez sur le/les liens ci-dessous. NOTE: N’oubliez pas de voir les autres Unités d’enseignements (matières/modules) d’Informatique.
Pourquoi faire des exercices d’architecture ?
1. Développer, avec l’aide de l’ensemble des exercices, une meilleure compréhension de l’Espace/Temps/Échelle. 2. Éclairer sur une pédagogie et un enseignement de l’architecture qui permettront aux futurs architectes de saisir une complexité. 3. Encourager et démontrer l’efficacité de l’appréhension de l’espace par le corps.
Comment apprendre à l’architecture informatique ?
Les sujets sont choisis parmi une collection d’ouvrages et de référence sur l’ architecture informatiques. Cette méthode d’apprentissage systématique préparera facilement toute personne à des entretiens, à des tests, à des examens et à des certifications d’organisation et d’architecture en ligne.
Architecture des ordinateurs
Corrigé du TP 1 : Assembleur SPARC
Arnaud Giersch, Benoît Meister et Frédéric VivienRemarques 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.Correction :! Fonction addition
! -> retourne la somme de ses deux arguments .section ".text" ! -> code .align 4 ! aligné sur 4 octets .global add ! exporte le symbole " add » add: save %sp,-64,%sp ! réserve de l"espace sur la pile add %i0,%i1,%i0 ! calcule la somme des paramètres, ! le résultat est la valeur de retour ! de la fonction ret ! retour de la fonction add restore ! Programme principal .section ".data" ! -> données .align 8 ! alignées sur 8 octets .PRINTF1: .asciz "Entrez a et b : " ! chaîne de caractères avec zéro ! terminal .SCANF: .asciz "%d %d" ! idem .PRINTF2: .asciz "c : %d\n" ! idem .section ".text" ! -> code .align 4 ! aligné sur 4 octets .global main ! exporte le symbole " main » main:save %sp,-104,%sp ! réserve de l"espace sur la pile: ! 96 + 8 octets pour deux variables ! locale aux adresses %fp-4 et %fp-8 ! printf sethi %hi(.PRINTF1),%o0 ! %o0 <- .PRINTF1 or %o0,%lo(.PRINTF1),%o0 call printf ! appel de " printf (.PRINTF1) » nop ! " nop » après un " call » ! scanf add %fp,-4,%o1 ! %o1 <- %fp-4 add %fp,-8,%o2 ! %o2 <- %fp-8 sethi %hi(.SCANF),%o0 ! %o0 <- .SCANF or %o0,%lo(.SCANF),%o0 call scanf ! appel de ! " scanf (.SCANF1, %fp-4, %fp-8) » nop ! " nop » après un " call » ! addition ld [%fp-4],%o0 ! %o0 <- [%fp-4] ld [%fp-8],%o1 ! %o1 <- [%fp-8] call add ! appel de " add ([%fp-4], [%fp-8]) » ! résultat dans %o0 nop ! " nop » après un " call » ! printf mov %o0,%o1 ! %o1 <- %o0 sethi %hi(.PRINTF2),%o0 ! %o0 <- .PRINTF2 or %o0,%lo(.PRINTF2),%o0 call printf ! appel de " printf (.PRINTF2, %o0) » nop ! " nop » après un " call » ret ! retour de la fonction mainrestore(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.Correction :-le programme C :1 #includeOn remarque que les 6 premiers paramètres sont passés par les registres%o0à%o5(%i0à%i5dans la
fonction), les deux derniers sont passés sur la pile aux adresses%sp+92et%sp+96(%fp+92et%fp+96dans la fonction).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).Correction :!!! !!! calcul de la factorielle d"un entier, version itérative ! Programme principal .section ".data" ! -> données .align 8 .PRINTF1: .asciz "n? " .SCANF: .asciz "%u" .PRINTF2: .asciz "n! = %u\n" .section ".text" ! -> code .align 4 .global main main: save %sp, -96, %sp ! réserve de la place sur la pile ! pour un entier [%fp-4] (mais on ! arrondit à un multiple de 8) sethi %hi(.PRINTF1), %o0 or %o0, %lo(.PRINTF1), %o0 call printf ! printf (.PRINTF1) nopsethi %hi(.SCANF), %o0 or %o0, %lo(.SCANF), %o0 add %fp, -4, %o1 call scanf ! scanf (.SCANF, %fp-4) nop ! -> calcul de [%fp-4]! dans %l1, ! utilisation de %l0 comme compteur ld [%fp-4], %l0 ! %l0 <- [%fp-4] mov 1, %l1 ! %l1 <- 1 loop: cmp %l0, 1 ! while (%l0 > 1) { ble end_loop ! nop ! umul %l0, %l1, %l1 ! %l1 <- %l1 * %l0 dec %l0 ! %l0 -- b loop ! } nop end_loop: sethi %hi(.PRINTF2), %o0 or %o0, %lo(.PRINTF2), %o0 mov %l1, %o1 call printf ! printf (.PRINTF2, %l1) nop clr %i0 ! return 0 ret restore2(b)Écrivez un programme assembleur calculant la factorielle d"un entier de manièrerécursive.Correction :!!!
!!! calcul de la factorielle d"un entier, version récursive ! fonction fact ! -> retourne la factorielle de son argument .section ".text" ! -> code .align 4 .global fact fact: save %sp, -96, %sp cmp %i0, 1 ! if (%i0 > 1) { ble end_fact1 ! nop ! sub %i0, 1, %o0 ! %o0 <- %i0 - 1 call fact ! %o0 <- fact (%o0) nop ! umul %i0, %o0, %i0 ! %i0 <- %o0 * %i0 b end_fact ! } else { nop ! end_fact1: ! mov 1, %i0 ! %i0 <- 1 end_fact: ret ! return %i0 restore ! Programme principal .section ".data" ! -> données .align 8 .PRINTF1: .asciz "n? ".SCANF: .asciz "%u" .PRINTF2: .asciz "n! = %u\n" .section ".text" ! -> code .align 4 .global main main: save %sp, -96, %sp ! réserve de la place sur la pile ! pour un entier [%fp-4] (mais on ! arrondit à un multiple de 8) sethi %hi(.PRINTF1), %o0 or %o0, %lo(.PRINTF1), %o0 call printf ! printf (.PRINTF1) nop sethi %hi(.SCANF), %o0 or %o0, %lo(.SCANF), %o0 add %fp, -4, %o1 call scanf ! scanf (.SCANF, %fp-4) nop ld [%fp-4], %o0 call fact ! %o0 <- fact ([%fp-4]) nop mov %o0, %o1 sethi %hi(.PRINTF2), %o0 or %o0, %lo(.PRINTF2), %o0 call printf ! printf (.PRINTF2, %o0) nop clr %i0 ! return 0 ret de pile (%spet%fp).Correction :!!! !!! calcul de la factorielle d"un entier, version récursive, !!! affichage de %fp et %sp ! fonction fact ! -> retourne la factorielle de son argument .section ".data" ! -> données .align 8 .PRINTF_DEBUG: .asciz "# fact (%u): %%fp = %p, %%sp = %p\n" .section ".text" ! -> code .align 4 .global fact fact: save %sp, -96, %sp sethi %hi(.PRINTF_DEBUG), %o0 or %o0, %lo(.PRINTF_DEBUG), %o0 mov %i0, %o1 mov %fp, %o2 mov %sp, %o3 call printf ! printf (.PRINTF_DEBUG, ! %i0, %fp, %sp) nop cmp %i0, 1 ! if (%i0 > 1) { ble end_fact1 ! nop ! sub %i0, 1, %o0 ! %o0 <- %i0 - 1 call fact ! %o0 <- fact (%o0) nop ! umul %i0, %o0, %i0 ! %i0 <- %o0 * %i0 b end_fact ! } else { nop ! end_fact1: ! mov 1, %i0 ! %i0 <- 1 end_fact: ret ! return %i0 restore! Programme principal .section ".data" ! -> données .align 8 .PRINTF1: .asciz "n? " .SCANF: .asciz "%u" .PRINTF2: .asciz "n! = %u\n" .section ".text" ! -> code .align 4 .global main main: save %sp, -96, %sp ! réserve de la place sur la pile ! pour un entier [%fp-4] (mais on ! arrondit à un multiple de 8)quotesdbs_dbs41.pdfusesText_41[PDF] chimie atomistique exercices corrigés
[PDF] exercices corrigés d'analyse s1 pdf
[PDF] changement de référentiel exercices corrigés mpsi
[PDF] changement de référentiel pdf
[PDF] cours de physique 3ème secondaire belgique
[PDF] exercices de sciences 2eme secondaire belgique
[PDF] examen chimie organique corrigé pdf s2
[PDF] examen de chimie organique s4
[PDF] examen chimie organique+corrigé s2
[PDF] exercice corrigé chimie organique licence
[PDF] examen chimie organique+corrigé s3 pdf
[PDF] chimie organique 2 exercices corrigés
[PDF] exercice corrigé complexité algorithmique
[PDF] examen algorithmique 1ere année