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

codice:
as --32 max.s -o max.o
ma:
codice:
max.s: Assembler messages:
max.s:18: Error: junk `(,%edi,4)' after register
Ho provato a googlare il problema, ma ho trovato tutti con assembly inline.

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;
}
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
Alla fine per linkare i due file assieme mi basta:
codice:
gcc -m32 max_main.c max.o -o output
giusto?

Spero di poter contare in un vostro aiuto.
Ciaoooo