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 :

Comment créer mon propre assembleur ?


Sujet :

Assembleur

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Comment créer mon propre assembleur ?
    Bonjour. Je cherche à créer mon propre langage assembleur, et par conséquent, un programme assembleur.

    Seulement voilà : même si je sais que chaque instruction assembleur correspond à un nombre binaire, je ne sais pas quelles sont ces correspondances. De plus, il me semble que certaines instructions ont besoin d'un léger ré-agencement avant d'être traduites en binaire.

    Et donc, si vous pouviez m'indiquer des cours en ligne, ou bien des livres qui expliquent tout ça (même en anglais), ça m'aiderait beaucoup.

    Merci d'avance.

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

    Il y a deux sections « Cours » et « Livres », au milieu du bandeau de tête de page au dessus de cette discussion.

    http://asm.developpez.com/cours/
    http://asm.developpez.com/livres/

    Ensuite, il faut chercher la table des instructions de ton microprocesseur. Par exemple, « x86 instruction set » dans ton moteur de recherche préféré te donnera de bons résultats. À noter que commencer par le x86 n'est pas forcément une bonne idée : il est très sophistiqué.

    Pour le reste, chaque micro-processeur a ses spécificités mais, dans les grandes lignes, tu auras d'un côté la liste des opérations proprement dites et, de l'autre, les modes d'adressage que ton micro-processeur peut utiliser pour aller chercher une donnée ou la déposer quelque part. Certaines combinaisons sont impossibles mais pour toutes les autres, il existe un code opération spécifique. Celui-ci t'est en principe donné dans les spécifications de ton CPU que tu trouveras facilement en ligne.

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Par exemple, « x86 instruction set » dans ton moteur de recherche préféré te donnera de bons résultats.
    C'est sûr qu'avec les bons mots-clefs, on trouve plus de résultats… Ça m'a d'ailleurs permis de savoir que les équivalents binaires des instructions sont des opcodes. Et enfin, de trouvé un tableau de ces opcodes sur un site en anglais : http://ref.x86asm.net/coder.html

    Citation Envoyé par Obsidian Voir le message
    À noter que commencer par le x86 n'est pas forcément une bonne idée : il est très sophistiqué.
    Dans ce cas, pour lequel devrais-je commencer à compiler mon langage ?

    Sur ce, je vais lire le tutoriel "Décodage des instructions x86" de votre site. Et je vais aussi chercher la documentation de mon AMD Athlon 64 X2, même si le site d'AMD m'a l'air un peu fouillis. En tout cas, merci pour votre aide.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    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 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Certaines combinaisons sont impossibles mais pour toutes les autres, il existe un code opération spécifique.
    Citation Envoyé par ISYMT Voir le message
    Ça m'a d'ailleurs permis de savoir que les équivalents binaires des instructions sont des opcodes.
    opcode = « Operation Code » = « code opération » en français. « Opcode » est extrêmement répandu, mais « code-op » se dit également beaucoup en français.

    Dans ce cas, pour lequel devrais-je commencer à compiler mon langage ?
    À brûle-pourpoint, je dirais : « par le 8-bits de ton choix ». Un Z80 ou un 6809, par exemple.

    Sur ce, je vais lire le tutoriel "Décodage des instructions x86" de votre site. Et je vais aussi chercher la documentation de mon AMD Athlon 64 X2, même si le site d'AMD m'a l'air un peu fouillis. En tout cas, merci pour votre aide.
    À ton service.

  5. #5
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    soyons clairs.

    tu veux creer ton propre compilateur, et ce en partant de vraiment 0.

    alors pour commencer, il te faut une base très solide sur les opcodes.

    pour ça, il te faut plein de liens vers des sites anglais que je vais te donner tout de suite.

    pour commencer, la liste des opcodes est là:
    http://ref.x86asm.net/coder32.html

    une notice explicative à propos du foncitonnement interne du compilo fasm est là:
    http://flatassembler.net/docs.php?article=ufasm
    une autre notice sur les choix techniques est ici:
    http://flatassembler.net/docs.php?article=design

    une liste des divers compilos asm disponibles (et fonctionnels) pour X86 est là:
    http://wiki.osdev.org/Category:Assemblers

    je te conseille de partir sur une syntaxe légère, exit les offset ptr #$43554, c'est trop la misère de devoir toujours tapper ces mots clés inutiles.

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par edfed Voir le message
    je te conseille de partir sur une syntaxe légère, exit les offset ptr #$43554, c'est trop la misère de devoir toujours tapper ces mots clés inutiles.
    Vous parlez de mettre des * devant une variable pour indiquer qu'on veut son adresse et non sa valeur, comme en C ? Mais dans ce cas, c'est le compilateur qui devra se charger de "pointer", ce qui demandera plus de travail. Alors pour la première version fonctionnelle de mon assembleur, je préfère écrire des "ptr #$43554", ça me paraît plus simple.

    Citation Envoyé par edfed Voir le message
    soyons clairs.

    tu veux creer ton propre compilateur, et ce en partant de vraiment 0.
    Tout juste ! Et je suis conscient que c'est du boulot. Mais sachant que le seul obstacle qui puisse me ralentir, c'est l'ignorance, il ne me reste qu'à apprendre. Et avec les liens qu'Obsidian et vous m'avez fourni, je peut déjà compiler (manuellement) un hello world, ce qui veut dire que je peut commencer à coder mon compilateur.


    Grand Merci à vous deux, et Bonnes Vacances ! (Et si vous êtes sur la route du retour : Bons Bouchons ! )

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

Discussions similaires

  1. [Plugin] Comment créer mon propre plugin sous NetBeans ?
    Par lankoande dans le forum NetBeans
    Réponses: 2
    Dernier message: 04/07/2015, 03h37
  2. [VB.NET] Créer mon propre programme d'installation
    Par Aspic dans le forum Visual Studio
    Réponses: 2
    Dernier message: 13/11/2006, 14h32
  3. [C#] Comment passer mon propre objet à la méthode Web ?
    Par mimibobo dans le forum Services Web
    Réponses: 6
    Dernier message: 05/10/2006, 10h08
  4. Comment créer son propre logiciel de gestion ?
    Par Sayanne dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 11/04/2006, 18h03
  5. Réponses: 4
    Dernier message: 13/08/2005, 10h20

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