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 :

Interpreteur bytecode en NASM


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Points : 4
    Points
    4
    Par défaut Interpreteur bytecode en NASM
    Salut,
    je veux créer un langage de script interprété par un code nasm, mais voilà, je ne sais pas comment interpreté les commandes, imaginons que je prenne un bytecode, ça doit donner ça (00 = cli):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        cmp addr_cmd, 0x00
        je func00
        func00:
           cli
    ???

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    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 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Bonjour,

    Tu vas trop vite.

    1. Essaie de ne poser qu'une question à la fois et de la suivre. Tu as ouvert cinq fils différents à la suite ;
    2. Ce que tu viens d'écrire n'a aucun sens. Il est impossible de comprendre ce que tu cherches à faire.


    Sais-tu ce qu'est le bytecode, pour commencer ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Points : 4
    Points
    4
    Par défaut

    Un bytecode, pour moi, c' est un code proche du machine, qui sert à une machine virtuelle pour interpréter un code plus petit (ps clair je sais) :
    exemple:
    il vaudrait mieux interpréter quelque chose comme, 00 plutôt que par exemple, add (question de rapidité).


  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    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 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Donc, tu veux écrire un désassembleur.

    Si tu utilises déjà NASM, celui-ci est livré avec « ndisasm » pour le faire. GNU objdump en est également capable.

    Si tu as envie d'en écrire un toi-même « pour le fun », tu peux mais ça risque d'être très long sur x86. Essaie plutôt de faire la même chose sur de petits micro-processeurs comme le Z80. Au moins tu as une chance d'en voir la fin.

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 378
    Points
    20 378
    Par défaut
    je crois plutôt que tu veux créer un assembleur..
    le rôle d'un assembleur c'est le même qu'un compilateur sauf que c'est du code machine à la place avec des instructions séquentielles..
    si tu veux te lancer dans un tel projet alors NASM ne sera d'aucune utilité puisque l'intérêt de NASM c'est d'interpréter du code assembleur x86 un code source texte constitué de mnémoniques par exemple add eax,20 et générer du code binaire que l'on peut regrouper sous forme hexadécimale/des suites d'octets.
    Mais au final on ne comprend pas ce que tu veux faire précisément


    Citation Envoyé par AND66 Voir le message

    Un bytecode, pour moi, c' est un code proche du machine, qui sert à une machine virtuelle pour interpréter un code plus petit (ps clair je sais) :
    exemple:
    il vaudrait mieux interpréter quelque chose comme, 00 plutôt que par exemple, add (question de rapidité).

    oui mais ce qui est interprétable par la machine ce sont des instructions sous forme hexadécimale générées par NASM ( ou autres comme TASM).
    Pour cela il faut prendre la doc Intel avec tous les codes opérandes.


    Maintenant si tu veux créer un assembleur en pseudo-code alors NASM n'a rien à voir ; c'est à toi de décider de la grammaire et des specs des instructions
    PAr exemple tu peux avoir une instruction charge_registre,10 et au final une fois généré ça donnera des octets de la forme 10h,0ah avec 10 comme code machine=instruction charge_registre.

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    Mat.M à raison, c' est bien un assembleur que je veux créer, mais donc, pour un interpreteur sommaire, la syntaxe du début de la discussion, est elle correcte ou non ?

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 378
    Points
    20 378
    Par défaut
    salut oui la syntaxe semble correcte mais est-il possible de détailler pas-à-pas ce que tu veux faire..?

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par AND66 Voir le message
    Mat.M à raison, c' est bien un assembleur que je veux créer, mais donc, pour un interpréteur sommaire, la syntaxe du début de la discussion, est elle correcte ou non ?
    Oui elle est correcte , mais il n'y a pas de syntaxe 'correct' en assembleur , par exemple certain assembleur définit les nombres hexadécimale avec le caractère '$' , d'autre avec '0x' ou même en mettant 'H' a la fin.
    En peu aussi parlé de la syntaxe intel et AT&T qui est très différente.

    Après je que je ne comprend pas , tu veux faire un interpréteur ? pourquoi pas , mais tu peux générer directement les opcodes (et laisser les machines virtuelle interprété ton code).
    Mais comme la dis Obsidian , ça serait plus interessant de faire un langage interprété d'un assembleur plus petit(certain possède 255 opcode par exemple) , en un mois c'est bouclé =P , pour le x86 en une vie t'aurais pas fini.

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Points : 4
    Points
    4
    Par défaut
    OK, alors si le code en haut est correcte, je me lance !
    Ciaio !

  10. #10
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 378
    Points
    20 378
    Par défaut
    aahhh ça y est je crois avoir pigé ce que tu veux faire...
    ça a été dur mais je crois comprendre
    tu veux prendre un code source assembleur x86, l'interpréter et le reconvertir en pseudo-code de ton choix
    Bref faire une sorte d'émulateur non ?

Discussions similaires

  1. [NASM] Ligne de commande
    Par sirozz dans le forum Assembleur
    Réponses: 1
    Dernier message: 23/08/2004, 19h31
  2. [Linux] [NASM] Entrée de chaines
    Par vi4ever dans le forum Assembleur
    Réponses: 4
    Dernier message: 27/07/2004, 21h28
  3. [NASM] Redirection de l'interruption 09h
    Par sirozz dans le forum Assembleur
    Réponses: 2
    Dernier message: 16/07/2004, 17h32
  4. [langage] Chemin de l'interpréteur
    Par Smaugg dans le forum Langage
    Réponses: 5
    Dernier message: 05/05/2004, 15h27
  5. interpreteur
    Par snot dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 14/01/2004, 22h48

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