Bonjour à vous tous !!

Je cherche a faire un peu d'assembleur en langage C pour me perfectionner ^^.

Cependant j'ai un petit problème ^^.

Ce code la fonctionne sans problème, mais comme vous l'avez remarquez, il manque le "repassage" a la forme at&t.

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
#include <stdio.h>
 
 
int main(void)
{
    unsigned int a = 25;
    unsigned int b = 50;
 
    asm("":: "a"(a), "b"(b));
    /* On met dans eax a et dans ebx b*/
 
    asm(".intel_syntax noprefix");
 
    asm("mov ecx, eax\n\
         mov eax, ebx\n\
         mov ebx, ecx");
    /*On échange les valeurs des registres */
 
    asm ("":"=a"(a), "=b"(b)
        :);
    /*On met eax dans a et ebx dans b*/
 
    printf("%d %d\n", a, b);
 
    return 0;
}
Ce code maintenant compile, mais me fait planter une fois avoir afficher les valeurs.
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
#include <stdio.h>
 
 
int main(void)
{
    unsigned int a = 25;
    unsigned int b = 50;
 
    asm("":: "a"(a), "b"(b));
    /* On met dans eax a et dans ebx b*/
 
    asm(".intel_syntax noprefix");
 
    asm("mov ecx, eax\n\
         mov eax, ebx\n\
         mov ebx, ecx");
    /*On échange les valeurs des registres */
 
    asm ("":"=a"(a), "=b"(b)
        :);
    /*On met eax dans a et ebx dans b*/
 
    printf("%d %d\n", a, b);
 
    asm(".att_syntax noprefix");
 
    return 0;
}
et ce code la ne compile malheureusement pas du tout, je débute avec l'assembleur inline au C^^.

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
#include <stdio.h>
 
 
int main(void)
{
    unsigned int a = 25;
    unsigned int b = 50;
 
    asm("":: "a"(a), "b"(b));
    /* On met dans eax a et dans ebx b*/
 
    asm(".intel_syntax noprefix");
 
    asm("mov ecx, eax\n\
         mov eax, ebx\n\
         mov ebx, ecx");
    /*On échange les valeurs des registres */
 
    asm ("":"=a"(a), "=b"(b)
        :);
    /*On met eax dans a et ebx dans b*/
 
    asm(".att_syntax noprefix");
 
 
    printf("%d %d\n", a, b);
 
 
    return 0;
}
Voilà les erreurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
C:\Users\Antoine\AppData\Local\Temp\cc271hhI.s|33|Error: junk `PTR [esp+8]' after expression|
C:\Users\Antoine\AppData\Local\Temp\cc271hhI.s|34|Error: junk `PTR [esp+4]' after expression|
C:\Users\Antoine\AppData\Local\Temp\cc271hhI.s|35|Error: junk `PTR [esp]' after expression|
C:\Users\Antoine\AppData\Local\Temp\cc271hhI.s|35|Error: too many memory references for `mov'|
||=== Build finished: 4 errors, 0 warnings ===|
Merci de votre aide ^^