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 :

Petit challenge : coder sans compilateur ?


Sujet :

Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 52
    Points : 41
    Points
    41
    Par défaut Petit challenge : coder sans compilateur ?
    Voila une petite question pour une sorte de challenge, comment compiler sans compilo? ou peut etre comment coder en binaire?^^

    Je sais ça sert completement a rien c'est juste pour savoir

    l'assembleur est très proche du langage machine, est il donc possible de traduire les fonctionnalités directement en binaire (et realiser un .exe pour autre pour le lire) ?
    ou un alternative qui donnerai le même effet

    vila vilou juste pour savoir^^

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    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 372
    Points : 23 628
    Points
    23 628
    Par défaut
    C'est effectivement possible, en effectuant le travail du compilateur à la main. Il va sans dire que cela devient vite très fastidieux, mais ça s'est fait à une époque. Moi-même, j'ai programmé mon premier PIC en écrivant le programme sur papier, en l'assemblant à la main avec la liste des codes à côté, et en transposant le tout dans un fichier hexadécimal avant de l'envoyer au programmateur.

    À chaque micro-processeur correspond sa table des instructions, lequelles sont déclinées dans toutes les versions possibles en fonction des modes d'adressage. Tu n'as qu'à relever (parfois calculer) les bonnes valeur et les aligner les unes après les autres.

    Ça, c'est dans le principe. Après, pour faire un programme qui s'épanouisse pleinement au sein d'un système d'exploitation moderne, il faut qu'il puisse interagir avec et connaître à un moment t tous les points d'entrées relève de la gageure. Ensuite, le format *.exe sous Windows est assez compliqué en lui-même. C'est en soi un travail à temps plein que de vouloir le définir à la main, presque autant que la compilation proprement dite.

    Cela dit, les programmes *.COM étaient faits, eux, pour être une image stricte, monolithique et sans aucune structure d'un petit programme. Ils se prêtaient assez bien à ce genre d'exercice. En convertissant les codes hexadécimaux obtenus en codes ASCII, on arrivait à créer un programme exécutable avec le bloc-notes.

    Par exemple, pour faire facilement un programme qui se contentait de ressortir, on pouvait utiliser l'instruction « INT 20h » sur PC. Une fois assemblé, on obtenait CD 20. Traduit en décimal, ça faisait 205 32. Après avoir ouvert un bloc-notes, 205 s'obtenait avec Alt+2+0+5, et 32, c'était l'espace, tout simplement. Une fois saisi ces deux caractères, on sauvait le tout sous « prog.com » et on avait un exécutable en bonne et due forme.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    très sympa tout ça!

    donc voici pour voir si j'ai bien compris, voici un code tout bete tirer d'un site pris au hasard qui affiche un Z avec des couleurs;

    J'ouvre un fichier bloc note et je traduit ceci en decimal à l'aide de l'ASCII, de la technique "alt+"

    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
    .model small ;faut il trouver des valeurs decimal pour ceci où on laisse ?
    .stack 100h ;  par exemple ceci donnerai: .stack 256 ?
    .486
    .data
     
    .code
    main    proc
            mov ax,@data
            mov ds,ax ; donc ici faut que je trouve la correspondance adequoite? d'ailleur je ne sais pas où trouver ça....
     
            mov ah,09h
            mov bh,0
            mov cx,1
            mov al,'Z'
            mov bl,11111001b
            int 10h
     
            mov ax,04C00h
            int 21h
    main endp
    end main
    mmmh ça m'interesse beaucoup, j'aimerai savoir comment faire (bien sûr je sais que cela ne sert pas mais bon, c'est interessant)

    (aussi il est donc impossible de coder directement en binaire ? puisque sur un bloc note on ne peut qu'ecrire en decimal)

    transposant le tout dans un fichier hexadécimal
    Il existe un moyen de lire et ecrire de l'hexadecimal ?

    Merci beaucoups pour les infos

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pour le format des instructions sur les processeur x86 en 32bits et la traduction asm/machine: http://en.wikibooks.org/wiki/X86_Ass...age_Conversion

    Sinon, pour les format des fichiers exécutables Windowb, regarde du côté des "PE File"; il y avait une traduction d'une série de tutoriels sur ce format qui était pas mal fait du tout, une petite recherche sur Googel devrait t'aider

    Pour le format des exécutables sous Linux, il faut regarder du côté elf. Là aussi y a moyen de trouver la doc....
    À partir de là, tu ouvres ton éditeur hexa préféré, et tu fais du hard-coding

    Il existe un moyen de lire et ecrire de l'hexadecimal ?
    Tu utilise un éditeur hexadécimal... Y en a des pas mal sur Internet, en cherchant un peu...

    Sinon, ce que peut être très enrichissant, c'est faire un petit compilo toi-même...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    merci beaucoups, je vais voir ça de suite

  6. #6
    Invité
    Invité(e)
    Par défaut
    Mais franchement, laisse tomber l'idée de coder, déjà rien que pour coder en hexa avec les formats elf ou pe, tu vas vraiment t'amuser... C'est du suicide

  7. #7
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Citation Envoyé par Lord BlackFox Voir le message
    Mais franchement, laisse tomber l'idée de coder, déjà rien que pour coder en hexa avec les formats elf ou pe, tu vas vraiment t'amuser... C'est du suicide
    Parfois tu n'a pas le choix, c'est en général quand tu écrit un driver pour une carte et tu le mixe avec un langage de plus haut niveau pour ce qui n'est pas spécifique à ta carte.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  8. #8
    Invité
    Invité(e)
    Par défaut
    et tu code directement en hexa?
    Pourquoi ne pas utiliser l'asm alors?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Lord BlackFox Voir le message
    laisse tomber l'idée de coder
    oui ne t'inquiete pas, mon but n'étais pas de coder, mais surtout de comprendre

    Donc c'est bon, grâve à vous j'ai compris que c'étais possible mais surtout comment ça l'étais

+ Répondre à la discussion
Cette discussion est résolue.
Signaler un problème

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/02/2014, 10h19
  2. DBWrapper, coder sans vous soucier du type de BD utilisée
    Par brodseba dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 4
    Dernier message: 11/02/2009, 04h58
  3. Coder sans utiliser Framework .NET ?
    Par arnofly dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 28/10/2007, 11h04
  4. tout petit challenge[déja un heureux gagnant]
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2007, 11h57
  5. Coder un binaire PE sans étape de linkage
    Par Asmx86 dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 11/04/2004, 23h07

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