Código C:
Código
void Intercambiar(int* Lista, int i, int j); int OrdenaPacientes(int* Lista, struct BCP* P, unsigned char criterio) { int pid,num,i,j; if( (criterio != CRIT_PRIO) && (criterio != CRIT_ALFA) ) return -1; //error // Copiamos los indices de los BCPs ocupados // a la lista for( pid = 0, num = 0; pid < MAX_PACIENTES ; pid++ ) if( P[pid].prioridad != 0 ) { Lista[num] = pid; num++; } // Ordenamos la lista if( criterio == CRIT_PRIO ) for( i = 0; i < num ; i++ ) { j = PosMinPrioridad(Lista, P,i,num); Intercambiar(Lista, i, j ); } else for( i = 0; i < num ; i++ ) { j = PosMinAlfabetico(Lista, P,i,num); Intercambiar(Lista, i, j ); } return num; }
Y aquí el código de la función Intercambiar en ASM:
Código
.global Intercambiar Intercambiar: push {fp} mov fp, sp sub sp, #4 ldr r3, [r0, r2, lsl #2] str r3, [fp, #-4] ldr r3, [r0, r1, lsl #2] str r3, [r0, r2, lsl #2] ldr r3, [fp, #-4] str r3, [r0, r1, lsl #2] mov sp, fp pop {fp} mov pc, lr .end