CODINGHEBDOGICIEL ★ LA PAGE PÉDAGOGIQUE D'HEBDOGICIEL 084: FORMATION À L'ASSEMBLEUR - LA PILE ★

La page pédagogique d'hebdogiciel 084: Formation à l'assembleur - La PileCoding 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.


Appels imbriqués

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
20 PAS 2
30 JSR a
40 AFFICHAGE

DES RESULTATS

50 FIN

Sous-programme a

100 PAS 1
110 JSR b
120 RETOUR

Sous-programme b

200 PAS 1
210 PAS 2
220 JSR c
230 RETOUR

Sous-programme c

300 PAS 1
310 JSR d
320 PAS 2
330 JSR b
340 RETOUR

Sous-programme d

400 PAS 1
410 PAS 2
420 PAS 3
430 RETOUR

Vous avez le programme, regardons maintenant te schéma qui représente te cheminement du microprocesseur lors de l'exécution de ce programme.


Appels du programme Plantage

Vous avez remarqué, sans nul doute, le croisement des appels.

HEBDOGICIEL n°84

★ ANNÉE: 1985
★ AUTEUR(S): ???

Page précédente : La page pédagogique d'hebdogiciel 083: Generalite sur les Routines

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » La page pédagogique d'hebdogiciel 123: La Mémoire
» Coding » La page pédagogique d'hebdogiciel 139: La Pile
» Coding » La page pédagogique d'hebdogiciel 088 : Formation à l'assembleur
» Coding » La page pédagogique d'hebdogiciel 085
» Coding » La page pédagogique d'hebdogiciel 155: Adressage
» Coding » La page pédagogique d'hebdogiciel 127: Registre F
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 299 millisecondes et consultée 2149 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.