stavo facendo questo piccolo esercizio di Assembly per ritornare la lunghezza di una data stringa inserita:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 80
int main(int argc, char** argv) {
unsigned char text[MAXLEN];
unsigned long len = 0;
scanf("%s", text);
__asm (
"movl $-1, %ecx;\n\t"
"start_loop: inc %ecx;\n\t"
"cmp 0, text(%ecx);\n\t"
"jne start_loop;\n\t"
"mov %ecx, len;\n\t"
);
printf("%d", len);
return (EXIT_SUCCESS);
}
Codice: Seleziona tutto
ex1.c: Assembler messages:
ex1.c:22: Error: too many memory references for `cmp'
ha alcuna idea di come vengano scritte le istruzioni con un compilatore differente, per questo volevo chiedervi anche se la sintassi Assembly che ho usato è corretta.
Grazie