Conversion en syntaxe intel

marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011 - 13 oct. 2010 à 13:46
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 14 oct. 2010 à 08:34
bonjour,
j'ai un code écrit en syntaxe at&t et je veux le rendre en syntaxe intel.si vous pouvez bien m'aider...
voici le code
Project title : m
Project path : C:\Documents and Settings\Administrateur.STANDARD\Mes documents\m\

Frame function: main (C:/Documents and Settings/Administrateur.STANDARD/Mes documents/m/main.c:15)
Frame address : 0022FF80
--------------------------------------------------------------------------------
004012F0 push %ebp
004012F1 mov %esp,%ebp
004012F3 sub $0x48,%esp
004012F6 and $0xfffffff0,%esp
004012F9 mov $0x0,%eax
004012FE add $0xf,%eax
00401301 add $0xf,%eax
00401304 shr $0x4,%eax
00401307 shl $0x4,%eax
0040130A mov %eax,-0x24(%ebp)
0040130D mov -0x24(%ebp),%eax
00401310 call 0x4019e0 <_alloca>
00401315 call 0x401560 <__main>
0040131A movl $0x0,-0x4(%ebp)
00401321 movl $0x0,-0x10(%ebp)
00401328 movl $0x0,-0xc(%ebp)
0040132F movl $0x14,-0x18(%ebp)
00401336 movl $0x403000,(%esp)
0040133D call 0x401a58
00401342 mov -0x18(%ebp),%eax
00401345 shl $0x2,%eax
00401348 mov %eax,(%esp)
0040134B call 0x401a50 <malloc>
00401350 mov %eax,-0x4(%ebp)
00401353 movl $0x0,-0x1c(%ebp)
0040135A mov -0x1c(%ebp),%eax
0040135D cmp -0x18(%ebp),%eax
00401360 jge 0x4013b5 <main+197>
00401362 mov -0x1c(%ebp),%eax
00401365 inc %eax
00401366 mov %eax,0x4(%esp)
0040136A movl $0x40303b,(%esp)
00401371 call 0x401a58
00401376 mov -0x1c(%ebp),%eax
00401379 shl $0x2,%eax
0040137C add -0x4(%ebp),%eax
0040137F mov %eax,0x4(%esp)
00401383 movl $0x403055,(%esp)
0040138A call 0x401a48 <scanf>
0040138F mov -0x1c(%ebp),%eax
00401392 lea 0x0(,%eax,4),%edx
00401399 mov -0x4(%ebp),%eax
0040139C flds (%edx,%eax,1)
0040139F flds 0x4030b8
004013A5 fxch %st(1)
004013A7 fucompp
004013A9 fnstsw %ax
004013AB sahf
004013AC jae 0x401362 <main+114>
004013AE lea -0x1c(%ebp),%eax
004013B1 incl (%eax)
004013B3 jmp 0x40135a <main+106>
004013B5 lea -0x10(%ebp),%eax
004013B8 mov %eax,0x8(%esp)
004013BC mov -0x18(%ebp),%eax
004013BF mov %eax,0x4(%esp)
004013C3 mov -0x4(%ebp),%eax
004013C6 mov %eax,(%esp)
004013C9 call 0x401405
004013CE fstps -0x14(%ebp)
004013D1 flds -0x14(%ebp)
004013D4 fstpl 0x14(%esp)
004013D8 flds -0xc(%ebp)
004013DB fstpl 0xc(%esp)
004013DF flds -0x10(%ebp)
004013E2 fstpl 0x4(%esp)
004013E6 movl $0x403058,(%esp)
004013ED call 0x401a58
004013F2 movl $0x4030b1,(%esp)
004013F9 call 0x401a40 <system>
004013FE mov $0x0,%eax
00401403 leave
00401404 ret

9 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
13 oct. 2010 à 16:01
Désassemble ton code avec un autre programme, ça sera probablement plus facile ...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
13 oct. 2010 à 17:40
j'ai essayé avec IDA mais ça donne la méme chose
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
13 oct. 2010 à 21:47
Bizarre, IDA sort chez moi du code en syntaxe Intel. Un p'tit screen peut-être ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 oct. 2010 à 21:49
1) Enlever tous les '%'.
2) Intrsuctions à 2 params, les inverser:
mov %esp,%ebp
devient
mov ebp, esp
3) beaucoup d'intructions ont un suffixe.
incl (%eax)
est INC Intel qui devient
inc dword ptr[eax]

Après tout ce nettoyage, tu seras deja avancé.

A noter que ce code a été obtenu avec un compilo C de MERDE !!!
Exemples:
shr $0x4,%eax
shl $0x4,%ea
Un seul AND faisait cela en 1 cycle.

mov $0x0,%eax
serait: xor eax, eax

etc, etc. Il conviendrait de virer cette daube et de le réécrire convenablement.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
13 oct. 2010 à 22:03
et eax,ebp,esp etc ça représente quoi??
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
13 oct. 2010 à 22:33
@BruNews : Je dirais plutôt que le compilo n'a pas optimisé le code original qui a apparemment été fait par un gros porc . Par contre le xor eax, eax je suis entièrement d'accord avec toi, et on peut pas dire que ça soit compliqué ni très récent comme façon d'optimiser.

@marooh : Des registres

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
13 oct. 2010 à 23:03
mov $0x0,%eax
add $0xf,%eax
add $0xf,%eax
shr $0x4,%eax
shl $0x4,%eax
mov %eax,-0x24(%ebp) 
mov -0x24(%ebp),%eax ;inutile !
;23 octets qu'on peut rassembler en une instruction de 7
movl $0x10, -0x24(%ebp)

Ensuite faudra qu'on m'explique pourquoi on relit la valeur stockée en mémoire ...


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
14 oct. 2010 à 00:02
le programme écrit est en fait à propos de la création d'un tableau de 20 cases et de les remplir ensuite de trouver le min,le max et la moyenne.Mais que je l'ai desassemblé,j'ai rien compris
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 oct. 2010 à 08:34
CMOVxxx

ciao...
BruNews, MVP VC++
0
Rejoignez-nous