Systèmes à Microprocesseurs Cycle Ingénieur Troisième Année Polytech’Nice Sophi
Systèmes à Microprocesseurs Cycle Ingénieur Troisième Année Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques Sébastien Bilavarn Cycle Ingénieur Troisième Année Systèmes à Microprocesseurs Cycle Ingénieur Troisième Année Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 1 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 1 - Sébastien Bilavarn Cycle Ingénieur Troisième Année Ch1 – Représentation de l’information Ch2 – ARM Instruction Set Architecture Ch3 – Accès aux données Ch4 – Programmation structurée Ch5 – Cycle d’exécution Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques Ch5 – Cycle d’exécution Ch6 – Codage binaire Ch7 – Microcontrôleur ARM Cortex Plan Représentation de l’information ARM Instruction Set Architecture Accès aux données Programmation structurée Cycle d’exécution Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 2 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 2 - Cycle d’exécution Codage binaire Microcontrôleur ARM Cortex-M Programmation structurée en Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques Programmation structurée en assembleur ARM Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 3 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 3 - Appels de sous-programmes Structure de pile Mise en place d’une pile Passage de paramètres Sous-programme: terme générique désignant un sous programme Procédure: un sous-programme qui ne renvoie pas de résultat. Ex: printf ("Hello world\n"); Fonctions: un sous-programme effectuant un traitement sur des données et qui renvoie un résultat. Ex: c = max (a, b); Appel et retour de sous-programmes Un sous-programme doit mémoriser l’adresse du code appelant pour Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques Un sous-programme doit mémoriser l’adresse du code appelant pour poursuivre l’exécution à l’adresse de retour correspondante Mécanismes d’échanges de données Passage de paramètre par valeur: le code appelé dispose d’une copie de la valeur Passage de paramètre par référence: le code appelé dispose de l’adresse du paramètre. Il peut modifier sa valeur. Valeur de retour d’une fonction: donnée fournie par le code appelé au code appelant Notions programme: terme générique désignant un sous-ensemble d’un programme qui ne renvoie pas de résultat. programme effectuant un traitement sur des données programmes programme doit mémoriser l’adresse du code appelant pour Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 4 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 4 - programme doit mémoriser l’adresse du code appelant pour poursuivre l’exécution à l’adresse de retour correspondante Mécanismes d’échanges de données Passage de paramètre par valeur: le code appelé dispose d’une copie de Passage de paramètre par référence: le code appelé dispose de l’adresse du paramètre. Il peut modifier sa valeur. Valeur de retour d’une fonction: donnée fournie par le code appelé au Appel de sous Appel et retour de sous Pour appeler un sous programme: Branch and Link: BL label L’exécution se poursuit à l’instruction correspondant au label L’adresse de retour est conservée dans le registre LR (Link Register, r14) Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques Pour revenir d’un sous- MOV PC, LR (équivalent à MOV r15, r14) L’adresse de retour est récupérée dans LR L’exécution se poursuit à l’instruction qui suit l’instruction d’appel Appel de sous-programmes Appel et retour de sous-programmes Pour appeler un sous programme: label L’exécution se poursuit à l’instruction correspondant au label L’adresse de retour est conservée dans le registre LR (Link Register, Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 5 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 5 - -programme: MOV PC, LR (équivalent à MOV r15, r14) L’adresse de retour est récupérée dans LR L’exécution se poursuit à l’instruction qui suit l’instruction d’appel Enchaînement d’appels Principe void main () { … displayMenu(); … } void displayMenu () { displayStr("1.New"); Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques displayStr("1.New"); displayStr("2.Load"); displayStr("3.Save"); displayStr("4.Quit"); } void displayStr (char *str) { } Enchaînement d’appels Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 6 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 6 - void displayStr (char *str) { while (*str){ displayChar(*str); ++str; } } void displayChar (char ch) { … } Enchaînement d’appels Problème de la traduction en assembleur (1) main: … BL displayMenu … displayMenu: … Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques … BL displayStr … BL displayStr … BL displayStr … BL displayStr MOV PC, LR Enchaînement d’appels Problème de la traduction en assembleur (1) @ retour dans main LR @ displayMenu PC Traduction en assembleur: Branchement temporaire (BL displayMenu) Dans la fonction main, à l’exécution de l’instruction BL Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 7 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 7 - Dans la fonction main, à l’exécution de l’instruction BL displayMenu : -l’adresse de retour (adresse de l’instruction BL displayMenu + 4) est sauvegardée dans le registre LR (r14) -puis on saute à l’adresse de la première instruction de displayMenu (PC ← @displayMenu) Enchaînement d’appels Problème de la traduction en assembleur (2) main: … BL displayMenu … displayMenu: … Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques … BL displayStr … BL displayStr … BL displayStr … BL displayStr MOV PC, LR Enchaînement d’appels Problème de la traduction en assembleur (2) @ retour dans displayMenu LR @ displayStr PC Dans la fonction displayMenu, à l’exécution de l’instruction BL displayStr : -l’adresse de retour (adresse de l’instruction BL Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 8 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 8 - displayStr: … BL displayChar … MOV PC, LR -l’adresse de retour (adresse de l’instruction BL displayMenu + 4) est sauvegardée dans le registre LR (r14) -puis on saute à l’adresse de la première instruction de displayStr (PC ← @displayStr) On écrase la valeur précédente de LR (adresse de retour dans main)!! Enchaînement d’appels Problème de la traduction en assembleur (3) main: … BL displayMenu … displayMenu: … Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques … BL displayStr … BL displayStr … BL displayStr … BL displayStr MOV PC, LR Enchaînement d’appels Problème de la traduction en assembleur (3) @ retour dans displayStr LR @ displayChar PC Dans la fonction displayStr, à l’exécution de l’instruction BL displayChar : -l’adresse de retour (adresse de l’instruction BL Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 9 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 9 - displayChar: … MOV PC, LR displayStr: … BL displayChar … MOV PC, LR -l’adresse de retour (adresse de l’instruction BL displayStr + 4) est sauvegardée dans le registre LR (r14) -puis on saute à l’adresse de la première instruction de displayChar (PC ← @displayChar) On écrase la valeur précédente de LR (adresse de retour dans displayMenu)!! Enchaînement d’appels Problème de la traduction en assembleur (4) main: … BL displayMenu … displayMenu: … Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques … BL displayStr … BL displayStr … BL displayStr … BL displayStr MOV PC, LR Enchaînement d’appels Problème de la traduction en assembleur (4) @ retour dans displayStr LR @ retour dans displayStr PC A la fin de l’exécution de displayChar : -on récupère l’adresse de retour dans displayStr, que l’on place dans le registre PC (par l’instruction MOV Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 10 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 10 - displayStr: … BL displayChar … MOV PC, LR displayChar: … MOV PC, LR l’on place dans le registre PC (par l’instruction MOV PC, LR) -L’exécution reprend à l’adresse de retour dans displayStr Enchaînement d’appels Problème de la traduction en assembleur (5) main: … BL displayMenu … displayMenu: … Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques … BL displayStr … BL displayStr … BL displayStr … BL displayStr MOV PC, LR ??? ??? Enchaînement d’appels Problème de la traduction en assembleur (5) @ retour dans displayStr LR ??? PC A la fin de l’exécution de displayStr : -on ne peut pas revenir à l’exécution de displayMenu car on a perdu l’adresse de retour (ecrasée Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 11 - Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 11 - displayStr: … BL displayChar … MOV PC, LR displayChar: … uploads/Litterature/ ch4-programmation.pdf
Documents similaires










-
28
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 12, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.3147MB