IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Comment le processeur comprend-il le code machine ?


Sujet :

Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité1
    Invité(e)
    Par défaut Comment le processeur comprend-il le code machine ?
    Comment le processeur comprend-il le code machine ?
    Et comment fait-il pour l'exécuter ?

    Depuis que je m'intéresse à l'informatique, tous les livres, cours, tutoriels 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-il 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
    Dernière modification par Alcatîz ; 15/02/2013 à 16h09.

  2. #2
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Tu devrais trouver ton bonheur ici : http://systeme.developpez.com/cours/#architecture

  3. #3
    Invité1
    Invité(e)
    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

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 573
    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 données, 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).

  5. #5
    Invité1
    Invité(e)
    Par défaut
    wow! Merci de cette formidable réponse!!

    tout commence à être plus clair maintenant!

    Merci beaucoup!

    Alex

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 981
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 981
    Par défaut
    Jao,

    [TROLL]

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

    [/TROLL]

  7. #7
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    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.

  8. #8
    Invité1
    Invité(e)
    Par défaut
    ouf!!! C'est tellement complexe!

    Vous comprenez tout ça vous??

    C'est possible de tout comprendre??

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 573
    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.

    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.

Discussions similaires

  1. Comment connaitre les disques dur d'une machine dans un code ?
    Par GeekettePower dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2006, 00h43
  2. comment lire apartir d'un lecteur code barre
    Par saim mohamed dans le forum Langage
    Réponses: 4
    Dernier message: 12/09/2005, 10h57
  3. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17
  4. [ImageMagick] Comment générer une image d'un code à entrer ?
    Par MiJack dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 16/01/2005, 21h29
  5. Code machine
    Par Willand dans le forum Assembleur
    Réponses: 2
    Dernier message: 20/01/2003, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo