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

x86 32-bits / 64-bits Assembleur Discussion :

Les interruptions sous Windows et Linux


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Les interruptions sous Windows et Linux
    Depuis le temps que je programme en assembleur, ma seule plateforme a toujours été Windows ( je fais de la programmation 16 bit pour MS DOS) et je n'avais donc jamais eu accès à un autre système d'exploitation.

    Depuis que j'ai fait un tour sous linux, je me pose un tas de questions sur les interruptions : voila ce que je crois avoir compris :

    il existe deux types d'interuption sous windows : des interruptions logicielles qui sont spécifiques à MS DOS, qui seraient en fait l'équivalent des appels système de Linux. Il existe aussi des interruptions matérielles (BIOS) que l'on appelle aussi à l'aide d'un Int : mais ces interruptions existent -elles aussi sous Linux ? elles font aussi parti des appels systèmes sous Linux?

    De plus, je croyais que pour une même architecture, (x86 par exemple), l'assembleur était toujours identique, maisi il semblerait que non. ALors, comment fait-on pour employer sous Linux les interruptions (ou appel système?), j'ai eu vent d'un 0x80, mais je ne comprend pas son fonctionnement.

    Comme vous pouvez le voir, je me pose un nombre incalculable de questions sur les interruptions sous LInux et Windows.

    Si quelqu'un pouvait m'apporter des précisions, ou me fournir une URL, ce serait vraimemt sympa.

    Merci
    "Je pense, donc je suis"

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    D'après ce que je viens d'apprendre, sous Linux, il serait possible de faire
    car l'interruption 10 est une interruption du BIOS mais un

    serait impossible car il s'agit d'une interruption liées à MS DOS et il faudrait remplacer ça sous LInux par un appel système.

    C'est juste ou je m'embrouille tout seul ?

    Merci
    "Je pense, donc je suis"

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Il faut comprendre le fonctionement des interruptions.

    En quelque sorte

    est equivalent à

    sauf que int sauvegarde aussi les flags alors qu'un call far ne le fait pas. Cela est valable ne mode réel, donc la plupart du temps sous dos. Mais Windows et Linux sont en mode protégés, et la table des interruptions ne se trouve pas à l'adresse 00:00, mais un emplacement definit par l'OS. Et toutes les interruptions sont redefinies par l'os. Donc, on ne retrouve aucune des interruptions du bios ou du dos, sauf si l'os les a integré dans sa nouvelle table d'interruption. Quoiqu'il en soit l'os doit redefinir TOUTES les interruptions... En cela l'asm linux est different de l'asm Windows

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci beacoup pour ton aide.

    J'ai donc commencé à me renseigner sur l'assembleur Linux et je suis tombé sur quelque chose d'étrange : je connaissais la syntaxe Intel et je vois à présent une syntaxe nommée :

    AT&T syntax

    Cette syntaxe est-elle une simple variation de la syntaxe intel ou est-ce pour une autre architecture que l'architecture x86 ?

    Merci
    "Je pense, donc je suis"

  5. #5
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 139
    Points : 168
    Points
    168
    Par défaut
    En effet la syntaxe est différente (difference minime mais genante) mais le code produit reste le meme
    l'architecture reste la meme (x86)

    ciao

  6. #6
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 139
    Points : 168
    Points
    168
    Par défaut
    J'ai oublié que tu parlais d'interruption plus haut
    il est vrai qu'il vaut mieux les oublié sous linux (mode protégé oblige)
    toutefois il en reste une importante, c la 80h : elle correspond a un appelle du noyeaux linux (tu peux afficher une chaine comme la 9 de l'int21h du dos) mais je connais pas son utilisation exacte ni son pouvoir !

    bonne chance chez notre ami le pinguoin et donne nous des nouvelles !

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci , je vais essayer de récupérer Debian pour l'installer au plus vite
    "Je pense, donc je suis"

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    Mise en garde: en mode protégé (linux au moins, sous windows c'est émulé en mode VM86), oublies les int. BIOS dans des segments code 32 bits. Il est meme pas certain que cela fonctionne avec des segments code 16 bits. De + la plupart des fonctions BIOS ont leur équivalent avec des appels système (int 80h ...)

    La syntaxe AT&T est la syntaxe utilisée dans gcc pour l'assembleur inline.
    Rien ne t'empeche de lier du code asm produit par un autre compilos: nasm par exemple.

    L'intéret de la syntaxe AT&T est de pouvoir etre portée facilement de plateforme en plateforme.

    golem
    +++

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/11/2006, 00h33
  2. espace dans les glob sous Windows
    Par SYL666 dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2006, 12h49
  3. c'est quoi les Services sous Windows?
    Par kammour dans le forum Windows
    Réponses: 3
    Dernier message: 15/03/2006, 21h31
  4. Peut-on faire appel aux interruptions sous Windows ?
    Par lorenfar dans le forum Assembleur
    Réponses: 10
    Dernier message: 09/05/2005, 18h42
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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