En programmation informatique, un symbole est une étiquette apposée sur certains éléments du code objet, du bytecode ou d'un arbre syntaxique abstrait, permettant de les identifier sous cette forme transformée du code source.
Un symbole est très proche d'un identificateur du langage source, mais le concept d'identificateur ne recouvre pas totalement le concept de symbole. Le meilleur exemple en est la décoration de nom effectué par les compilateurs C++ qui consiste à trouver un symbole unique pour un identificateur dont le nom est surchargé.
Le code objet, le bytecode et les arbres syntaxiques abstraits proviennent du processus de compilation, qui consiste à convertir le code source (écrit dans un langage de programmation) en un code exécutable ou bien en une structure plus facilement utilisable par l'ordinateur.
L’exécution symbolique permet d'explorer les chemins d'exécution possibles d'un programme informatique à partir des symboles contenus dans son code source. Elle diffère de l’exécution concrète qui ne suit qu'un seul des chemins possibles.
Les symboles enregistrés dépendent du processus de compilation, de l'étape dans le processus de compilation et du langage de programmation utilisé.
Par exemple, en C, les symboles exportés dans du code objet sont les informations sur les structures (nom, nom et type des champs) (déclarées avec le mot clé struct), les fonctions globales (nom, nombre et type des paramètres, type de retour) et nom et type des variables globales (non marqués avec le mot clé static, ou bien marqués avec le mot clé extern) afin qu'ils puissent être utilisés lors de l'étape d'édition des liens. De même, compiler du code C pour le débogage génère les symboles de débogage qui permettent d'identifier la portion du code source correspondant au code binaire exécuté.
En Java, tous les symboles sont exportés : nom des classes, nom et type des attributs, méthodes (nombre et type des paramètres, type de retour, nom). Ils servent aussi bien à la résolution des noms lors de l'exécution qu'au débogage.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
We learn and apply software engineering principles to program projects in Python. Projects cover problems in life sciences, and will be developed over the course of the semester.
This course focuses on software security fundamentals, secure coding guidelines and principles, and advanced software security concepts. Students learn to assess and understand threats, learn how to d
The "Introduction to Applied Data Science" (I2ADS) course is aimed at students of all levels to train them in the core computer science software stack and techniques forming the pillars of open & repr
Une table de symboles est une centralisation des informations rattachées aux identificateurs d'un programme informatique. C'est une fonction accélératrice de compilation, dont l'efficacité dépend de la conception. Dans une table des symboles, on retrouve des informations comme : le type, l'emplacement mémoire, la portée, la visibilité, etc. Généralement, la table est créée dynamiquement. Une première portion est créée au début de la compilation. Puis, de façon opportuniste, en fonction des besoins, elle est complétée.
Un core dump est un fichier dans lequel est enregistré une copie de la mémoire vive et des registres d'un processeur, permettant d'avoir un instantané de l'état d'un système. Il sert généralement à des fins d'analyse, à la suite d'une exception, forcée ou provoquée par une erreur. Le core dump peut pour cela être analysé dans un débogueur. Sur les systèmes suivant la norme POSIX, le signal « Core » permet de déclencher le core dump d'un processus donné, mais il existe également d'autres méthodes permettant d'y aboutir.
Un débogueur ou débugueur (de l'anglais debugger) est un logiciel qui aide un développeur à analyser les bugs d'un programme. Pour cela, il permet d'exécuter le programme pas-à-pas , d'afficher la valeur des variables à tout moment et de mettre en place des points d'arrêt sur des conditions ou sur des lignes du programme. Il s'agit de l'application à la programmation informatique du processus de troubleshooting. Le programme à déboguer est exécuté à travers le débogueur et s'exécute normalement.
Designing digital circuits well is notoriously difficult. This difficulty stems in part from the very
many degrees of freedom inherent in circuit design, typically coupled with the need to satisfy
various constraints. In this thesis, we demonstrate how for ...
EPFL2018
In High-Level Synthesis (HLS), we consider abstractions that span from software to hardware and target heterogeneous architectures. Therefore, managing the complexity introduced by this is key to implementing good, maintainable, and extendible HLS compiler ...
2022
,
Formally verifying the correctness of software network functions (NFs) is necessary for network reliability, yet existing techniques require full source code and mandate the use of specific data structures. We describe an automated technique to verify NF b ...