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 :

Recherche d'infos pour créer un compilateur x86


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut Recherche d'infos pour créer un compilateur x86
    Bonjour à tous,

    Je me suis mis en tête de créer un compilateur assembleur pour mon Forth.
    Actuellement, mon Forth utilise un vieux compilo 8086 que j'ai bidouillé pour accepter du code 32 bits,
    mais il est très incomplet, et utilise la syntaxe typique du Forth
    par exemple :
    s'écrit en assembleur Forth :
    Mon but est donc de pouvoir écrire un mot Forth codé en assembleur de la même manière
    que je l'écrirais avec un compilo classique.

    Je vais devoir réinventer la roue, et la doc que j'ai à ma disposition est soit bien maigre,
    soit bourrée d'erreurs, soit les deux ( Livre : processeur et coprocesseur de Robert Hummel,
    plus quelques docs pêchées sur le net)

    Donc si vous aviez des liens sympa sur le codage des instructions x86, ça serait sympa

    merci !

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 351
    Points : 42 822
    Points
    42 822
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre éclairé

    Homme Profil pro
    Rédacteur technique (retraité)
    Inscrit en
    Octobre 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique (retraité)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 168
    Points : 807
    Points
    807
    Par défaut
    Tu peux aussi regarder ça :
    http://www.intel.com/content/dam/www...ual-325383.pdf

    Dont je te recommande le chapitre 2 (page 35) et l'annexe D (page 2053) qui disent tout, tout, tout sur l'encodage des instructions du x86 au x64. Volumineux et en anglais mais complet et fiable, c'est une doc de référence Intel.

  4. #4
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    @chrstophe : merci ! je n'avais pas pensé à regarder dans le site et pas l'hombre d'une trace de ces liens dans un moteur de recherche

    @DomDA91 : merci, j'avais chargé le fichier, mais avec plus de 2000 pages, j'avais zappé aussi sec

    edit:
    Bon et bien rien de nouveau dans les docs de Neitsa, bien dommage qu'il se soit arrêté aux préfixes sa
    doc est la plus claire que j'ai pu lire (j'ai du me coltiner 4 docs différentes pour arriver au même résultat )

    Il ne me reste plus qu'à taper dans la doc Intel

  5. #5
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    excuse moi mais j'ai pas bien comprit ce que tu cherche a faire, compiler un code source Forth en code source assembleur? ou l'inverse? compiler un code source forth vers un binaire? etc...

    et pour ce qui est de la doc sur les encodage de l'assembleur je pense aussi que le mieux est la doc intel

  6. #6
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Bonjour Bifur,

    non, dans mon Forth (comme dans beaucoup d'autres) j'ai la possibilité de créer des mots
    en assembleur (pour les mots ayant besoin de rapidité d'exécution)
    Et comme cet assembleur a été pensé "Forth" il est contraignant de par sa syntaxe, et par l’inexistence de labels.

    Il y a bien des structures BEGIN-UNTIL, IF-ELSE-THEN, mais ça ne permet pas d'avoir plusieurs jumps à un même label
    comme en assembleur classique, ce qui oblige pour avoir de même résultat à bidouiller dans le code, et c'est moche

    par exemple, un mot qui renvoie la racine carrée d'un nombre entier 32 bits présent sur la pile écrit en "Assembleur Forth":
    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
    20
    CODE SQR ( n --- sqr(n) )
      eax pop
      2. D# eax cmp
      0>= IF
        eax ebx mov
        eax edi mov
        20 DO
          1 #*ebx shr
          cdq
          ebx idiv
          eax ebx add
          edi eax mov
         LOOP
        ebx inc
        1 #*ebx shr
        ebx eax mov
       THEN
      eax push
      next
     END-CODE
    la ligne "20 DO" ne le précise pas, mais c'est le registre CX qui est utilisé.
    Je compte donc me faire un assembleur plus "standard" et définir mon nouveau mot comme ça :

    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
    20
    21
    22
    CODE SQR ( n --- sqr(n) )
      pop eax
      cmp eax,2
      js fin_sqr
        mov ebx,eax
        mov edi,eax
        mov cx,20
        label boucle_sqr
          shr ebx,1
          cdq
          idiv ebx
          add ebx,eax
          mov eax,edi
          dec cx
         jnz boucle_sqr
        inc ebx
        shr ebx,1
        mov eax,ebx
       label fin_sqr
      push eax
      next
     END-CODE
    Voilà voilà

Discussions similaires

  1. Recherche d'infos pour la création d'un site e-commerce
    Par hammoutiGI dans le forum E-Commerce
    Réponses: 4
    Dernier message: 06/03/2008, 18h12
  2. Recherche un script pour créer des pétitions
    Par chakan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/09/2007, 16h43
  3. Info pour créer un Quizz mp3 sur DVD
    Par G_angel dans le forum C#
    Réponses: 2
    Dernier message: 12/07/2007, 11h17
  4. Recherche un programme pour créer des installation
    Par crunch-me dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 22/04/2006, 20h25
  5. Réponses: 2
    Dernier message: 20/01/2006, 18h08

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