voila j' ai eu un problème avec certain de mes fichier.c qui se sont éffacés. Il me reste toutefois les fichier objets.Je n'ai pas le courage de retaper les prog perdus n y aurait il pas un moyen de récupérer les .c a partir des .o?
Merci
voila j' ai eu un problème avec certain de mes fichier.c qui se sont éffacés. Il me reste toutefois les fichier objets.Je n'ai pas le courage de retaper les prog perdus n y aurait il pas un moyen de récupérer les .c a partir des .o?
Merci
Rien d'efficace.
C'est comme prendre trois tonnes de Hamburger et tenter de reconstruire la vache...
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.
Bonjour,
TOUJOURS faire des sauvegardes, suffisamment souvent, et en nombre suffisant également (pouvoir remonter de plusieurs versions, le cas échéant).
Tu veux dire un éléphant ?Envoyé par Médinoc
Non, car je comptais tout le hamburger (pas que la viande) dans le calcul de la masse.
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.
J'avais répondu ça à une question similaire :
La compilation est à sens unique, il y a perte d'information (notamment lorsqu'il y a des optimisations (genre fonction inline) ou dans les noms de variables, des tableaux).
Pour te donner une exemple, le code suivant :
Va déjà être passé en code 3 adresses (avant d'être compilé) qui ressemblent à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int a; a= 2; if(a==2*3+1) { int a = 1; } else { a = 2; }
Il a perte d'information : au niveau des structures de contrôles, au niveau du nom des variables. Et il y a ajout de variables temporaires. Evidemment l'exemple que j'ai donné dépend du code 3 adresses que l'on choisi.
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 /*variable utilisateur*/ int u1, u2; /*variable temporaire*/ int v1,v2; bool v3; u1 = 2; v1 = 2; v2 = 3; v1 = v1 * v2; v2 = 1; v1 = v1 + v2; u1 = v1; v3 = u1==v1 if(!v3) goto else u2 = 1; goto fin else: u1 = 2; fin:
Tu pourras également remarquer que 2 variables déclarées dans deux blocs différents ont des noms différents.
D'ailleurs, si l'on compile avec -S -O0, on trouve le code assembleur suivant :
Ce qui serait équivalent au code 3 adresses :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /*on met 2 dans a qui est représenté par un registre = la pile ici*/ movl $2, -4(%ebp) cmpl $7, -4(%ebp) /*on voit qu'il a optimisé la partie 2*3+1 que j'avais découpé*/ jne L2 /*on met dans une autre partie de la pile, pas comme a*/ movl $1, -8(%ebp) jmp L3 L2: /*on met bien dans a*/ movl $2, -4(%ebp) L3:
Si tu testes, tu peux te rendre compte que le code d'origine (je parle sans optimisation) est totalement équivalent dans le code exe à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 v1 = 2; if(!v1==7) goto L2 v2 = 1; goto L3: L2: v1 = 2; L3:
Si tu fais une optimisation, tout le bloc des if/else va disparaitre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int d; int salut; d= 2; if(d==7) salut = 1; else d = 2;
je suis pas sur mais il existe pourtant des décompilateurs non ?
si elle compile son .o en éxecutable et qu'elle utilise un décompilateur elle ne pourra pas retrouver au moins une partie du code ?
Marche pas (EDIT) sur du code optimisé. Sinon, le code produit est difficile à lire. On a pas la sémantique des fonctions et des variables. On a que la structure du code (même pas des données).Envoyé par NeMo_O
et en plus les commentaires ont disparus![]()
Normal cela ne sert strictement à rien de mettre dans un executable des commentaires puisqu'ils sont destinés au programmeur.Envoyé par souviron34
Partager