Fonctions et Blocs fonctions
Présentation
Allocation de mémoire
L' Allocation statique se fait avant l'exécution du programme, c'est-à-dire au moment de la création du programme, ce qui signifie que l'espace alloué est déjà réservé dans le fichier exécutable du programme lorsque le système d'exploitation charge le programme en mémoire pour l'exécuter. L'espace mémoire nécessaire est plus important. L' avantage est au niveau des performances; la mémoire statique est immédiatement utilisable. L'allocation statique est la méthode la plus sûre au sens où :
-la quantité consommée est constante et complètement connu e avant l'exécution.
-elle est généralement accessible exclusivement en lecture seule (non modifiable).
C'est toutefois une méthode très inflexible et insuffisante pour les programmes dont les besoins peuvent varier de façon imprévisible. Pour un programme ayant des besoins potentiels de mémoire importants, l'allocation statique conduirait à un gaspillage.
L' Allocation dynamique se fait pendant l'exécution du programme, ce qui signifie que l'espace alloué dynamiquement ne se trouve pas déjà dans le fichier exécutable du programme lorsque le système d'exploitation charge le programme en mémoire pour l'exécuter. La demande d'allocation d'espace au système d'exploitation se fait durant l'exécution du programme. La plus connue est l'allocation automatique sur pile.
L'exécution d'un programme utilise généralement une pile contenant les cadres d'appel aux routines du langage de programmation utilisé. Schématiquement, les variables lexicales, c'est-à-dire les variables définies dans la portée textuelle d'une routine, sont :
-allouées lors de l'entrée dans la routine, c'est-à-dire que l'espace est réservé pour ces variables.
-désallouées automatiquement lors de la sortie de la routine, c'est-à-dire que l'espace réservé pour ces variables est dorénavant libre et disponible pour d'autres variables.
Les routines encapsule une séquence d'instructions effectuant un traitement spécifique qui peut être réutilisé dans le programme
-la quantité consommée est constante et complètement connu e avant l'exécution.
-elle est généralement accessible exclusivement en lecture seule (non modifiable).
C'est toutefois une méthode très inflexible et insuffisante pour les programmes dont les besoins peuvent varier de façon imprévisible. Pour un programme ayant des besoins potentiels de mémoire importants, l'allocation statique conduirait à un gaspillage.
L' Allocation dynamique se fait pendant l'exécution du programme, ce qui signifie que l'espace alloué dynamiquement ne se trouve pas déjà dans le fichier exécutable du programme lorsque le système d'exploitation charge le programme en mémoire pour l'exécuter. La demande d'allocation d'espace au système d'exploitation se fait durant l'exécution du programme. La plus connue est l'allocation automatique sur pile.
L'exécution d'un programme utilise généralement une pile contenant les cadres d'appel aux routines du langage de programmation utilisé. Schématiquement, les variables lexicales, c'est-à-dire les variables définies dans la portée textuelle d'une routine, sont :
-allouées lors de l'entrée dans la routine, c'est-à-dire que l'espace est réservé pour ces variables.
-désallouées automatiquement lors de la sortie de la routine, c'est-à-dire que l'espace réservé pour ces variables est dorénavant libre et disponible pour d'autres variables.
Les routines encapsule une séquence d'instructions effectuant un traitement spécifique qui peut être réutilisé dans le programme
Fonctionnement pile d'exécution
La pile d'exécution sert à enregistrer des informations au sujet des fonctions active, donc celles qui ont été appelées mais pas complètement exécutées. Mais sa principale utilisation est de garder la trace de l'endroit où chaque fonction active doit retourner à la fin de son exécution (adresse de retour). En plus d’emmagasiner des adresses de retour, la pile d’exécution emmagasine aussi d’autres valeurs associées comme les variables locales de la fonction, les paramètres de la fonction, etc.Pour faciliter le débogage, le programmeur peut obtenir une représentation de la pile d’exécution appelée la trace d'appels.
La trace d'appels est la représentation des piles d'exécution à un moment donné lors de l'exécution du programme. Elle est très utile lors de débogages interactifs ou après une erreur. Elle remonte la séquence d'appels jusqu'au point où la trace d'appels a été générée. Quand cela suit une erreur, le point représente la fonction où l'erreur a eu lieu.
La trace d'appels est la représentation des piles d'exécution à un moment donné lors de l'exécution du programme. Elle est très utile lors de débogages interactifs ou après une erreur. Elle remonte la séquence d'appels jusqu'au point où la trace d'appels a été générée. Quand cela suit une erreur, le point représente la fonction où l'erreur a eu lieu.
Bloc d'appel paramétrable
Lors de l'assignation d'un FB à un OB, un bloc d'appel dans l' OB ainsi qu'un DB d'instance sont générés. Lesopérandes formels des variables locales y sont inscrits moins les variables statiques et temporaires. Il faut après coup assigner à ces opérandes des adresses absolues et des symboles (opérandes actuels) venant de la liste des variables API. Les FC peuvent être appelées dans un FB, une autre FC ou l'OB. Mais elles ne peuvent pas avoir un DB associé. Il faut pour cela les imbriquer dans un FB. Le FB a des variables statiques, donc les mémoires n'ont pas besoin d'être paramétrer dans le bloc d'appel. La FC doit placer ses mémoires sous InOut, donc elles seront assignées au bloc d'appel.