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

MFC Discussion :

Code "ajout�" par le compilo et qui ne sert � rien


Sujet :

MFC

  1. #1
    Membre confirm� Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Par d�faut Code "ajout�" par le compilo et qui ne sert � rien
    Bonjour � tous,
    D�sol� pour le titre peu explicite mais c'est assez difficile de r�sumer ma question.

    J'ai remarqu� en d�sassemblant des petits programmes que j'avais fait sous VC6 qu'il se pr�sentaient en gros comme ceci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    +------------------------------+
    | Code écrit par moi même      |
    +------------------------------+
    | Entry point                  |
    +------------------------------+
    | Code de gestion d'erreur     |
    | et ne servant à rien???      |
    +------------------------------+
    Quelqu'un sait-il � quoi correspond la derniere section de code et si c'est possible, comment s'en d�barraser (J'ai analys� en mode release avec les options d'optimisation par defaut)

    Merci d'avance,
    Crisanar

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Regarde tes options du projet en mode Release: si tu voies des trucs du genre "program database", par exemple... (m�me si g�n�ralement, on ne les voit que dans les options de d�bogage...)

    Sinon, elles ont quelle forme, ces informations de d�bogage?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm� Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Par d�faut
    Je n'ai pas di que c'�tait des informations de d�bogage. En fait je ne sais pas du tout ce que c'est, mais ca ressemble � �a
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    00401763  |. 8B35 34554000  MOV ESI,DWORD PTR DS:[405534]
    00401769  |. 3D 8E0000C0    CMP EAX,C000008E                         ;  Switch (cases C000008D..C0000093)
    0040176E  |. 75 0C          JNZ SHORT PseudoMa.0040177C
    00401770  |. C705 34554000 >MOV DWORD PTR DS:[405534],83             ;  Case C000008E (FLOAT DIVIDE BY ZERO) of switch 00401769
    0040177A  |. EB 70          JMP SHORT PseudoMa.004017EC
    0040177C  |> 3D 900000C0    CMP EAX,C0000090
    00401781  |. 75 0C          JNZ SHORT PseudoMa.0040178F
    00401783  |. C705 34554000 >MOV DWORD PTR DS:[405534],81             ;  Case C0000090 (FLOAT INVALID OPERATION) of switch 00401769
    0040178D  |. EB 5D          JMP SHORT PseudoMa.004017EC
    0040178F  |> 3D 910000C0    CMP EAX,C0000091
    00401794  |. 75 0C          JNZ SHORT PseudoMa.004017A2
    00401796  |. C705 34554000 >MOV DWORD PTR DS:[405534],84             ;  Case C0000091 (FLOAT OVERFLOW) of switch 00401769
    004017A0  |. EB 4A          JMP SHORT PseudoMa.004017EC
    004017A2  |> 3D 930000C0    CMP EAX,C0000093
    004017A7  |. 75 0C          JNZ SHORT PseudoMa.004017B5
    004017A9  |. C705 34554000 >MOV DWORD PTR DS:[405534],85             ;  Case C0000093 (FLOAT UNDERFLOW) of switch 00401769
    004017B3  |. EB 37          JMP SHORT PseudoMa.004017EC
    004017B5  |> 3D 8D0000C0    CMP EAX,C000008D
    004017BA  |. 75 0C          JNZ SHORT PseudoMa.004017C8
    004017BC  |. C705 34554000 >MOV DWORD PTR DS:[405534],82             ;  Case C000008D (FLOAT DENORMAL OPERAND) of switch 00401769
    004017C6  |. EB 24          JMP SHORT PseudoMa.004017EC
    004017C8  |> 3D 8F0000C0    CMP EAX,C000008F
    004017CD  |. 75 0C          JNZ SHORT PseudoMa.004017DB
    004017CF  |. C705 34554000 >MOV DWORD PTR DS:[405534],86             ;  Case C000008F (FLOAT INEXACT RESULT) of switch 00401769
    004017D9  |. EB 11          JMP SHORT PseudoMa.004017EC
    004017DB  |> 3D 920000C0    CMP EAX,C0000092
    004017E0  |. 75 0A          JNZ SHORT PseudoMa.004017EC
    004017E2  |. C705 34554000 >MOV DWORD PTR DS:[405534],8A             ;  Case C0000092 (FLOAT STACK CHECK) of switch 00401769
    004017EC  |> FF35 34554000  PUSH DWORD PTR DS:[405534]               ;  Default case of switch 00401769
    004017F2  |. 6A 08          PUSH 8
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    0040214A  |. 68 04010000    PUSH 104                                 ; /BufSize = 104 (260.)
    0040214F  |. 50             PUSH EAX                                 ; |PathBuffer
    00402150  |. 6A 00          PUSH 0                                   ; |hModule = NULL
    00402152  |. FF15 44404000  CALL DWORD PTR DS:[<&KERNEL32.GetModuleF>; \GetModuleFileNameA
    00402158  |. 85C0           TEST EAX,EAX
    0040215A  |. 75 13          JNZ SHORT PseudoMa.0040216F
    0040215C  |. 8D85 5CFEFFFF  LEA EAX,DWORD PTR SS:[EBP-1A4]
    00402162  |. 68 EC434000    PUSH PseudoMa.004043EC                   ;  ASCII "<program name unknown>"
    00402167  |. 50             PUSH EAX
    00402168  |. E8 23050000    CALL PseudoMa.00402690
    0040216D  |. 59             POP ECX
    0040216E  |. 59             POP ECX
    0040216F  |> 8D85 5CFEFFFF  LEA EAX,DWORD PTR SS:[EBP-1A4]
    00402175  |. 57             PUSH EDI
    00402176  |. 50             PUSH EAX
    00402177  |. 8DBD 5CFEFFFF  LEA EDI,DWORD PTR SS:[EBP-1A4]
    0040217D  |. E8 7E060000    CALL PseudoMa.00402800
    00402182  |. 40             INC EAX
    00402183  |. 59             POP ECX
    00402184  |. 83F8 3C        CMP EAX,3C
    00402187  |. 76 29          JBE SHORT PseudoMa.004021B2
    00402189  |. 8D85 5CFEFFFF  LEA EAX,DWORD PTR SS:[EBP-1A4]
    0040218F  |. 50             PUSH EAX
    00402190  |. E8 6B060000    CALL PseudoMa.00402800
    00402195  |. 8BF8           MOV EDI,EAX
    00402197  |. 8D85 5CFEFFFF  LEA EAX,DWORD PTR SS:[EBP-1A4]
    0040219D  |. 83E8 3B        SUB EAX,3B
    004021A0  |. 6A 03          PUSH 3
    004021A2  |. 03F8           ADD EDI,EAX
    004021A4  |. 68 E8434000    PUSH PseudoMa.004043E8                   ;  ASCII "..."
    004021A9  |. 57             PUSH EDI
    004021AA  |. E8 E1120000    CALL PseudoMa.00403490
    004021AF  |. 83C4 10        ADD ESP,10
    004021B2  |> 8D85 60FFFFFF  LEA EAX,DWORD PTR SS:[EBP-A0]
    004021B8  |. 68 CC434000    PUSH PseudoMa.004043CC                   ;  ASCII "Runtime Error!
     
    Program: "
    004021BD  |. 50             PUSH EAX
    004021BE  |. E8 CD040000    CALL PseudoMa.00402690
    004021C3  |. 8D85 60FFFFFF  LEA EAX,DWORD PTR SS:[EBP-A0]
    004021C9  |. 57             PUSH EDI
    004021CA  |. 50             PUSH EAX
    004021CB  |. E8 D0040000    CALL PseudoMa.004026A0
    004021D0  |. 8D85 60FFFFFF  LEA EAX,DWORD PTR SS:[EBP-A0]
    004021D6  |. 68 C8434000    PUSH PseudoMa.004043C8                   ;  ASCII "
     
    "
    004021DB  |. 50             PUSH EAX
    004021DC  |. E8 BF040000    CALL PseudoMa.004026A0
    004021E1  |. FFB6 5C554000  PUSH DWORD PTR DS:[ESI+40555C]
    004021E7  |. 8D85 60FFFFFF  LEA EAX,DWORD PTR SS:[EBP-A0]
    004021ED  |. 50             PUSH EAX
    004021EE  |. E8 AD040000    CALL PseudoMa.004026A0
    004021F3  |. 68 10200100    PUSH 12010
    004021F8  |. 8D85 60FFFFFF  LEA EAX,DWORD PTR SS:[EBP-A0]
    004021FE  |. 68 A0434000    PUSH PseudoMa.004043A0                   ;  ASCII "Microsoft Visual C++ Runtime Library"
    00402203  |. 50             PUSH EAX
    Mais mon code est fort simpliste et je sais que ces parties de code ne font pas partie de mon code CPP compil� (j'ai bien rep�r� les parties de mon code cpp une fois compil�es). J'ai remarqu� que ces informations �taient pr�sentes avec tous mes projets mais je ne sais pas d'o� elles proviennent.

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je crois que ce sont les erreurs run-time standard. Je ne crois pas qu'il soit possible de les enlever, mais je ne suis sur de rien...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    mat.M
    Invit�(e)
    Par d�faut
    n'enl�ve absolument rien malheureux !
    d'une mani�re ou d'une autre VC rajoute toujours un runtime ( en liaison ) et tous les compilos le font.
    C'est pas parce qu'il y a du code suppl�mentaire que cela va p�naliser forc�ment les performances.
    A moins que tu ne d�veloppes pour de l'embarqu�.

    Sinon eh bien programme � 100 % en assembleur !

  6. #6
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    C'est le code de la runtime : gestion des allocation, des locales, etc... ainsi que le code qui appelle main/WinMain (les param�tres de ces derni�res ne tombent pas du ciel).
    Si tu n'utilises pas la CRT, mais pas du tout (pas de malloc/new, ..., mais aussi pas d'objets avec constructeur/destructeur statiques...), tu peux la virer en sp�cifiant en entry point � toi.
    Voir cet article:
    http://msdn.microsoft.com/msdnmag/issues/01/01/hood/

  7. #7
    Membre confirm� Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Par d�faut
    Sinon eh bien programme � 100 % en assembleur !
    Je programmais il y a peu en ASM, c'est pour cel� que j'esp�rais retrouver les avantages de l'asm (taille du code entre autres), avec les avantages du C++ (facilit� d'�criture, optimisation, reutilisabilit�,...)
    Mais il est vrai que 28ko n'est pas �norme quand m�me.

    Si tu n'utilises pas la CRT, mais pas du tout (pas de malloc/new, ..., mais aussi pas d'objets avec constructeur/destructeur statiques...), tu peux la virer en sp�cifiant en entry point � toi.
    Je n'utilisais rien de tout cel�, seulement des APIs Windows.


    Merci � tous pour ces infos

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [2007]Pb ajout r�f�rence par le code
    Par tAKAmAkA dans le forum Runtime
    R�ponses: 8
    Dernier message: 07/06/2008, 00h57
  2. Acceder par code a Ajout/Suppression de programme
    Par Ben_Le_Cool dans le forum Delphi
    R�ponses: 1
    Dernier message: 13/07/2006, 08h49

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