vysokou úroveň jazykového překladu do mips

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:

 
Ahoj

Pokud již máte hi-úrovni, program, takže nemusíte jej přeložit do mips montáž

stačí použít MIPS kompilátoru gcc.
můžete čelit sestavování chyby, ale to by mohly být překonány

Pokud potřebujete aeembly simulovat přes spim jen nastavit GCC pro generování assembleru

Salam
Hossam Alzomor
www.edaboard.com

 
, že je:

mips-elf-gcc-S-mips1

Můžete použít tyto možnosti.
ale shromáždění kód nebude obsahovat "systémové volání" prohlášení.Bude obsahovat skutečné volání libc primitiv (myslím).

zdá se, že chcete interpretovat a simulovat montáž soubor s spim.

the_penetratorŠ

 

Welcome to EDABoard.com

Sponsor

Back
Top