Ensamblador ARM

babri

Muy Wenas!
Vereis tengo un problema ensamblando este codigo C a ARM...

int i, max, ind;
int max(int A[], int longA){
max=0;
ind=0;
for(i=0; i<longA; i++){
if(A>max){
max=A;
ind=i;
}
}
return(ind);
}
Basicamente el codigo tiene que buscar el valor máximo de un vector A de enteros positivos de longitud longA y devolver la posición de ese máximo (el índice)....
A ver is me podeis exae una pata...
gracias y un salu2!! ;D

LOc0

¿Qué problema? ¿Que no has abierto el libro o los apuntes?

www.inf-cr.uclm.es/www/isanchez/eco0910/ensamblaarm.pdf

Salu2 ;)

Lecherito

Mis apuntes!!!!!!!!!!!!!

Thanat0s

Puedo intentar darte un par de ideas a ver si te sirven.

Al llamar a la subrutina max, vas a recibir dos parámetros en los registros R0 y R1.
En R0 vas a tener la dirección de memoria que apuntará a la primera posición del vector y en R1 la longitud.

Haces el epílogo para guardar dichos parámetros en la pila de la subrutina (si quieres, sino lo de siempre, guardas fp, ip, blablabla para luego hacer el retorno al programa principal).

Y luego pues nada, trabajas con esos dos registros aumentando el valor del puntero y comparando R1 con 0 para saber cuando has terminado de recorrer todo el array y listo.

Cargas la pila de la subrutina y te sales, dejando en R0 el valor que quieres devolver al programa principal.

Usuarios habituales

  • Thanat0s
  • Lecherito
  • LOc0
  • babri