

Quel est le logiciel système capable de transformer les programmes sources en langage de haut niveau en programmes cibles ?
Le logiciel système qui transforme les programmes sources de langage de haut niveau en programmes cibles est un « compilateur ». Un compilateur fait référence à un programme de traduction qui traduit un programme source écrit dans un langage de programmation de haut niveau en un programme cible équivalent au format langage machine. Le processus de travail d'un compilateur traduisant un programme source en un programme cible est divisé en cinq étapes : analyse lexicale de la syntaxe ; optimisation du code intermédiaire ; analyse lexicale du code cible ; , si des erreurs grammaticales sont détectées lors de l'analyse, un message d'invite sera émis.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
Le logiciel système capable de traiter des programmes sources écrits dans des langages de haut niveau en programmes cibles est un « compilateur ».
Compilateur (programme de compilation), également appelé compilateur, fait référence à un programme de traduction qui traduit un programme source écrit dans un langage de programmation de haut niveau en un programme cible équivalent au format langage machine. Les compilateurs sont des programmes de traduction mis en œuvre à l'aide d'une approche d'implémentation générative. Il prend en entrée un programme source écrit dans un langage de programmation de haut niveau et en sortie un programme cible exprimé en langage assembleur ou en langage machine. Le programme cible compilé passe généralement également par une étape d'exécution afin de s'exécuter avec le support du programme en cours d'exécution, de traiter les données initiales et de calculer les résultats de calcul requis.
Le compilateur doit analyser le programme source puis le synthétiser dans le programme cible. Premièrement, vérifier l'exactitude du programme source et le décomposer en plusieurs composants de base ; deuxièmement, établir les parties de programme cible équivalentes correspondantes sur la base de ces composants de base. Afin d'accomplir ces tâches, le compilateur doit créer des tables pendant la phase d'analyse et transformer le programme source en un langage intermédiaire afin qu'il puisse être facilement référencé et traité lors de l'analyse et de la synthèse.
Caractéristiques du compilateur :
Le compilateur doit analyser le programme source puis le synthétiser dans le programme cible. Premièrement, vérifier l'exactitude du programme source et le décomposer en plusieurs composants de base ; deuxièmement, établir les parties de programme cible équivalentes correspondantes sur la base de ces composants de base. Afin d'accomplir ces tâches, le compilateur doit créer des tables pendant la phase d'analyse et transformer le programme source en un langage intermédiaire afin qu'il puisse être facilement référencé et traité lors de l'analyse et de la synthèse.
Principales structures de données utilisées dans l'analyse et la synthèse de structures de données, y compris les tables de symboles, les tables de constantes et les programmes de langage intermédiaire. La table des symboles se compose d'identifiants utilisés dans le programme source ainsi que de leurs attributs, qui incluent des types (tels que des variables, des tableaux, des structures, des fonctions, des procédures, etc.), des types (tels que des entiers, des types réels, des chaînes, des types complexes, etc.). étiquettes), etc.), ainsi que d'autres informations requises par le programme cible. La table des constantes comprend les constantes utilisées dans le programme source, y compris la représentation machine des constantes et les adresses du programme cible qui leur sont attribuées. Un programme en langage intermédiaire est une forme intermédiaire de programme introduite avant la traduction du programme source en programme cible. Le choix de sa représentation dépend de la manière dont le compilateur l'utilisera et le traitera ultérieurement. Les formes linguistiques intermédiaires couramment utilisées comprennent la représentation polonaise, les triples, les quadruples et les triples indirects.
L'analyse d'une partie du programme source se fait à travers trois étapes : analyse lexicale, analyse syntaxique et analyse sémantique. L'analyse lexicale est complétée par un programme d'analyse lexicale (également appelé scanner), dont la tâche est d'identifier les mots (c'est-à-dire les identifiants, les constantes, les mots réservés et les opérateurs divers, les signes de ponctuation, etc.), de créer des tables de symboles et des tables de constantes, et convert Le programme source est converti en un formulaire interne facile à analyser et à traiter par le compilateur. L'analyseur de syntaxe est la partie centrale du compilateur. Sa tâche principale est de vérifier si le programme source est grammatical selon les règles grammaticales du langage. S'il n'est pas grammatical, un message d'erreur de syntaxe sera généré ; s'il est grammatical, la structure grammaticale du programme source sera décomposée et un programme interne sous forme de langage intermédiaire sera construit. Le but de l’analyse grammaticale est de comprendre comment les mots forment des phrases et comment les énoncés forment des programmes. Le programme d'analyse sémantique vérifie en outre l'exactitude sémantique des structures juridiques du programme. Son objectif est de garantir l'utilisation correcte des identifiants et des constantes, de collecter et de sauvegarder les informations nécessaires dans des tables de symboles ou des programmes de langage intermédiaire et d'effectuer le traitement sémantique correspondant.
Le processus de travail d'un compilateur
Un compilateur est également appelé système de compilation. Il s'agit d'un programme de traitement du langage qui traduit des programmes sources orientés processus écrits dans des langages de haut niveau en programmes cibles. Le processus du compilateur consistant à traduire un programme source en un programme cible est divisé en cinq étapes : analyse lexicale ; génération de code intermédiaire ; optimisation du code cible ; Il effectue principalement une analyse lexicale et une analyse syntaxique, également appelée analyse du programme source. Au cours du processus d'analyse, des erreurs grammaticales sont détectées et des informations rapides sont fournies.
(1) Analyse lexicale
La tâche de l'analyse lexicale est de traiter les mots composés de caractères, de parcourir le programme source caractère par caractère de gauche à droite, de générer des symboles de mots un par un et de les utiliser comme chaînes. La source Le programme est transformé en un programme intermédiaire de chaînes de symboles de mots. Un programme qui effectue une analyse lexicale est appelé lexer ou scanner.
Les symboles de mots dans le programme source sont analysés par le scanner et produisent généralement des formules binaires : catégorie de mot ; la valeur du mot lui-même. Les catégories de mots sont généralement codées avec des nombres entiers. Si une catégorie ne contient qu'un seul symbole de mot, alors pour ce symbole de mot, le codage de catégorie représente entièrement sa propre valeur. Si une catégorie contient de nombreux symboles verbaux, alors pour chacun de ses symboles verbaux, en plus du code de catégorie, sa propre valeur doit également être indiquée.
De manière générale, il existe deux manières de construire des analyseurs lexicaux : la construction manuelle et la génération automatique. La construction manuelle peut fonctionner à l'aide de diagrammes d'états, la génération automatique peut être implémentée à l'aide d'automates finis déterministes.
(2) Analyse syntaxique
L'analyseur syntaxique du compilateur prend les symboles de mots en entrée, analyse si la chaîne de symboles de mots forme une unité grammaticale conforme aux règles grammaticales, telles que l'expression, l'affectation, la boucle, etc. , et vérifie enfin s'il forme un Un programme qui répond aux exigences est analysé selon les règles grammaticales utilisées dans la langue pour vérifier si chaque énoncé a une structure logique correcte. Le programme est l'unité grammaticale finale. Les règles grammaticales d'un compilateur peuvent être caractérisées par une grammaire hors contexte.
Il existe deux méthodes d'analyse grammaticale : l'analyse descendante et l'analyse ascendante. De haut en bas signifie partir du symbole de départ de la grammaire, déduire vers le bas et déduire la phrase. La méthode d'analyse ascendante utilise la méthode de réduction par déplacement. L'idée de base est la suivante : utilisez une fenêtre contextuelle de symbole enregistré premier-dernier pour déplacer les symboles d'entrée un par un lorsque le haut de la pile se forme. une production d'une certaine Lors de la sélection d'une expression candidate, la partie en haut de la pile est réduite au symbole voisin de gauche de la production.
(3) Génération de code intermédiaire
Le code intermédiaire est une représentation interne du programme source, ou langage intermédiaire. La fonction du code intermédiaire est de rendre la structure du programme compilé logiquement plus simple et plus claire, notamment pour faciliter la mise en œuvre de l'optimisation du code cible. Le code intermédiaire est le programme en langage intermédiaire, et la complexité du langage intermédiaire se situe entre le langage du programme source et le langage machine. Il existe de nombreuses formes de langues intermédiaires, les plus courantes étant la notation polonaise inversée, les tétragrammes, les formes ternaires et les arbres.
(4) Optimisation du code
L'optimisation du code fait référence à l'exécution de plusieurs transformations équivalentes sur le programme afin qu'un code cible plus efficace puisse être généré à partir du programme transformé. La soi-disant équivalence signifie que les résultats en cours du programme ne sont pas modifiés. Ce qu'on appelle efficace fait principalement référence à la courte durée d'exécution du code cible et au petit espace de stockage occupé. Cette transformation est appelée optimisation.
Il existe deux types d'optimisation : l'une consiste à optimiser le code intermédiaire après analyse syntaxique, qui ne dépend pas de l'ordinateur spécifique ; l'autre est effectuée lors de la génération du code cible, qui dépend en grande partie de l'ordinateur spécifique. Pour le premier type d'optimisation, il peut être divisé en trois niveaux différents : optimisation locale, optimisation de boucle et optimisation globale selon la portée du programme impliqué.
(5) Génération de code cible
La génération de code cible est la dernière étape de la compilation. Le générateur de code cible convertit le code intermédiaire analysé syntaxiquement ou optimisé en code cible. Il existe trois formes de code cible :
① Code en langage machine qui peut être exécuté immédiatement, toutes les adresses sont déplacées ;
② Modules en langage machine à assembler, lorsqu'ils doivent être exécutés, le chargeur de liens les combine avec certains en cours d'exécution ; programmes Connectez-les et convertissez-les en code de langage machine exécutable ;
③ Le code de langage assembleur doit être compilé par un assembleur pour devenir un code de langage machine exécutable.
Trois problèmes qui affectent directement la vitesse du code cible doivent être pris en compte lors de l'étape de génération du code cible : premièrement, comment générer un code cible plus court ; deuxièmement, comment utiliser pleinement les registres de l'ordinateur et réduire le nombre de fois, le code cible accède à l'unité de stockage ; troisièmement, comment utiliser pleinement les caractéristiques du système d'instruction informatique pour améliorer la qualité du code cible.
Pour plus de connaissances connexes, veuillez visiter la rubrique FAQ !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Les caractéristiques du langage machine : il est difficile à apprendre, à comprendre et à comprendre ; il n'a pas d'universalité ; il nécessite une allocation manuelle de mémoire et il fonctionne le plus rapidement ; Les caractéristiques du langage assembleur : l'efficacité d'exécution du programme est très élevée, il prend peu d'espace de stockage, il s'exécute rapidement, il manque de polyvalence et le programme n'est pas facile à transplanter ; Caractéristiques des langages de haut niveau : facilité, certaine polyvalence, et ne pouvant être directement reconnus et exécutés par les ordinateurs.

Le logiciel système capable de traduire des programmes sources écrits dans des langages de haut niveau en programmes cibles est un « compilateur ». Un compilateur est un programme de traduction implémenté à l'aide d'une approche d'implémentation générative ; il prend en entrée un programme source écrit dans un langage de programmation de haut niveau et utilise un programme cible exprimé en langage assembleur ou en langage machine en sortie.

Le langage assembleur n’est pas un langage de haut niveau ; c’est un langage de bas niveau comme le langage machine. La différence entre le langage assembleur et le langage assembleur : 1. L'efficacité de programmation du langage assembleur n'est pas élevée, tandis que l'efficacité de programmation du langage assembleur est supérieure à celle du langage assembleur 2. La lisibilité du langage assembleur est ; supérieur à celui du langage assembleur ; 3. Le langage assembleur est un langage machine, tandis que le langage de haut niveau est simplifié et proche du langage naturel humain.

Le langage machine n'est pas un langage de haut niveau. C'est un langage de bas niveau utilisé pour le matériel informatique. Il interagit directement avec le matériel sous-jacent de l'ordinateur et utilise un codage binaire pour représenter les instructions et les données. ou fonction du matériel informatique. , Le langage de haut niveau est un langage de programmation plus proche du langage humain, offrant des capacités d'abstraction et une efficacité de développement plus élevées. Le langage machine et le langage de haut niveau jouent des rôles différents dans la programmation, chacun avec ses propres avantages et. scénarios applicables.

Kuai Technology a rapporté le 17 novembre que ce matin, Shenzhen Kaihong a annoncé que le premier robot humanoïde KaihongOS basé sur l'open source Hongmeng, développé conjointement par lui et Leju Robot, avait été officiellement lancé. Selon l'introduction officielle, il s'agit d'un système d'enseignement entièrement intelligent équipé de KaihongOS et utilisant des robots comme support, couvrant plusieurs scénarios tels que l'industrie et les services. Ce robot est équipé d'un capteur de fréquence cardiaque d'oxygène dans le sang, d'un capteur de température et d'humidité, d'un capteur de température infrarouge, d'un capteur d'induction du corps humain, d'un NFC, d'un écran OLED et de lumières LED. Grâce à de multiples détections articulaires, il peut exécuter intelligemment des décisions. Dans le même temps, le robot peut également être interconnecté avec des téléphones mobiles, des tablettes, des ordinateurs et d'autres appareils en temps réel, éliminant ainsi la méthode traditionnelle de connexion par faisceau de câbles et améliorant l'efficacité de l'enseignement. En même temps, ce robot dispose également de 17

Le langage C stipule que dans un programme source, la position de la fonction principale peut être arbitraire ; lors de l'exécution d'un programme écrit en langage C, la fonction principale équivaut à l'entrée dans le programme d'exécution quelle que soit la position de la fonction principale dans ; Pendant tout le processus, un programme C commence toujours son exécution à partir de la fonction mam.

Analyse des fonctionnalités du langage Go : est-ce un langage de haut niveau ? Le langage Go est un langage de programmation statiquement fortement typé développé par Google. Il est conçu pour être simple, facile à lire et à écrire et possède des fonctionnalités de concurrence efficaces. Ainsi, selon la définition du langage de haut niveau, analysons si le langage Go est un langage de haut niveau. Définition du langage de haut niveau Un langage de haut niveau est un langage de programmation plus proche du langage humain que du langage machine. Il présente les caractéristiques d'une syntaxe concise, facile à lire et à écrire et d'un niveau d'abstraction élevé, ce qui permet aux programmeurs de se concentrer davantage sur la résolution du problème lui-même.

Un programme écrit dans un « langage de programmation » est appelé programme source. Le code source fait référence à un fichier texte non compilé écrit conformément à certaines spécifications du langage de programmation. Il fait référence à une série d'instructions de langage informatique lisibles par l'homme, généralement écrites dans un langage de haut niveau. Le but ultime d'un programme source informatique est de traduire un texte lisible par l'homme en instructions binaires qu'un ordinateur peut exécuter. Ce processus est appelé compilation et est réalisé via un compilateur.