B
boogpicker
Guest
Hej,
Jsem nový MDC a pokusili se přeložit quicksort algoritmu do MDC.Problémem je, že když jsem nahrát do PCSpim, dostane zavěsila a prostě pokračuje v chodu, dokud jsem blízko spim.kdokoli může podívat na to, co mám a uvidíme, jestli můžete přijít na to, kde dostat své zavěsila?
Oh, a já didnt komentovat to ještě.
. Data
pole:. slovní 8,2,7,1,5,6,3,4,9,0
délka:. slovo 10
. Text
. Globl hlavní
hlavní:
la $ a0, pole
pohybovat $ a1, $ nula
LW $ a2, délka
sub $ A2, $ a2, 1
JAL quicksort
li $ v0, 10
systémové volání################################################## ##############
Vyjímáme:
# $ A0 obsahuje pole
# $ A1 obsahuje 0
# $ A2 obsahuje n-1
# $ S0 obsahuje nízkou
# $ S1 obsahuje vysoce
# $ S2 obsahuje pivotPosition
sub $ sp, $ sp, 16
sw $ S0, 0 ($ sp)
sw $ s1, 4 ($ sp)
sw $ s2, 8 ($ sp)
sw $ ra, 12 ($ sp)
pohybovat $ S0, $ a1
pohybovat $ s1, $ a2
pokud: BGE $ S0, $ s1, end_if
JAL oddíl
pohybovat $ s2, $ v0
sub $ A2, $ s2, 1
JAL quicksort
pohybovat $ a2, $ s1
addì $ a1, $ s2, 1
JAL quicksort
end_if:
LW $ S0, 0 ($ sp)
LW $ s1, 4 ($ sp)
LW $ s2, 8 ($ sp)
LW $ ra, 12 ($ sp)
addì $ sp, $ sp, 16
jr $ ra
end_QuickSort:
################################################## #############
Swapu:
pohybovat $ t0, $ A0
pohybovat $ t1, $ a1
sw $ t1, 0 ($ t2)
sw $ t0, 0 ($ t2)
sw $ t0, 0 ($ t2)
end_Swap:
################################################## #############
Dělení:
# $ A0 obsahuje pole
# $ S0 obsahuje vlevo
# $ S1 obsahuje právo
# $ S2 obsahuje pivot
# $ A1 obsahuje nízkou
# $ A2 obsahuje vysoce
# $ T1 výpočty Array [nízké]
# $ T0 obsahuje základní adresa
# $ T2 obsahuje výpočty pro pole
# $ T3 obsahuje pole
# $ T4 obsahuje výpočty pro pole
# $ T5 obsahuje pole
sub $ SP, $ sp, 16
sw $ S0, 0 ($ sp)
sw $ s1, 4 ($ sp)
sw $ s2, 8 ($ sp)
sw $ ra, 12 ($ sp)
la $ t0, pole
začíná:
pohybovat $ S0, $ a1
pohybovat $ s1, $ a2
mul $ t1, $ a1, 4
Přidat $ t1, $ t0, $ t1
LW $ s2, 0 ($ t1)
while_condition:
BGE $ S0, $ s1, end_while
mul $ t2, $ s1, 4
Přidat $ t2, $ t0, $ t2
LW $ T3, 0 ($ t2)
while_condition_2:
ble $ t3, $ s2, end_while_2
sub $ s1, $ s1, 1
j while_condition_2
end_while_2:
while_condition_3:
BGE $ S0, $ s1, end_while_3
mul $ t4, $ S0, 4
Přidat $ t4, $ t0, $ t4
LW $ T5, 0 ($ t4)
bgt $ T5, $ s2, end_while_3
addì $ S0, $ S0, 1
j while_condition_3
end_while_3:
if_2:
BGE $ S0, $ s1, end_if_2
mul $ t4, $ S0, 4
Přidat $ t4, $ t0, $ t4
LW $ a0, 0 ($ t4)
mul $ t2, $ s1, 4
Přidat $ t2, $ t0, $ t2
LW $ a1, 0 ($ t2)
JAL swap
end_if_2:
end_while:
mul $ t1, $ a1, 4
Přidat $ t1, $ t0, $ t1
mul $ t2, $ s1, 4
Přidat $ t2, $ t0, $ t2
LW $ T3, 0 ($ t2)
sw $ T3, 0 ($ t1)
sw $ s2, 0 ($ t2)
pohybovat $ v0, $ s2
LW $ S0, 0 ($ sp)
LW $ s1, 4 ($ sp)
LW $ s2, 8 ($ sp)
LW $ ra, 12 ($ sp)
addì $ sp, $ sp, 16
end_Partition:
Jsem nový MDC a pokusili se přeložit quicksort algoritmu do MDC.Problémem je, že když jsem nahrát do PCSpim, dostane zavěsila a prostě pokračuje v chodu, dokud jsem blízko spim.kdokoli může podívat na to, co mám a uvidíme, jestli můžete přijít na to, kde dostat své zavěsila?
Oh, a já didnt komentovat to ještě.
. Data
pole:. slovní 8,2,7,1,5,6,3,4,9,0
délka:. slovo 10
. Text
. Globl hlavní
hlavní:
la $ a0, pole
pohybovat $ a1, $ nula
LW $ a2, délka
sub $ A2, $ a2, 1
JAL quicksort
li $ v0, 10
systémové volání################################################## ##############
Vyjímáme:
# $ A0 obsahuje pole
# $ A1 obsahuje 0
# $ A2 obsahuje n-1
# $ S0 obsahuje nízkou
# $ S1 obsahuje vysoce
# $ S2 obsahuje pivotPosition
sub $ sp, $ sp, 16
sw $ S0, 0 ($ sp)
sw $ s1, 4 ($ sp)
sw $ s2, 8 ($ sp)
sw $ ra, 12 ($ sp)
pohybovat $ S0, $ a1
pohybovat $ s1, $ a2
pokud: BGE $ S0, $ s1, end_if
JAL oddíl
pohybovat $ s2, $ v0
sub $ A2, $ s2, 1
JAL quicksort
pohybovat $ a2, $ s1
addì $ a1, $ s2, 1
JAL quicksort
end_if:
LW $ S0, 0 ($ sp)
LW $ s1, 4 ($ sp)
LW $ s2, 8 ($ sp)
LW $ ra, 12 ($ sp)
addì $ sp, $ sp, 16
jr $ ra
end_QuickSort:
################################################## #############
Swapu:
pohybovat $ t0, $ A0
pohybovat $ t1, $ a1
sw $ t1, 0 ($ t2)
sw $ t0, 0 ($ t2)
sw $ t0, 0 ($ t2)
end_Swap:
################################################## #############
Dělení:
# $ A0 obsahuje pole
# $ S0 obsahuje vlevo
# $ S1 obsahuje právo
# $ S2 obsahuje pivot
# $ A1 obsahuje nízkou
# $ A2 obsahuje vysoce
# $ T1 výpočty Array [nízké]
# $ T0 obsahuje základní adresa
# $ T2 obsahuje výpočty pro pole
# $ T3 obsahuje pole
# $ T4 obsahuje výpočty pro pole
# $ T5 obsahuje pole
sub $ SP, $ sp, 16
sw $ S0, 0 ($ sp)
sw $ s1, 4 ($ sp)
sw $ s2, 8 ($ sp)
sw $ ra, 12 ($ sp)
la $ t0, pole
začíná:
pohybovat $ S0, $ a1
pohybovat $ s1, $ a2
mul $ t1, $ a1, 4
Přidat $ t1, $ t0, $ t1
LW $ s2, 0 ($ t1)
while_condition:
BGE $ S0, $ s1, end_while
mul $ t2, $ s1, 4
Přidat $ t2, $ t0, $ t2
LW $ T3, 0 ($ t2)
while_condition_2:
ble $ t3, $ s2, end_while_2
sub $ s1, $ s1, 1
j while_condition_2
end_while_2:
while_condition_3:
BGE $ S0, $ s1, end_while_3
mul $ t4, $ S0, 4
Přidat $ t4, $ t0, $ t4
LW $ T5, 0 ($ t4)
bgt $ T5, $ s2, end_while_3
addì $ S0, $ S0, 1
j while_condition_3
end_while_3:
if_2:
BGE $ S0, $ s1, end_if_2
mul $ t4, $ S0, 4
Přidat $ t4, $ t0, $ t4
LW $ a0, 0 ($ t4)
mul $ t2, $ s1, 4
Přidat $ t2, $ t0, $ t2
LW $ a1, 0 ($ t2)
JAL swap
end_if_2:
end_while:
mul $ t1, $ a1, 4
Přidat $ t1, $ t0, $ t1
mul $ t2, $ s1, 4
Přidat $ t2, $ t0, $ t2
LW $ T3, 0 ($ t2)
sw $ T3, 0 ($ t1)
sw $ s2, 0 ($ t2)
pohybovat $ v0, $ s2
LW $ S0, 0 ($ sp)
LW $ s1, 4 ($ sp)
LW $ s2, 8 ($ sp)
LW $ ra, 12 ($ sp)
addì $ sp, $ sp, 16
end_Partition: