★ CODING ★ HEBDOGICIEL ★ LA PAGE PÉDAGOGIQUE D'HEBDOGICIEL 084: FORMATION À L'ASSEMBLEUR - LA PILE ★ |
La page pédagogique d'hebdogiciel 084: Formation à l'assembleur - La Pile | Coding Hebdogiciel |
Vous saisissez sans aucun doute maintenant l'importance des organigrammes dans la conception d'un programme, car si votre programmation surt scrupuleusement vos dessins, vous ne devriez pas aboutir a des résultats aussi surprenants et gênants que celui décrit précédemment. Mais ta capacité de la prie système limite d'une autre manière le recours aux routines. Cette limitation porte un nom aussi évocateur que celui de l'adresse de retour, puisqu'il s'agit de la limitation en profondeur dans les appels aux sous-programmes. Revenons a la taille N de notre pile. Lorsque vous faites appel à une routine, le micro-processeur empile l'adresse de retour et lorsqu'il a terminé l'exécution de la routine concernée, ri dépite l'adresse en la plaçant dans le compteur ordinal (ou PC). Imaginons qu'à partir d'une première routine nous en appelions une seconde qui e«e-même en appelle une troisième et ainsi de suite. De la même manière que précédemment nous allons nous retrouver, a un instant ou a un autre, limités par la capacité N de la prie système La limitation en profondeur est une valeur qui correspond simplement au nombre d"appels que l'on peut enchaîner sans dépasser ta capacité de la pile système. Nous allons pouvoir illustrer cette limitation en profondeur de la manière suivante en nous servant de la notion d'appels imbriqués. Cette expression ne de vrait pas trop vous dérouter elle est très proche dans la forme mais aussi dans le fond du principe des boudes imbriquées.
Lorsque vous programmez, l'utilisation intensive des sous-programmes appelle un certain nombre de réflexions que nous allons tenter d'étudier brièvement. a. Rapidité: lorsque vous programmez un algorithme donné en linéaire, vous obtenez une certaine rapidité d'exécution R. Si vous programmez ce même algorithme en vous aidant de sous-programmes, dune part vous aurez un certain nombre d'instructions surnuméraires par rapport a la programmation linéaire (les appels aux routines et tes instructions indiquant la fin de celles-ci), d'autre part vous aurez peut-être supprimé certaines redondances de programmation. b. Occupation mémoire : tout comme dans te cas de la rapidité, nous allons avoir une augmentation du nombre des instructions (appels et retours des sous-programmes), mais lorsque vous utilisez tes routines c'est pour éliminer des redondances de programmation. Ce que vous perdrez donc comme place en appels et retours, vous le gagnerez plus que largement en supprimant tes redites de la programmation linéaire. c. Complexité : un algorithme. qu'il soit programmé en linéaire ou a l'aide de sous-programmes, aura en permanence la même complexité En effet, quête que soit votre méthode de programmation, si vous l'avez optimisée dans les deux cas (linéaire ou non-linéaire ), elle aboutira à une complexité équivalente. Ce critère ne jouera donc pas dans te choix d'un type de programmation par rapport a l'autre. Revenons brièvement sur la notion des appels imbriqués, en donnant une nouvelle fois un conseil qui vous évitera de planter définitivement votre micro. Nous avons vu précédemment qu'a partir d'un sous-programme , il fallait éviter impérativement de réaliser un appel a ce sous-programme . Mais regarder a nouveau le schéma des appels imbriqués. Vous remarquez que, comme pour les boucles imbriquées du Basic, une routine ne fait jamais à une routine moins profonde. Imaginons la structure de programme suivante, et regardons-en la représentation graphique associée. Nous allons, pour simplifier la lecture du programe, utiliser l'instruction du micro-processeur 6502 JSR (qui signifie : Jump to SubRoutine, ou appel à un sous-programme). Programme Plantage 10 PAS 1 DES RESULTATS 50 FIN Sous-programme a 100 PAS 1 Sous-programme b 200 PAS 1 Sous-programme c 300 PAS 1 Sous-programme d 400 PAS 1 Vous avez le programme, regardons maintenant te schéma qui représente te cheminement du microprocesseur lors de l'exécution de ce programme.
Vous avez remarqué, sans nul doute, le croisement des appels.
|