Informatique Quel lien entre binaire et commande

Clen

pessimiste repenti
22 Février 2016
1 507
286
167
21
Lille
Une question me titille depuis longtemps : je sais que les processeurs fonctionnent et calculent en binaire (il y a des électrons ou il n'y en a pas).Je sais également que l'on utilise des fonctions pour programmer (par exemple, If...Then... et Min(List N) ).
Comment le binaire est-il transformé en commandes et inversement ?
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 815
156
3 000
347
26
Alsace
www.minecraftforgefrance.fr
Salut,
Le processeur est incapable de comprendre une fonction.
Le processeur exécute juste des instructions.
Une instruction lors qu'on programme en assembleur est juste un mot (ADD, LOAD, MUL, DIV, JMP, CMP, etc ...), donc une fois de plus le processeur ne peut rien faire avec ça. Il faut passer par une étape qui transforme tous ces mots en variable instruction pour le processeur, donc en une simple suite de valeur binaire (10101110 par exemple serait une instruction sur 8 bits).
Les 1 correspondent donc à l'état haut (il y a du courant) et les 0 à l'état bas (pas de courant).

Alors si le processeur ne peut pas comprendre une fonction, comme ça se passe ?
Il y a une étape nommé compilation. Cette étape transforme les fonctions en instruction pour le processeur.

Par exemple ce code :
Code:
x = 5
y = 2
if(x == y)
{
   fait ça
}
sinon
{
   fait ça
}
Va être transformer en :
Code:
charge dans le registre A la valeur 5 (instruction MOV AL, 5)
charge dans le registre B la valeur y (instruction MOV BL, 2)
compare la valeur AL et celle de BL (CMP AL, BL)
saute à l'emplacement mémoire condition1 si les valeurs sont identiques (JE condition1)
saute à l'emplacement mémoire condition2 si les valeurs sont différentes (JNE condition2)
et aux différents emplacements mémoires il y a les instructions que l'on souhaite faire en fonction de si la condition est vrai ou pas.
 
  • J'aime
Reactions: CPUser_ et Cryofly

Le minaw

Désobfuscateur à propergol
25 Juillet 2015
881
254
197
In a material world
github.com
Réponde à cette question est très délicat, puisque c'est vraiment répondre à la pure question de l'informatique : comment faire interagir la machine avec son contexte (en gros, comment la programmer).

Robin en a fourni une très pragmatique et synthétique explication, mais ce n'est qu'une seule pièce d'un énorme puzzle au sein de l'architecture matérielle et logicielle.

Les processeurs sont au bas niveau des éléments de logique (supposément) combinatoire très simples (un peu comme les portes logiques de minecraft). C'est à partir de transistors, des sortes d'interrupteurs actionnés par de l'électricité, que la magie opère.

Des milliards de blocs élémentaires combinatoires sont interconnectés, et forment des combinaisons logiques séquentielles. Des unités spécialisées naissent de cette complexité : calcul (ALU, FPU...), mémoires (registres, accumulateurs, compteur ordinal).

Regarder le fonctionnement de vieux processeurs ou de vieux ordinateurs est assez sympathique pour se renseigner : tout reste relativement simple, il n'y a pas 14877 couches de vernis d'abstraction matérielle dessus. L'ordinateur de vol des missions Apollo, l'AGC, est pas mal du tout dans la série : bien documenté et pas très très compliqué à saisir.

(D'ailleurs j'ai encore la doc de l'intel 4004 huehuehue)

À noter que plus le processeur devient rapide, plus on peut monter en abstraction matérielle (et on ne s'en prive pas).

Outre les languages compilés comme le C (ce dont robin parle plus haut), on peut ajourd'hui trouver des langages indépendants de la machine et interprétés (python, ruby, et toute la série), et même des langages basés sur des machines virtuelles (java).

Il faut voir ça comme un millefeuille de couches avec une traduction d'une couche à l'autre. Plus on est haut en abstraction, plus c'est "simple" et "proche de la langue humaine", plus c'est indépendant du matériel, plus c'est lent. Plus on est bas en abstraction, plus on dépend de la machine, plus c'est fondamental, plus c'est rapide.

Ce serait extrêmement long de tout expliquer en détail, mais la documentation ne manque pas à ce sujet sur le net.
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 815
156
3 000
347
26
Alsace
www.minecraftforgefrance.fr
Il faut voir ça comme un millefeuille de couches avec une traduction d'une couche à l'autre. Plus on est haut en abstraction, plus c'est "simple" et "proche de la langue humaine", plus c'est indépendant du matériel, plus c'est lent. Plus on est bas en abstraction, plus on dépend de la machine, plus c'est fondamental, plus c'est rapide.
Un terme plus complet qui permet de se passer des guillemets : plus c'est simple pour le programmeur.
Et plus c'est complexe en terme d'implémentation.

Sinon ton message complète bien le mien, je l'approuve entièrement.
C'est vrai que la question est très complexe, j'ai eu dû mal à rédiger ma réponse.

Il faudrait faire un cours entier pour apporter une réponse complète à la question ^^
 

Clen

pessimiste repenti
22 Février 2016
1 507
286
167
21
Lille
Si j'ai bien compris, en gros, une commande est simplifiée en plusieurs étapes pour être admissible par des circuits électroniques.
 

Neph

Cyberchenapan
15 Mai 2016
386
168
155
autre part
crypt.lol
Tu aurais un lien stp ? Je trouve pas de bon cours...
Il faudrait commencer par préciser ce que tu cherches à faire. Un cours sur ? Un assembleur, le C ? Un processeur précis ?

Quoiqu'il en soit, je ne recommande pas de commencer par ici à quelqu'un qui commence à s'intéresser à l'informatique, ça ne mène souvent nul part (je dis bien "souvent", pas "toujours"). Et je précise ça parce-que si tu savais réellement ce que tu recherches, tu aurais sans doute trouvé.
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 815
156
3 000
347
26
Alsace
www.minecraftforgefrance.fr
Vaut mieux commencer l'informatique par du haut niveau en effet.

Dans le cas où quelqu'un a vraiment envie de découvrir l'informatique en commençant par le bas niveau, alors le mieux serait d'apprendre avec des vieilles machines. Remonter à une époque où le fonctionnement était simple.

Car aujourd'hui c'est bien trop complexe pour commencer un apprentissage sur ça.
 
  • J'aime
Reactions: Neph et Clen