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

x86 32-bits / 64-bits Assembleur Discussion :

Assembleur génère plus gros fichier que C


Sujet :

x86 32-bits / 64-bits Assembleur

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Assembleur génère plus gros fichier que C
    Bonsoir,
    je débute l'assembleur Win32 et j'ai donc commencé par un premier "Hello world !", que j'ai assemblé et linké avec NASM et link (en utilisant libcmt.lib).
    Mais lorsque tout content, je compare la taille de l’exécutable crée à un programme compilé en C avec MingW, je m’aperçois que le plus gros n'est pas celui en C mais celui en assembleur.

    Comment est-ce possible ? Y a t'il des options d'optimisations spéciales ? Les bibliothèques utilisées pour le programme en C sont plus légères ?

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        global	_main
        extern	_printf
     
        section .text
    _main:
        push	message
        call	_printf
        add 	esp, 4
        ret
    message:
        db	'Hello World !', 10, 0
    Merci.

  2. #2
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Montre nous les deux codes source ainsi que les lignes de commande utilisées (pour la compilation, l'assemblage et l'édition de liens).
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oh pardon ^^
    Alors, j'assemble comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nasm -fwin32 D:\Users\Getkey\Developpement\Assembleur\helloworld.asm
    et je linke comme ça (dans l'invite de commande de Visual C++ 2010 Express):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    link.exe D:\Users\Getkey\Developpement\Assembleur\helloworld.obj "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\libcmt.lib"
    , ce qui me donne un programme de 43,5 Ko.

    Et pour le programme en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main()
    {
        printf("Hello world!\n");
        return 0;
    }
    Je compile comme ça (en fait j'utilise Code::Blocks qui fait ça automatiquement):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mingw32-gcc.exe -Wall  -g     -c D:\Users\Getkey\Developpement\CodeBlocks\helloworld\helloworld\main.c -o obj\Debug\main.o
    mingw32-g++.exe  -o bin\Debug\helloworld.exe obj\Debug\main.o
    , et j'ai un programme qui pèse 28,3 Ko.

  4. #4
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Je pense que c'est parce que tu te lies statiquement à libcmt.lib ce qui veux dire que tout le code de la bibliothèque est copié au sein de ton exécutable.

    Je ne connais pas très bien Windows mais il me semble que d'après ce lien tu devrais te lier à msvcrt.lib
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    D'accord, je vais voir ça !
    Je te tient au courant

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ah oui en effet il y a des sortes de biothèques partagées comme sous linux !
    Mon nouvel exécutable fait 6 Ko !
    Merci beaucoup !

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

Discussions similaires

  1. SV150 : Apple génère plus de profits que Hewlett-Packard et Google réunis
    Par Stéphane le calme dans le forum Actualités
    Réponses: 11
    Dernier message: 16/04/2014, 19h01
  2. Comment trouver les 10 plus gros fichiers d'un repertoire
    Par hornetbzz dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/02/2011, 23h52
  3. Le plus gros fichier d'une arborescence
    Par Infophile dans le forum Linux
    Réponses: 5
    Dernier message: 17/09/2010, 19h30
  4. Facebook génère plus de traffic que Google, selon Compete
    Par Katleen Erna dans le forum Actualités
    Réponses: 11
    Dernier message: 17/02/2010, 14h23

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