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 :

Quelques questions sur le fonctionnement de la RAM et du Processeur


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Quelques questions sur le fonctionnement de la RAM et du Processeur
    Bonjour à tous,

    Je me surnomme Nanom je suis développeur en PHP/xHTML/CSS, et depuis quelques temps j'envisageais d'apprendre un nouveau langage comme le C ou le Javascript qui ont une syntaxe assez similaire.
    Il y a quelques jours je suis tomber par tout hasard sur une description de ce qu'était l'Assemblage suivi d'une introduction sur le cour de Lord NoteWorthy. À ce moment la j'ai compris que
    L'ASM était la mère de tous les autres langage. Véritable coup de foudre j'ai absolument voulu l'assimiler et donc je me suis lancer corps et âmes dans l'apprentissage des bases de ce langage.

    Après quatre jours d'apprentissage acharnés à hauteur de 12h par jour je commence à assimiler certains automatismes comme le binaire, l'héxadécimal, les conversions, etc... bref je me régale !
    Tout ce que j'ai toujours voulu savoir sur le fonctionnement de mon ordinateur se trouvait dans les bases de L'ASM. Seulement depuis hier je suis passé à un autre niveau théorique qui est
    Le fonctionnement du Processeur et de la Mémoire vive.

    Le problème c'est que parfois certaines explications sont incohérentes ou très succinct et on a parfois du mal à s'y retrouver. Comme certaines choses reste tout de même assez obscur,
    et que j'aimerais bien comprendre comment tout cela fonctionne j'aimerais dans la mesure du possible que certaines personnes s'y connaissant bien puissent me clarifier certaines points.

    Voici un schéma de ma fabrication sur les différents éléments que j'ai vu jusque là :



    Mes questions sont les suivantes :

    Est-il juste que lorsque l'on exécute un programme en ASM sur son disque dur il se charge totalement dans la mémoire vive sous forme binaire et que ces instructions binaires vont transité dans le sens des flèches sur mon schéma ?

    Est-il juste que l'ASM n'est en fait que du binaire 8bits (ASCII) retranscrit dans le but de le rendre plus lisible et plus facilement exploitable par les programmeurs ?

    Est-il juste que la Random Memory Acess (RAM) peut uniquement contenir du binaire ?

    Est-il juste qu'un ordinateur démarre automatiquement en mode Réel puis bascule en mode Sécurisé à l'amorçage du systeme d'exploitation et qu'il contient 4 niveaux de sécurité ?

    Est-il juste qu'un ordinateur moderne n'exploite plus vraiment la mémoire Réel qui est trop instable car elle ne supportait pas le multitâche, mais qu'elle n'en demeure pas moins existante ?

    Est-il juste qu'un ordinateur moderne n'exploite plus le mode virtuel autrefois utilisé pour permettre l'utilisation du DOS en multitâche, mais qu'elle n'en demeure pas moins existante ?

    Est-il juste que le cache L3 ne se trouve plus sur la carte mère mais dans le processeur lui même sur les processeurs récents ex : Au bas de cette page ?

    Est-il juste qu'un programme travaillant dans le niveau 3 de sécurité ne peut travailler dans le niveau 2, mais qu'un programme de niveau 1 peut lui travailler dans le niveau 2 et le 3 ?

    Est-il juste l'on travaille principalement dans les registres généraux EAX, EBX, ECX, EDX correspondant à 8 x 4 octets de données seulement ?

    Si c'est faux veuillez précisez pourquoi !

    J'attends beaucoup de vos réponses aussi peu nombreuses qu'elles sont, ça me permettra de commencer sur des bases solide ce qui est très important pour la suite.

    Je vous remercie de votre attention,
    Amicalement, Nanom.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Est-il juste que lorsque l'on exécute un programme en ASM sur son disque dur il se charge totalement dans la mémoire vive sous forme binaire et que ces instructions binaires vont transité dans le sens des flèches sur mon schéma ?
    Oui, le processeur ne sait travailler qu'avec de la mémoire.
    Pour les flèches, je ne sais pas.

    Est-il juste que l'ASM n'est en fait que du binaire 8bits (ASCII) retranscrit dans le but de le rendre plus lisible et plus facilement exploitable par les programmeurs ?
    Oui, le code binaire est appelé "Code Machine", le seul code que le processeur est capable de comprendre
    L'ASM est simplement la traduction en "mots" (pour nous, pauvres humains qui ne savons parler qu'avec des mots) des octets et groupes d'octets du code machine représentant les instructions du programme.

    Est-il juste que la Random Memory Acess (RAM) peut uniquement contenir du binaire ?
    Oui, tout comme le disque dur, et tout support et matériel électronique numérique.
    La représentation que nous en avons (fichiers, programmes, données, ...) ne sont que des interprétations d'un regroupement de valeurs binaires.

    Pour le reste, je ne suis pas (ou plus) assez calé pour répondre (dépassé par les dernières technos )
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Re bonjour,

    Merci beaucoup sevyc64, Tu m'as déjà enlevé 3 épines du pied en répondant à mes incertitudes. :-)

    J'espère seulement que mon topic va être vu car j'ai remarqué que la dernière activité en date sur cette section est du 31/07/10

    A bientôt,
    Nanom.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Citation Envoyé par nanom Voir le message
    J'espère seulement que mon topic va être vu car j'ai remarqué que la dernière activité en date sur cette section est du 31/07/10
    Ne t'inquiète pas, il y a toujours quelques personnes derrière ce forum. Ce sont les gens qui s'intéressent à l'assembleur qui commencent à se faire rares.

    Tu peux lire cette discussion, où quelqu'un a eu la même étincelle que toi : http://www.developpez.net/forums/d59...-code-machine/

  5. #5
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Je vais tenter de répondre à la suite des questions .


    Citation Envoyé par nanom Voir le message
    Est-il juste qu'un ordinateur démarre automatiquement en mode Réel puis bascule en mode Sécurisé à l'amorçage du systeme d'exploitation et qu'il contient 4 niveaux de sécurité ?
    Oui, le mode "natif" est le mode réel. C'est pour supporter la rétro-compatibilité et donc que les CPUs dernières générations sont censés pouvoir faire fonctionner du code d'il y a 20 ans.

    De nos jours (avec les systèmes d'exploitations modernes) la bascule s'opère du mode réel au "mode protégé" (en 32 bits) ou "long mode" (64 bits).

    Les CPUs x86 disposent en effet de 4 domaines de protection hiérarchique communément appelés "rings" (anneaux).

    Est-il juste qu'un ordinateur moderne n'exploite plus vraiment la mémoire Réel qui est trop instable car elle ne supportait pas le multitâche, mais qu'elle n'en demeure pas moins existante ?
    En fait, je ne vois pas vraiment ce que tu entends par "mémoire réelle"... C'est par opposition à la mémoire virtuelle ?

    Est-il juste qu'un ordinateur moderne n'exploite plus le mode virtuel autrefois utilisé pour permettre l'utilisation du DOS en multitâche, mais qu'elle n'en demeure pas moins existante ?
    Oui, les processeurs x86 actuels peuvent utiliser le mode virtuel nativement, ou alors exécuter les programmes 16 bits (DOS par exemple) depuis le mode protégé sous un O.S comme Windows. comme il n'est plus possible de commuer du Long mode (64 bits) au mode virtuel 8086 (16 bits) au niveau hardware, les O.S 64 bits n'offrent plus cette possibilité.

    Est-il juste que le cache L3 ne se trouve plus sur la carte mère mais dans le processeur lui même sur les processeurs récents ex : Au bas de cette page ?
    Le cache L3 est une caractéristique du processeur. À ma connaissance il n'a jamais été présent sur la carte mère.

    Est-il juste qu'un programme travaillant dans le niveau 3 de sécurité ne peut travailler dans le niveau 2, mais qu'un programme de niveau 1 peut lui travailler dans le niveau 2 et le 3 ?
    Globalement le concept est le suivant: le ring est le mode d'exécution le plus privilégié (mode kernel) et le mode 3 le moins privilégié (mode utilisateur). On commute d'un mode à un autre mais on utilise pas plusieurs mode en même temps.

    Le mode kernel étant le plus privilégié il peut accéder à tout le code et les données du mode utilisateur, l'inverse étant proscrit. Les O.S actuels n'utilisent que deux modes du x86, le 0 et le 3 (aussi bien Windows que Linux).

    De manière concrète, d'autres vérifications que la valeur courante du CPL (Current Privilege Level) sont mises en places pour vérifier la validité d'un accès ou d'une exécution de code.

    Est-il juste l'on travaille principalement dans les registres généraux EAX, EBX, ECX, EDX correspondant à 8 x 4 octets de données seulement ?
    Concrètement, les compilateurs de langages haut niveau n'utilisent plus vraiment les registres dans leurs acceptions premières (EAX: Accumulateur, ECX: Compteur, EBX: Base, etc.) sauf quand cela est nécessaire, par exemple parce qu'une instruction ne travaille qu'avec tel ou tel registre.

    Même les registres de pile (ESP, EBP) participe parfois en tant que registres purement généraux, suivant les optimisations.

    Effectivement, on compte 8 registres généraux et chacun de ces registres fait 4 octets (32 bits, subdivisibles en plus petites unités).

    J'espère avoir répondu de manière compréhensible. N'hésites pas si tu as des questions.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous,

    Ce sont les gens qui s'intéressent à l'assembleur qui commencent à se faire rares.
    C'est regrettable pour une chose aussi intéressante, je pense que l'ASM est vraiment important pour comprendre comment fonctionne la programmation en général.

    En fait, je ne vois pas vraiment ce que tu entends par "mémoire réelle"... C'est par opposition à la mémoire virtuelle ?
    Je me suis mal exprimé, je voulais plutôt parler du "Mode réel".

    Quoi qu'il en soit, ça a répondu à mes interrogations, et je vous en remercie. j'ai également fais quelques recherches de mon coté et je suis tombé sur un article plutôt intéressant ou on peut notamment y voir un schéma qui a l'air plutôt pertinent:



    Mais il me reste tout de même quelques questions en tête :

    Quel rôle jouent les caches L1, L2, et L3 dans tout ça ?

    On dit d'une Opérande que c'est un argument mais pour moi la lotion d'argument est plutôt concis... je vois un argument dans le cadre d'une fonction comme ceci :

    fonction(argument1, argument2)
    {
    return argument1 * argument2
    }
    Est-ce juste ?


    Merci de votre aide.
    Amicalement, Nanom.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Citation Envoyé par nanom Voir le message
    C'est regrettable pour une chose aussi intéressante, je pense que l'ASM est vraiment important pour comprendre comment fonctionne la programmation en général.
    Oh oui ! Je suis bien d'accord. :-)

    Si tu t'intéresses à l'assembleur et l'architecture des ordinateurs, je te suggère, si tu en as l'occasion, d'explorer d'autres architectures, notamment celles à base de 68000 et dérivés, de manière à ce que tu ne fasses pas l'amalgame entre ce qui est commun aux micro-processeurs en général et ce qui est propre à x86. Jette un œil aux 8 et 16 bits, également. Ils ont été très répandus, et sont peut-être plus accessibles dans un premier temps.

    On dit d'une Opérande que c'est un argument mais pour moi la notion d'argument est plutôt concis... je vois un argument dans le cadre d'une fonction comme ceci :
    Les opérandes sont les données d'une opération. Par exemple, dans « 5 + 8 », 5 et 8 sont les opérandes.

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/06/2015, 21h05
  2. ptite question sur le fonctionnement du WSDL
    Par Valarauko dans le forum XMLRAD
    Réponses: 4
    Dernier message: 08/02/2005, 16h07
  3. Quelques questions sur la mémoire
    Par Gruik dans le forum C
    Réponses: 6
    Dernier message: 17/11/2004, 14h38
  4. Quelques question sur Win 32 Appli
    Par lvdnono dans le forum Windows
    Réponses: 5
    Dernier message: 15/06/2004, 12h37
  5. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23

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