PDA

View Full Version : [Assembly] Programma da C ad essembly MIPS32


tomjones23
26-02-2012, 19:23
Questo è il programma. Ho provato a farlo su fogli ma non riesco bene a muovermi con i salti perchè i controlli if mi mettono un pò in difficoltà. Potete darmi una mano?

Grazie
/*
Dato un array di interi diversi tra loro,
trova il secondo valore più piccolo e la sua posizione nell'array
*/
#include <limits.h>
#include <stdio.h>
#define N 7
int a[N] = { 5, -3, 1, -7, 2, -6, -5 };
int main(void) {

int min_el_val = INT_MAX, min_el_ind;
int min2_el_val = INT_MAX, min2_el_ind;

int i, t;

i=0;
inizio_for:
if (!(i<N)) goto fine_for;
t = a[i];

/* se ho un nuovo minimo... */
if (t<min_el_val) goto then_if1;
/* altrimenti se ho un nuovo secondo piu' piccolo... */
if (!(t<min2_el_val)) goto fine_if2;
/* ... aggiorno min2 */
min2_el_val = t;
min2_el_ind = i;
fine_if2:

goto fine_if1;

then_if1:
/* ... aggiorno min e min2 */
min2_el_val = min_el_val;
min2_el_ind = min_el_ind;

min_el_val = t;
min_el_ind = i;

fine_if1:

i++;
goto inizio_for;
fine_for:

printf("\nIl secondo piu' piccolo elemento ha valore %d e posizione %d\n", min2_el_val, min2_el_ind);
return 0;
}