Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Programmation du microprocesseur

Le « vocabulaire » d'instructions que possède une puce de microprocesseur particulière est spécifique à ce modèle de puce. Un Intel 80386, par exemple, utilise un ensemble de codes binaires complètement différent d'un Motorola 68020, pour désigner des fonctions équivalentes.

Malheureusement, il n'y a pas de normes en place pour les instructions du microprocesseur. Cela rend la programmation au niveau le plus bas très confuse et spécialisée.

Lorsqu'un programmeur humain développe un ensemble d'instructions pour dire directement à un microprocesseur comment faire quelque chose (comme contrôler automatiquement le taux d'injection de carburant dans un moteur), il programme dans le propre "langage" du processeur. Ce langage, qui se compose des mêmes codes binaires que l'unité de contrôle à l'intérieur de la puce CPU décode pour effectuer des tâches, est souvent appelé langage machine .

Alors que les logiciels en langage machine peuvent être « formulés » en notation binaire, ils sont souvent écrits sous forme hexadécimale, car il est plus facile à utiliser pour les êtres humains. Par exemple, je vais présenter quelques-uns des codes d'instructions courants pour la puce du microprocesseur Intel 8080 :

Description de l'instruction binaire hexadécimale ----------- -------- ------------------------------- ---------- | 7B 01111011 Déplacer le contenu du registre A vers le registre E | | 87 10000111 Ajouter le contenu du registre A au registre D | | 1C 00011100 Incrémenter le contenu du registre E de 1 | | D3 11010011 Octet de sortie de données vers le bus de données 

Même avec la notation hexadécimale, ces instructions peuvent être facilement confondues et oubliées. A cet effet, il existe une autre aide aux programmeurs appelée langage assembleur .

Avec le langage assembleur, des mots mnémoniques de deux à quatre lettres sont utilisés à la place du code hexadécimal ou binaire réel pour décrire les étapes du programme. Par exemple, l'instruction 7B pour l'Intel 8080 serait "MOV A,E " en langage assembleur.

Les mnémoniques, bien sûr, sont inutiles au microprocesseur, qui ne peut comprendre que des codes binaires, mais c'est un moyen pratique pour les programmeurs de gérer l'écriture de leurs programmes sur papier ou sur éditeur de texte (traitement de texte). Il existe même des programmes écrits pour les ordinateurs appelés assembleurs qui comprennent ces mnémoniques, les traduisant en codes binaires appropriés pour un microprocesseur cible spécifié, afin que le programmeur puisse écrire un programme dans le langage natif de l'ordinateur sans jamais avoir à faire face à une notation hexadécimale étrange ou à un code binaire fastidieux.

Une fois qu'un programme est développé par une personne, il doit être écrit en mémoire avant qu'un microprocesseur puisse l'exécuter. Si le programme doit être stocké dans la ROM (dont certains le sont), cela peut être fait avec une machine spéciale appelée programmeur de ROM , ou (si vous êtes masochiste), en branchant la puce ROM dans une maquette, en l'alimentant avec les tensions appropriées et en écrivant des données en établissant les bonnes connexions filaires aux lignes d'adresse et de données, une à la fois, pour chaque instructions.

Si le programme doit être stocké dans une mémoire volatile, telle que la mémoire RAM de l'ordinateur d'exploitation, il peut y avoir un moyen de le saisir à la main via le clavier de cet ordinateur (certains ordinateurs ont un mini-programme stocké dans la ROM qui indique au microprocesseur comment accepter les frappes d'un clavier et les stocker en tant que commandes dans la RAM), même s'il est trop stupide de faire autre chose.

De nombreux kits informatiques "passe-temps" fonctionnent ainsi. Si l'ordinateur à programmer est un ordinateur personnel entièrement fonctionnel avec un système d'exploitation, des lecteurs de disque et l'ensemble des travaux, vous pouvez simplement ordonner à l'assembleur de stocker votre programme fini sur un disque pour une récupération ultérieure.

Pour « exécuter » votre programme, vous devez simplement taper le nom de fichier de votre programme à l'invite, appuyer sur la touche Entrée et le registre du compteur de programme du microprocesseur sera défini pour pointer vers l'emplacement (« adresse ») sur le disque où la première instruction est stocké, et votre programme s'exécuterait à partir de là.

Bien que la programmation en langage machine ou en langage assembleur permette des programmes rapides et très efficaces, il faut beaucoup de temps et de compétences pour le faire pour tout sauf les tâches les plus simples, car chaque instruction en langage machine est si grossière. La réponse à cela est de développer des moyens pour les programmeurs d'écrire dans des langages de « haut niveau », qui peuvent exprimer plus efficacement la pensée humaine. Au lieu de taper des dizaines de codes de langage assembleur cryptiques, un programmeur écrivant dans un langage de haut niveau serait capable d'écrire quelque chose comme ceci . . .

Imprimer "Hello, world!" 

. . . et attendez-vous à ce que l'ordinateur imprime « Hello, world ! » sans autre instruction sur la façon de le faire. C'est une excellente idée, mais comment un microprocesseur comprend-il une telle pensée « humaine » alors que son vocabulaire est si limité ?

La réponse se présente sous deux formes différentes :interprétation , ou compilation . Tout comme deux personnes parlant des langues différentes, il doit y avoir un moyen de transcender la barrière de la langue pour qu'elles puissent converser.

Un traducteur est nécessaire pour traduire les mots de chaque personne dans la langue de l'autre personne, d'une manière à la fois. Pour le microprocesseur, cela signifie un autre programme, écrit par un autre programmeur en langage machine, qui reconnaît les modèles de caractères ASCII des commandes de haut niveau telles que Imprimer (Imprimer) et peut les traduire en étapes nécessaires que le microprocesseur peut directement comprendre.

Si cette traduction est effectuée pendant l'exécution du programme, tout comme un traducteur intervenant entre deux personnes dans une conversation en direct, on parle d'« interprétation ». D'un autre côté, si l'ensemble du programme est traduit en langage machine d'un seul coup, comme un traducteur enregistrant un monologue sur papier et traduisant ensuite tous les mots d'un seul coup dans un document écrit dans l'autre langue, le processus s'appelle " compilation."

L'interprétation est simple, mais rend le programme lent car le microprocesseur doit continuellement traduire le programme entre les étapes, ce qui prend du temps. La compilation prend du temps au départ pour traduire l'ensemble du programme en code machine, mais le code machine résultant n'a pas besoin de traduction après cela et s'exécute plus rapidement en conséquence.

Les langages de programmation tels que BASIC et FORTH sont interprétés. Des langages tels que C, C++, FORTRAN et PASCAL sont compilés. Les langages compilés sont généralement considérés comme les langages de choix des programmeurs professionnels, en raison de l'efficacité du produit final.

Naturellement, étant donné que les vocabulaires des langages machine varient considérablement d'un microprocesseur à l'autre et que les langages de haut niveau sont conçus pour être aussi universels que possible, les programmes d'interprétation et de compilation nécessaires à la traduction linguistique doivent être spécifiques au microprocesseur.

Le développement de ces interpréteurs et compilateurs est un exploit des plus impressionnants :les personnes qui créent ces programmes gagnent très certainement leur vie, surtout si l'on considère le travail qu'ils doivent faire pour maintenir leur produit logiciel à jour avec les modèles de microprocesseurs en évolution rapide apparaissant sur le marché. !

Pour atténuer cette difficulté, les fabricants de puces de microprocesseur avant-gardistes (notamment Intel et Motorola) essaient de concevoir leurs nouveaux produits pour qu'ils soient rétrocompatibles avec leurs anciens produits. Par exemple, l'ensemble des instructions de la puce Intel 80386 est contenu dans les dernières puces Pentium IV, bien que les puces Pentium aient des instructions supplémentaires qui manquent aux puces 80386.

Cela signifie que les programmes en langage machine (compilateurs aussi) écrits pour les ordinateurs 80386 s'exécuteront sur le dernier et le plus performant des processeurs Intel Pentium IV, mais les programmes en langage machine écrits spécifiquement pour tirer parti du plus grand jeu d'instructions du Pentium ne s'exécuteront pas sur un 80386, car l'ancien processeur n'a tout simplement pas certaines de ces instructions dans son vocabulaire :l'unité de contrôle à l'intérieur du 80386 ne peut pas les décoder.

S'appuyant sur ce thème, la plupart des compilateurs ont des paramètres qui permettent au programmeur de sélectionner le type de CPU pour lequel il souhaite compiler du code en langage machine. S'ils sélectionnent le paramètre 80386, le compilateur effectuera la traduction en utilisant uniquement les instructions connues de la puce 80386 ; s'ils sélectionnent le paramètre Pentium, le compilateur est libre d'utiliser toutes les instructions connues des Pentium.

Cela revient à dire à un traducteur quel sera le niveau de lecture minimum de son auditoire :un document traduit pour un enfant sera compréhensible pour un adulte, mais un document traduit pour un adulte peut très bien être du charabia pour un enfant.

FICHE DE TRAVAIL CONNEXE :


Technologie industrielle

  1. 10 langages de programmation cloud les plus cool
  2. Opérateurs de programmation C
  3. Langage de programmation C PDF :Tutoriel de base pour les débutants
  4. Bosque :le nouveau langage de programmation de Microsoft sans boucles
  5. 9 nouveaux langages de programmation à apprendre en 2021
  6. C Tutoriel
  7. Langage C - Présentation
  8. C - Structure du programme
  9. Heidenhain lance un programme de formation CNC en ligne