Ciao a tutti, stavo realizzando un esercizio che determinasse il massimo di un vettore di interi. Il programma in C deve richiamare il codice assembly. Provo a compilare l'assembly
ma:codice:as --32 max.s -o max.o
Ho provato a googlare il problema, ma ho trovato tutti con assembly inline.codice:max.s: Assembler messages: max.s:18: Error: junk `(,%edi,4)' after register
Vi riporto di seguito i listati dei due file:
codice://max_main.c #include <stdio.h> #include <stdlib.h> int max(int* v, size_t size); int main(int argc, char** argv){ int vect[] = {10, 32, 39, 29}; printf("Max value: %d", max(vect, 4)); return 0; }Alla fine per linkare i due file assieme mi basta:codice:#max.s .globl max max: pushl %ebp movl %esp, %ebp movl 8(%ebp), %ebx movl 12(%ebp), %ecx cmpl $0, %ecx je end_max movl (%ebx), %eax movl $1, %edi loop: cmpl %ecx, %edi je end_max movl %ebx(,%edi,4), %edx incl %edi cmpl %edx, %eax jge loop movl %edx, %eax jmp loop end_max: movl %ebp, %esp popl %ebp ret
giusto?codice:gcc -m32 max_main.c max.o -o output
Spero di poter contare in un vostro aiuto.
Ciaoooo![]()


Rispondi quotando