Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .global sortuj !
- .proc 4 !
- !
- sortuj: !
- save %sp, -96, %sp ! przesuniecie okienka
- !
- sortuj_petla: ! for(i=n; i>0; --i)
- call min ! poszukiwanie minimum do zamian (od aktualnego t)
- ld [%i0], %l0 ! pobranie *t , gdzie t - na poczatku wsakzuje na tab[0]
- swap [%l6], %l0 ! zamiana aktualnego *t z znalezionym minimum
- st %l0, [%i0] ! zapamietanie *t pod nowym adresem
- subcc %i1, 1, %i1 ! --i - dec lincznika
- bg sortuj_petla !
- inc 4, %i0 ! ++t - nastepny element tablicy (4, bo int), dzieki potokowi instr. sie wykona, a to ze pozniej nie przeszkadza
- !
- ret !
- restore ! odtworzenie okienka
- !
- !
- !
- !
- !
- !
- min: !
- mov %i1, %l3 ! k = i - licznik petli mini
- mov %i0, %l4 ! z = t - adres od ktorego przeszukiwac tablice
- mov %l4, %l6 ! indeks_min - indeks minimum wzgledem tab[i]
- mov %l0, %l5 ! temp = *z - poczatkowe minimum (%l0 == z == tab[i])
- min_petla: ! for(k=i-1; k>0; --k)
- subcc %l3, 1, %l3 ! --k ;; bo 1 element obsluzono przed petla
- ble min_koniec ! czy przeszukano min po wsszystkich elememtach (od i do n-1)
- inc 4, %l4 ! ++z , 4 bo to adres na int ; instrukcja specjalnie wstawiona za skokiem zeby nie tracic czasu na nop
- ld [%l4], %l7 !
- cmp %l5, %l7 ! if(temp > tab[z])
- ble min_petla !
- nop ! nie bylo instrukcji ktora moglaby sie wykonac niezaleznie od skoku
- ld [%l4], %l5 ! temp = tab[z]
- mov %l4, %l6 ! indeks_min
- ba min_petla !
- nop !
- !
- min_koniec: ! zakonczenie
- retl !
- nop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement