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.
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 #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; }
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 #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; }
Voilà les erreurs
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; }
Merci de votre aide ^^
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 ===|
Partager