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 :

Explication de 3 lignes d'Assembleur


Sujet :

Assembleur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Points : 124
    Points
    124
    Par défaut Explication de 3 lignes d'Assembleur
    Bonjour,
    voila, j'aimerais bien qu'on m'explique ces 3 lignes d'assembleurs utilisées dans du code C, ou alors qu'on m'envoit vers un lien permettant de les comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // Write a byte out to the specified port.
    void outb(u16int port, u8int value)
    {
        asm volatile ("outb %1, %0" : : "dN" (port), "a" (value));
    }
     
    u8int inb(u16int port)
    {
       u8int ret;
       asm volatile("inb %1, %0" : "=a" (ret) : "dN" (port));
       return ret;
    }
     
    u16int inw(u16int port)
    {
       u16int ret;
       asm volatile ("inw %1, %0" : "=a" (ret) : "dN" (port));
       return ret;
    }

  2. #2
    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,

    IN et OUT sont des instructions permettant respectivement de lire et d'écrire sur un port (ces ports sont des ports d'E/S situés dans l'espace d'adressage d'E/S du processeur).

    en détail :

    - outb : permet d'écrire une valeur de 8 bits sur un port dont l'adresse peut s'écrire sur 16 bits (C'est la forme de OUT DX, AL)

    - inb : permet de lire une valeur de 8 bits sur un port dont l'adresse peut s'écrire sur 16 bits (forme : IN AL, DX).

    - inw : permet de lire une valeur de 16 bits sur un port dont l'adresse peut s'écrire sur 16 bits (forme : IN AX, DX).

    En mode protégé, les opérations IN/OUT sont généralement bloquées pour l'utilisateur (i.e avec IOPL [IO Privilege Level] de niveau 3). Leur utilisation provoque une erreur.

    sous Windows, c'est le cas, je ne sais pas ce qu'il en est sous Linux.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Points : 124
    Points
    124
    Par défaut
    ok merci

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    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 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Citation Envoyé par Neitsa Voir le message
    sous Windows, c'est le cas, je ne sais pas ce qu'il en est sous Linux.
    Linux utilise le même mode protégé, donc c'est le cas aussi.

    En principe, il faudrait travailler en mode noyau, mais le système propose un appel permettant aux programmes en userland d'accorder un droit d'accès direct à une plage d'I/O, au cas par cas : ioperm().

    C'est Linux-specific.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. explication d'une ligne d'erreur DEV
    Par katia_heraklion dans le forum C
    Réponses: 2
    Dernier message: 26/03/2007, 19h26
  2. Explication d'une ligne de code
    Par Deejoh dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2007, 12h31
  3. [TAPI]Explication d'une ligne de code
    Par Pmatt dans le forum C
    Réponses: 7
    Dernier message: 15/01/2007, 19h57
  4. explication sur une ligne
    Par Pitou5464 dans le forum C
    Réponses: 12
    Dernier message: 31/10/2006, 17h12
  5. [Tableaux] Explication d'une ligne de code
    Par eXiaNazaire dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2006, 13h09

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