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 :

Format d'un exe pour DOS et pour Windows


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Format d'un exe pour DOS et pour Windows
    J'ai commencé la programmation d'un assembleur (en c). Il est bien avancé (tout est relatif... ce n'est qu'un jouet) mais pour l'instant il ne produit que des fichiers '.com' (en 16 bits bien sûr).
    L'étendre au 32 bits n'est pas un problème mais bien inutile pour l'instant car je ne sais pas comment produire des '.exe' aussi bien pour dos que pour windows.
    Quelqu'un pourrait-il me renseigner là-dessus ?
    Plus précisement, en me restreignant pour l'instant au 16 bits pour dos :
    * à quoi ressemble un fichier '.exe' ?
    * quel renseignements contient-il en plus du code ?
    * faut-il passer par un fichier '.obj' (à quoi cela ressemble-t-il ?) et utiliser un linker (comment ?)?

    Tout renseignement serait bien utile ...

    merci

  2. #2
    Inactif
    Profil pro
    Inscrit en
    avril 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2002
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Ecrire un Assembleur en C, ça ressembler à un gag, mais,, bon, je suppose que si tu peux le faire, c'est que tu peux au moins lire l'Asm. Dand ce cas, il y a plusieurs Assembleurs Open Sources (ou free avec Sources):

    FASM (c'est celui qui devrait correspondre le plus à ce que je suppose que tu fais)

    SpAsm (aucun intérêt pout toi -trop bon...-)

    NASM (écrit en ... C ... )

    Tu trouveras les liens plein partout, y compris ici, plus bas...)


    Betov.

  3. #3
    Candidat au Club
    Inscrit en
    mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    j'avais justement regardé dans les sources de Fasm le fichier Formats.inc.
    C'est là, si j'ai bien compris, que sont codés les en-têtes des fichiers assemblés. Mais bon dès le départ, on a le choix entre deux formats (mz et pe) : lequel convient ? Ensuite lorsque je suis le code, apparaissent les nombreuses informations à fournir. Comment les connaître ?
    Je cherche seulement la liste des informations qu'il faut fournir ...
    j'ai commencé la programmation de ce petit assembleur juste pour m'amuser. Ca fait deux semaines que je suis dessus( sur mon temps libre bien sûr, donc pas autant que j'aimerais) mais j'avoue qu'auparavant j'ai lu et relu les documents Intel pendant une autre bonne quinzaine de jours pour comprendre opcodes modem/rbytes et sibbytes.
    Je programme depuis un an et demi (en c) et ne connait (un peu) l'asm que depuis 6 mois.
    Pour ce qui est de Spasm, il est plus qu'impressionnant (bravo à Betov), mais ses sources, que j'ai parcourues sont elles-mêmes écrites en macros la plupart du temps, me semble-t-il, et donc il me faudrait beaucoup de temps pour y trouver les renseignements que je cherche.
    En fait l'aide que je demande c'est quelque chose du genre :
    un fichier '.exe' pour dos (ou pour windows) c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    tant de bytes avec telles informations
    tant de bytes avec telles informations
    .......... etc
    le code
    ..........
    ..........
    ou le nom d'un document contenant ces informations.
    Je pense que je finirais par savoir, mais sachant le temps qu'il m'a fallu pour trouver et comprendre comment traduire des lignes d' asm en binaire, je voulais simplement gagner du temps en demandant de l'aide .....
    merci

  4. #4
    Inactif
    Profil pro
    Inscrit en
    avril 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2002
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    > "tant de bytes avec telles informations"

    ..., Tiens, c'est marrant, c'est une attitude typique de programmeur Asm.
    ... C'est quand tu veux...


    PE, c'est le format pour les executables Windows.

    Dans les Sources de FASM, le fichier "Formats.inc" devrait contenir ce que
    tu cherches, après:

    > format_mz:

    ... tu suis les Pointeurs. L'écriture de Thomasz est assez simple et bien
    organisée. Si tu pédales dans la semoule, fais une recherche avec:

    "Files Formats".

    Il y a document ancien mais complet et propre pour les COMs / EXEs, et autres
    vieilleries, qui s'appèle:

    "Filefmts.lst" / .zip / .???

    Vois d'abord : < http://www.wotsit.org/ >


    Betov.

  5. #5
    Candidat au Club
    Inscrit en
    mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci, j'ai trouvé ...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/11/2007, 14h46
  2. [C++builder 6] Changer l'icône d'un exe pour DOS
    Par Faith's Fall dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/09/2007, 14h06
  3. Réponses: 2
    Dernier message: 22/05/2006, 14h04
  4. [DOS] Commande pour écrire dans un fichier texte
    Par Jeff87-01 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/03/2006, 01h04
  5. Réponses: 8
    Dernier message: 08/05/2004, 13h58

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