Précédent   Forum des professionnels en informatique > Autres langages > Assembleur
Assembleur Forum d'entraide Assembleur. Avant de poster -> F.A.Q Assembleur Tutoriels Assembleur
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/07/2011, 05h49   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
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.
ISYMT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h32   #2
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 3 705
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 3 705
Points : 7 259
Points : 7 259
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.
Obsidian est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 03h06   #3
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
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.
ISYMT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 09h43   #4
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 3 705
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 3 705
Points : 7 259
Points : 7 259
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.

Citation:
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.

Citation:
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.
Obsidian est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 12h24   #5
Membre expérimenté
 
Avatar de edfed
 
être humain
Inscription : décembre 2007
Messages : 465
Détails du profil
Informations professionnelles :
Activité : être humain

Informations forums :
Inscription : décembre 2007
Messages : 465
Points : 582
Points : 582
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.
__________________
http://www.pending.me.uk/nmc/bla_1356091200.png
Vivement 21/12/2012
edfed est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/07/2011, 00h18   #6
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
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 ! )
ISYMT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h31.


 
 
 
 
Partenaires

Hébergement Web