Il est de notoriété publique que le code est écrit par un développeur et que les humains communiquent avec les ordinateurs. Cependant, avez-vous déjà pensé à la façon dont les logiciels tels que le code interagissent avec le matériel informatique tel qu'un CPU (Central Processing Unit)? Si la réponse est oui, alors vous êtes au bon endroit.
Pour comprendre comment le code est exécuté sur un ordinateur, vous devez comprendre ce qui fait fonctionner un ordinateur et comment il peut être manipulé. Tout d'abord, parlons d'abord des idées fondamentales du matériel informatique avant de passer au côté logiciel des choses.
Qu'est-ce que le binaire ?
Le binaire est un système de nombres en base 2 que les processeurs et la mémoire utilisent pour exécuter du code. Les nombres binaires ne peuvent être que 1 ou 0, d'où son nom. Si vous regroupez huit nombres binaires (00000000), vous obtenez ce qu'on appelle un octet, tandis qu'un seul nombre binaire (0) est appelé un bit.
Comment un simple commutateur produit des signaux binaires
Tout ce qui est logique dans l'informatique avec des machines commence par un simple commutateur. Un simple interrupteur a deux conducteurs et un mécanisme de connexion et de déconnexion. La connexion des deux conducteurs permet au courant de circuler, ce qui produit un signal à l'autre extrémité du conducteur. D'autre part, si les conducteurs sont déconnectés, le courant ne circulera pas, ce qui signifie qu'aucun signal ne sera produit.
Puisqu'un commutateur ne peut être activé ou désactivé qu'à un moment donné, ils fournissent le mécanisme idéal pour que les signaux haut et bas soient utilisés pour produire des signaux d'onde carrée.
Lorsque vous actionnez un commutateur, il produit un signal ou un bit de données. Une photo ordinaire prise à partir d'un smartphone représenterait environ cinq mégaoctets de données, soit 40 000 000 de bits. Cela signifierait que vous devrez appuyer sur le commutateur des dizaines de millions de fois juste pour produire suffisamment de données pour une photo prise depuis votre smartphone.
Avec les limitations mécaniques d'un commutateur, les ingénieurs avaient besoin de quelque chose qui n'avait aucune pièce mobile et qui offrait des vitesses de commutation plus rapides.
Transistors utilisés comme commutateur
Grâce à la découverte du dopage (manipulant la conductivité électrique des semi-conducteurs comme le silicium), les ingénieurs ont pu fabriquer des commutateurs à commande électrique appelés transistors. Cette nouvelle invention a permis des vitesses de traitement plus rapides qui nécessitaient peu de tension pour alimenter, permettant finalement d'empiler plus d'un milliard de ces transistors sur un seul processeur moderne.
Qu'est-ce que l'architecture du processeur ?
Les transistors sont ensuite astucieusement agencés pour réaliser des portes logiques, des demi-additionneurs, des additionneurs, des bascules, des multiplexeurs, des registres et divers composants qui rendent le CPU fonctionnel. La façon dont ces composants ont été empilés définit ce qu'on appelle une architecture CPU.
L'architecture du processeur dicte également l'ISA (Instruction Set Architecture) d'un processeur. Un ISA contient une liste intégrée d'instructions qu'un processeur peut exécuter nativement. Ces instructions sont ensuite mélangées séquentiellement via un langage de programmation pour créer ce que l'on appelle un programme. Habituellement, des centaines d'instructions sont facilement disponibles sur un processeur, y compris l'addition, la soustraction, le déplacement, la sauvegarde et le chargement.
Voici un exemple de jeu d'instructions :
Chaque instruction d'un jeu d'instructions a sa propre adresse binaire appelée opcode. L'opcode sera les premiers bits binaires qui indiquent quelle opération du jeu d'instructions utiliser.
L'opérande suit l'opcode. L'opérande contient les valeurs et les adresses où l'opcode sera utilisé.
Le diagramme montre une instruction de 8 bits. Si un processeur a une architecture 64 bits, les instructions peuvent s'étendre jusqu'à 64 bits en largeur d'instruction, ce qui en fait un processeur plus performant.
En rapport: En quoi les processeurs RISC et CISC sont-ils différents ?
L'assembleur
Maintenant que vous comprenez les signaux binaires, vous pouvez découvrir comment votre ordinateur interprète ces signaux. La façon dont le code machine doit être interprété dépend du type de logique utilisé sur un assembleur (un programme de bas niveau utilisé pour décoder et assembler le code en binaire approprié).
Par exemple, si notre assembleur utilise la norme ASCII (American Standard Code for Information Interchange), notre assembleur prendrait le code machine donné et l'interpréterait de la même manière que de l'ASCII dans le tableau au dessous de.
00101001 | UNE | 00101111 | g | 00110101 | M | 00111011 | S | 01000001 | Oui |
00101010 | B | 00110000 | H | 00110110 | N | 00111100 | T | 01000010 | Z |
00101011 | C | 00110001 | je | 00110111 | 0 | 00111101 | U | ||
00101100 | ré | 00110010 | J | 00111000 | P | 00111110 | V | ||
00101101 | E | 00110011 | K | 00111001 | Q | 00111111 | W | ||
00101110 | F | 00110100 | L | 00111010 | R | 0100000 | X |
Puisque notre assembleur utilise l'ASCII (version 8 bits), tous les huit nombres binaires dans le binaire sont interprétés comme un caractère. L'assembleur prendrait cet octet et l'interpréterait selon les normes données. Par exemple, 01000001 01101001 01010100 se traduirait par le mot "bit".
Comprendre le langage d'assemblage
Assembly Language est un langage de programmation de bas niveau lisible par l'homme qui manipule directement les opcodes et les opérandes d'une architecture CPU.
Voici un exemple de code assembleur simple utilisant le jeu d'instructions montré précédemment :
1. LODA #5
2. LODB #7
3. AJOUTER R3
4. STRE M12
Ce bloc de code est stocké dans la RAM jusqu'à ce que le processeur récupère chaque ligne de code une par une.
Le cycle de récupération, de décodage et d'exécution du processeur
La CPU exécute le code à travers un cycle appelé Fetch, Decode et Execute. Cette séquence montre comment un processeur traite chaque ligne de code.
Aller chercher: Le compteur d'instructions de la CPU prend une ligne d'instructions de la RAM pour indiquer à la CPU quelle instruction exécuter ensuite.
Décoder: L'assembleur décodera le bloc de code lisible par l'homme et l'assemblera sous forme de binaires correctement formatés pour que l'ordinateur puisse le comprendre.
1. 00010101
2. 00100111
3. 00110011
4. 01011100
Exécuter: La CPU exécute ensuite les binaires en appliquant les instructions indiquées par l'opcode aux opérandes fournis.
L'ordinateur va exécuter comme suit :
- Chargez le premier registre avec 5
- Chargez le deuxième registre avec 7
- 5 + 7 = 12, enregistrez 12 dans le troisième registre
- Stocker la valeur du troisième registre à l'adresse RAM M12
L'ordinateur a additionné avec succès deux nombres et stocké la valeur à l'adresse RAM spécifiée.
Super! Vous savez maintenant comment un ordinateur exécute du code. Cependant, cela ne s'arrête pas là.
Aller plus loin
Avec le matériel approprié, un assembleur et un langage d'assemblage, les gens pouvaient exécuter du code avec une facilité raisonnable. Cependant, comme les programmes et le matériel informatique sont devenus encore plus complexes, les ingénieurs et les programmeurs ont dû pensez à un moyen de rendre la programmation moins fastidieuse et d'assurer la compatibilité avec différents types de processeurs architecture. D'où la création de compilateurs et d'interpréteurs.
Qu'est-ce qu'un compilateur et un interprète ?
Le compilateur et l'interpréteur sont des programmes de traduction qui prennent le code source (programmes créés à partir de langages de programmation de haut niveau) et les traduire en langage assembleur, que l'assembleur décodera ensuite au binaire.
Une interprète prendra une ligne de code et l'exécutera immédiatement. Ceci est généralement utilisé sur des terminaux tels que le terminal Linux Bash Shell et le terminal Windows PowerShell. Idéal pour effectuer des tâches ponctuelles simples.
En revanche, un compilateur prendra plusieurs lignes de code et les compilera pour créer un programme. Des exemples de ces programmes seraient Microsoft Word, Photoshop, Google Chrome, Safari et Steam.
Avec la création de compilateurs et d'interprètes, des langages de programmation de haut niveau ont été créés.
Langages de programmation de haut niveau
Les langages de programmation de haut niveau sont n'importe quel langage après le code assembleur. Certains de ces langages que vous connaissez peut-être sont C, Python, Java et Swift. Ces langages de programmation ont rendu la programmation plus lisible et plus simple que le langage d'assemblage.
Voici une comparaison côte à côte pour illustrer à quel point il est plus difficile de programmer en assembleur qu'avec un langage de programmation de haut niveau comme Python :
Les deux codes imprimeront "Hello World".
Avec ces langages de programmation, les développeurs peuvent programmer des jeux, des sites Web, des applications et des pilotes dans un délai raisonnable.
En rapport: Python contre Java: le meilleur langage pour 2022
Les ordinateurs peuvent exécuter toutes les manières de code
Un ordinateur est un appareil qui ne peut lire que du binaire. Ces binaires sont produits par plus d'un milliard de transistors de taille microscopique emballés à l'intérieur d'un processeur. La disposition des transistors dicte l'ISA (Instruction Set Architecture) d'un processeur, qui fournit des centaines d'instructions qu'un processeur peut facilement exécuter une fois que son opcode est appelé via le code. Les développeurs mélangent et associent ces instructions de manière séquentielle, ce qui crée un programme complet tel que des moteurs de jeu, des navigateurs Web, des applications et des pilotes.
Un processeur exécute le code via une séquence connue sous le nom de cycle d'extraction, de décodage et d'exécution. Une fois qu'un morceau de code est chargé dans la RAM, le CPU récupère son contenu un par un, décode le contenu en binaire via l'assembleur, puis exécute le code.
Comme l'assembleur ne peut traduire que du code fait explicitement pour l'architecture CPU, les compilateurs et les interpréteurs ont été construits sur l'assembleur (un peu comme un adaptateur) pour fonctionner sur différents types de CPU architecture. Un interpréteur prendra une commande et l'exécutera immédiatement. En revanche, un compilateur prendra toutes vos commandes et les compilera dans un programme réutilisable.
Des langages de programmation de haut niveau tels que Python, C et Java ont été créés pour rendre la programmation plus facile, plus rapide et plus pratique. La grande majorité des programmeurs n'ont plus à coder en langage assembleur, car leurs langages de programmation de haut niveau faciles à utiliser peuvent être traduits en assembleur via un compilateur.
J'espère que vous avez maintenant une meilleure compréhension des principes fondamentaux des ordinateurs et de la façon dont ils exécutent le code.
C'est une question simple, mais à laquelle tout le monde se pose de temps en temps: comment fonctionne réellement cet ordinateur devant vous ?
Lire la suite
- La technologie expliquée
- La programmation
- Processeur d'ordinateur
- Traitement

Désireux d'apprendre comment les choses fonctionnaient, Jayric Maning a commencé à bricoler toutes sortes d'appareils électroniques et analogiques au cours de son adolescence. Il a étudié la médecine légale à l'Université de Baguio, où il s'est familiarisé avec la criminalistique informatique et la cybersécurité. Il fait actuellement beaucoup d'auto-apprentissage et de bricolage avec la technologie pour comprendre comment elles fonctionnent et comment nous pouvons les utiliser pour rendre la vie plus facile (ou au moins plus cool !).
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !
Cliquez ici pour vous abonner