• Aucun résultat trouvé

4 – Programmation structurée

N/A
N/A
Protected

Academic year: 2022

Partager "4 – Programmation structurée"

Copied!
3
0
0

Texte intégral

(1)

TD Systèmes à Microprocesseurs - Electronique 3

- 1 -

4 – Programmation structurée

Objectifs

L’objectif de ce TD est la programmation structurée (manipulation de la pile, appels de sous-programmes, sauvegarde de variables locales, passage de paramètres).

Rappels

Le modèle de pile utilisé dans les exercices est le modèle Full Descending (conformément à l’ARM Procedure Call Standard). La manipulation de la pile se fait par les instructions :

STR Rd, [SP, #-4]!

pour empiler un registre

STMFD SP!, {reglist}

pour empiler une liste de registres

LDR Rd, [SP], #4

pour dépiler un registre

LDMFD SP!, {reglist}

pour dépiler une liste de registres

1.1 Sauvegarde de contexte

a) Etant donné le code suivant :

A: .word 1

B: .word 2

C: .word 3

main:

LDR R8, A

LDR R9, B

LDR R4, C

MOV R10, #1 BL fonction1 ADD R0, R0, R8 ADD R0, R0, R9 ADD R0, R0, R10

wait : B wait

fonction1:

STMFD SP!, {R8, R9, R10, LR}

MOV R10, #3

LDR R9, C

ADD R8, R10, R9 BL fonction2 MUL R0, R8, R0

LDMFD SP!, {R8, R9, R10, LR}

MOV PC, LR

fonction2:

STMFD SP!, {R8, LR}

MUL R8, R4, R4 ADD R0, R8, R8 LDMFD SP!, {R8, LR}

MOV PC, LR

Quel devrait être le résultat correct de ce programme?

(2)

TD Systèmes à Microprocesseurs - Electronique 3

- 2 -

Que se passerait-il si on omettait les instructions

LDMFD

et

STMFD

dans

fonction1

? Que se passerait-il si on omettait les instructions

LDMFD

et

STMFD

dans

fonction2

?

On suppose maintenant que les instructions

LDMFD

et

STMFD

sont présentes dans

fonction1

et

fonction2

, représenter l'état de la pile juste avant l’exécution de l’instruction

ADD R0, R8, R8

?

b) Analyser le code suivant :

foo:

STMFD SP!, {R8, LR}

MOV R8, #4 ADD R1, R8, R4

BL bar

bar:

MOV R8, R4 ADD R8, R8, R1 MOV R1, R8

LDMFD SP!, {R8, LR}

MOV PC, LR

Expliquer quels sont les problèmes et rajouter les instructions manquantes pour que les deux sous programmes fonctionnent.

1.2 Passage de paramètres

Soit le programme C suivant :

main() { int a;

a = max (56, 49);

}

int max (int x, int y) { if (x > y) return x;

else return y;

}

Ecrire le programme appelant

main

et la fonction

max

en assembleur ARM : a) en passant les paramètres par registres, sans sauvegarde de contexte.

b) en passant les paramètres par la pile, sans sauvegarde de contexte.

c) en passant les paramètres par la pile, avec sauvegarde du contexte.

1.3 Somme des carrés

On souhaite écrire un programme en assembleur ARM qui prend en entrée un tableau X de dimension N et réalise le calcul : X[0]

2

+ X[1]

2

+ … X[n-1]

2

Ecrire, en respectant les contraintes qui vous sont imposées :

a) Un sous programme CARRE qui reçoit en paramètre par la pile un nombre X et

renvoie dans le registre

R0

la valeur X

2

.

(3)

TD Systèmes à Microprocesseurs - Electronique 3

- 3 -

b) un sous-programme SOMME_CARRE qui reçoit en paramètre, dans le registre

R0

, l’adresse d’un tableau et renvoie, dans le registre

R1

, la somme des carrés des éléments de ce tableau. Cette somme sera calculée en utilisant le sous-programme CARRE.

c) le programme principal qui appelle le sous-programme SOMME_CARRE pour calculer la somme des carrés d'un tableau (de 10 éléments qu’il faudra initialiser) et dont l’adresse est dans le registre

R0

. Au retour du sous-programme, on veut que

R0

contienne toujours la valeur de départ. Le résultat sera récupéré dans

R1

.

Références

Documents relatifs

3- On cherche à modéliser la pile par un générateur de Thévenin, constitué d'un générateur parfait de tension E associé en série avec une résistance r.. Dessinez ce

En se regroupant, les quarks for- ment des hadrons, particules composites qui se classent en baryons (3 quarks), comme les pro- tons ou les neutrons, et en mésons (un quark et

4- Quels sont les trois éléments nécessaires à la production d’électricité à partir d’une pile?. Activité 4 : Une pile peut-elle être une

Au fur et ` a mesure de son ex´ecution, la fonction peut faire grandir son bloc d’activation pour y stocker diff´erentes donn´ees : variables locales, copies de registres `

5. Sur la première pile uniquement, en utilisant le vocabulaire introduit, indiquer ce qui arrive aux électrons au niveau de chacune des électrodes en précisant celle

 L'échauffement du mélange montre que cette transformation chimique libère de l'énergie thermique ( sous forme de chaleur)

Un joueur a trois pi` eces dans sa poche, deux normales et la troisi` eme ayant deux cˆ ot´ es “pile” (toutes les pi` eces sont ´ equilibr´ ees). Il prend au hasard une pi` ece

4/ Après plusieurs heures de fonctionnement, on constate que la plaque de cuivre s’amincit, tandis que la couleur bleue de la solution de sulfate de cuivre est plus soutenue.. a/