ASM Inline, erreur de compilation non comprise.
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:
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:
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:
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:
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 ^^