Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Autres langages > Assembleur

Assembleur Forum d'entraide Assembleur. Avant de poster -> F.A.Q Assembleur Tutoriels Assembleur

Réponse
 
Outils de la discussion
Vieux 04/08/2008, 08h28   #1 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut Comment le processeur comprend-il le code machine ?

Depuis que je m'intéresse à l'informatique, tous les livres, cours, tutorials que j'ai pu lire ou voir n'ont toujours pas répondu à ma question . . .

On y parle toujours du matériel, de l'os, de la programmation . . . enfin de l'assembleur!

Tout arrête toujours au même endroit . . . En compilant le code, il est transformé en code que le processeur va comprendre . . .

bon . . . . . . ok . . .

Et il comprend comment lui???

Comment le processeur fait pour comprendre! Je n'arrive absolument pas à comprendre! Comment est-ce que le processeur peut calculer, comparer des nombres . . .

Je sais que ce n'est pas la section idéale pour ce message, mais je n'en voyais pas d'autre...

Merci d'avance de votre aide

Alex
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/08/2008, 12h45   #2 (permalink)
Membre éprouvé
 
Avatar de dapounet
 
Date d'inscription: juillet 2007
Localisation: Belgique
Messages: 410
Par défaut

Tu devrais trouver ton bonheur ici : http://systeme.developpez.com/cours/#architecture
__________________
:wq
dapounet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/08/2008, 00h41   #3 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut

Merci beaucoup! Je vais lire tout ça bientôt!

(merci d'avoir changé le titre! Je ferai plus attention à l'avenir!)

Alex
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 19h04   #4 (permalink)
Membre expérimenté
 
Avatar de Obsidian
 
Date d'inscription: septembre 2007
Localisation: Évry
Âge: 32
Messages: 544
Par défaut

Citation:
Envoyé par Alexandreg12 Voir le message
Merci beaucoup! Je vais lire tout ça bientôt!

(merci d'avoir changé le titre! Je ferai plus attention à l'avenir!)

Alex
Il faudrait que tu fasses un tout petit peu d'assembleur, car alors tu verrais les codes opérations associées à chacune de tes instructions, en vis-à-vis. Le véritable langage du processeur commencerait alors à apparaître à tes yeux.

En gros, la seule chose que sache faire un microprocesseur est 1) lire des données en mémoire 2) appliquer un jeu d'instruction arithmétiques ou logiques fixe et restreint sur ces données 3) écrire ces données modifiées ailleurs en mémoire. Un peu comme un palan sur un dock.

Il est donc conçu pour commencer à un endroit défini de la mémoire dès sa mise sous tension, par exemple l'adresse 00000000, et la valeur de l'octet qu'il va y lire va correspondre à une des opérations qu'il sait faire (par exemple : 0 additionne 1 soustrait 2 décale vers la gauche 3 décale vers la droite, 4 multiplie, ...). Ce sont les fameux codes-opérations.

Cette consigne lue, ton processeur va s'attacher à remplir sa mission. Pour ce faire, il peut avoir besoin de [b]données[b], qu'il va chercher ... dans la mémoire, à la suite du code-opération. Si l'octet N° 00000000 contenait MUL, l'ordre de multiplier (représenté dans mon exemple par la valeur 4), alors le CPU va aller chercher ses multiplicandes dans les octets 00000001 et 00000002. Une fois l'opération achevée, il lit la consigne suivante dans l'octet suivant, en l'occurence le n° 00000003, etc. Et ton processeur va avancer de cette manière sans s'arrêter, jusqu'à mise hors-tension.

Évidemment, ce sont les grandes lignes. Il existe des instructions comme HALT qui stoppent le microprocesseur jusqu'à arrivée d'une « interruption », il dispose de registres pour retenir les infos sur une durée arbitraire, etc.

Maintenant, quelles sont ces opérations ? Des opérations logiques de bases qui peuvent être obtenues par câblage au niveau électronique. Les plus fondamentales sont les opérations booléenes ET, OU, XOR, etc. Câblées ensemble, ces opérations permettent d'en définir d'autres, arithmétiques par exemple, telle que l'additionneur, sur le modèle du ripple carry :

http://en.wikipedia.org/wiki/Adder_(electronics)

En utilisant des XOR, tu peux inverser les bits d'un des ports d'entrées, et transformer ton additionneur en soustracteur. En faisant sortir la ligne qui contrôle les XOR, ton appareil est bi-valent : 0 ADD 1 SUB.

De proche en proche, tu obtiens une « unité arithmétique et logique ». Si tu colles autour des registres pour les opérandes et le code opération, un séquenceur pour aller lire le tout depuis la mémoire, l'un après l'autre, et une horloge pour faire marcher le tout, tu as fabriqué un CPU.

Ça veut dire également que le microprocesseur ne communique avec son entourage qu'en lisant en en écrivant dans la mémoire (les interruptions mises à part). Donc, en théorie, tu pourrais faire marcher un ordinateur entier rien qu'avec des pointeurs ! Ou rien qu'en utilisant PEEK et POKE, à l'é-poke du BASIC des années 80. Ce qui permettait d'épater ses amis avec des tours de magie assez amusants.

Sur un processeur de PC, il y a des systèmes supplémentaires, par exemple deux bus distincts, un pour la RAM et un pour les périphériques (les fameux inb, outb) et plein d'autres choses très excitantes, mais le principe fondamental reste le même (celui de la machine de Turing).

Dernière modification par Obsidian ; 05/09/2008 à 16h42 Motif: URL cassée sur le lien Wikipédia
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 19h19   #5 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut

wow! Merci de cette formidable réponse!!

tout commence à être plus clair maintenant!

Merci beaucoup!

Alex
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 20h35   #6 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: août 2006
Messages: 2 199
Par défaut

Jao,

[TROLL]

Le processeur ne comprend pas le code machine, il l'exécute.

[/TROLL]
__________________
Heureux ceux qui n'attendent rien, ils ne seront pas déçus.
droggo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 21h12   #7 (permalink)
Membre éprouvé
 
Avatar de dapounet
 
Date d'inscription: juillet 2007
Localisation: Belgique
Messages: 410
Par défaut

Citation:
Envoyé par Obsidian Voir le message
Il faudrait que tu fasses un tout petit peu d'assembleur, car alors tu verrais les codes opérations associées à chacune de tes instructions, en vis-à-vis. Le véritable langage du processeur commencerait alors à apparaître à tes yeux.
Sur PC les processeurs passent depuis longtemps par un jeu d'instructions intermédiaire et n'exécutent plus "nativement" le code x86.

Citation:
Envoyé par Obsidian Voir le message
En utilisant des XOR, tu peux inverser les bits d'un des ports d'entrées, et transformer ton additionneur en soustracteur. En faisant sortir la ligne qui contrôle les XOR, ton appareil est bi-valent : 0 ADD 1 SUB.
En complément à deux il faudrait encore ajouter un après l'inversion non ?

Citation:
Envoyé par Obsidian Voir le message
Sur un processeur de PC, il y a des systèmes supplémentaires, par exemple deux bus distinct, un pour la RAM et un pour les périphériques (les fameux inb, outb) et plein d'autres choses très excitantes, mais le principe fondamentale reste le même (celui de la machine de Turing).
La mémoire et les I/O ont un espace d'adressage différent mais ils utilisent le même bus d'adresses.
__________________
:wq
dapounet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 00h08   #8 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut

ouf!!! C'est tellement complexe!

Vous comprenez tout ça vous??

C'est possible de tout comprendre??
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 02h12   #9 (permalink)
Membre expérimenté
 
Avatar de Obsidian
 
Date d'inscription: septembre 2007
Localisation: Évry
Âge: 32
Messages: 544
Par défaut

Citation:
Envoyé par dapounet Voir le message
Sur PC les processeurs passent depuis longtemps par un jeu d'instructions intermédiaire et n'exécutent plus "nativement" le code x86.
- Chaque chose en son temps ;
- Il n'y a pas que les x86. Les PICs, par exemple, sont guère plus performants que les 8 bits de l'époque, et sont pourtant très à la mode.

Citation:
En complément à deux il faudrait encore ajouter un après l'inversion non ?
Si, mais comme tes additionneurs en cascade sont pourvus d'une retenue d'entrée, il suffit de la relier à cette même ligne.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 02h18   #10 (permalink)
Membre expérimenté
 
Avatar de Obsidian
 
Date d'inscription: septembre 2007
Localisation: Évry
Âge: 32
Messages: 544
Par défaut

Citation:
Envoyé par Alexandreg12 Voir le message
ouf!!! C'est tellement complexe!

Vous comprenez tout ça vous??

C'est possible de tout comprendre??
Non, c'est pas très dur, c'est même très cohérent puisque c'est inventé par l'homme dans le dernier demi-siècle. Seulement on ne peut pas résumer la totalité de la génèse des micro-processeurs en un seul post.

Mais avec une heure d'explication et une feuille de papier, tout deviendrait limpide.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 03h34   #11 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut

wow! une heure? malheureusement je ne connais personne capable de m'expliquer! . . .

Comme j'ai dit, je ne souhaite pas apprendre en détails l'architecture d'un processeur moderne! Mais si je comprend les bases, je crois que le reste n'est que logique (plus gros (et plus petit en même temps , plus rapide . . .)

Dernière modification par Alexandreg12 ; 14/08/2008 à 03h47
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/08/2008, 02h06   #12 (permalink)
Membre expérimenté
 
Avatar de Obsidian
 
Date d'inscription: septembre 2007
Localisation: Évry
Âge: 32
Messages: 544
Par défaut

Citation:
Envoyé par Alexandreg12 Voir le message
wow! une heure? malheureusement je ne connais personne capable de m'expliquer! . . .
Je tâcherai peut-être d'écrire un papier un jour si vraiment je n'en trouve pas de bon avant, ce qui serait quand même très étonnant ...

Citation:
Comme j'ai dit, je ne souhaite pas apprendre en détails l'architecture d'un processeur moderne! Mais si je comprend les bases, je crois que le reste n'est que logique (plus gros (et plus petit en même temps , plus rapide . . .)
Intuition correcte :-) Le problème, c'est que ça vire au troll assez vite : il y a des gens qui vont te dire que c'est dans les 8 bits que l'on fait les meilleures soupes, d'autres te diront qu'au grand jamais il ne faut regarder vers le passé ! Une chose est sûre, plus tu verras de machines différentes et mieux ce sera.

Moi, j'étais assez fan du 6809 en son temps. Ni trop compliqué ni trop simple, un jeu d'instruction bien pensé et des mnémoniques bien choisis. L'éducation nationale était d'accord pendant un temps, également ... Tu peux aussi regarder le Z80 qui a été extrêmement répandu, sachant que ces vénérables bébêtes ne sont plus en service depuis longtemps.

Essaie la famille des 68000, aussi. Dans la directe lignée des Motorola. L'adage disait que les Intel sont conçus par des électroniciens, les Motorola par des programmeurs. Ça résume assez bien la situation.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/08/2008, 17h01   #13 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut

Ah ah!! J'ai tellement hâte de comprendre

J'ai l'impression que ça va débloquer dans ma tête et que je vais me dire: "Ah!! C'est pas si complexe finalement!"
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 09h58   #14 (permalink)
Membre habitué
 
Date d'inscription: mai 2008
Localisation: Paris
Messages: 158
Par défaut

Pour compléter le tout, un ouvrage de référence qui rentre dans le détail tout en restant très simple :
Architecture de l'ordinateur - A. Tannenbaum
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 17h34   #15 (permalink)
Membre régulier
 
Date d'inscription: août 2008
Localisation: Canada
Messages: 125
Par défaut

Est-ce que vous avez des bonnes suggestions de lectures en-ligne pour comprendre tout ça??

Merci beaucoup!
Alexandreg12 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ASSEMBLEURFAQ ASSEMBLEURLIVRES ASSEMBLEUR

Réponse

Précédent   Forum des développeurs > Autres langages > Assembleur



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide