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 habitué Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Points : 137
    Points
    137
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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 habitué Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Points : 137
    Points
    137
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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 éminent sénior

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    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 habitué Avatar de Crisanar
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 162
    Points : 137
    Points
    137
    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