високо ниво език превод на МИЦ

B

boogpicker

Guest
хей,
Аз съм нов в МИЦ и се опитват да преведат Бързо сортиране алгоритъм в МИЦ.Проблемът е, че когато го зареди в PCSpim, той получава прекъсна и просто продължава да работи, докато близо Spim.мога кой да гледам на това, което имам и да видите дали можете да разбера, когато неговата получаване затвори?
О, и аз го didn't коментар още.
. данни
масив:. дума 8,2,7,1,5,6,3,4,9,0
Дължина:. дума 10
. текст
. globl основните

начало:
La $ A0, масив
ход $ a1, $ нула
LW $ A2, дължина
под $ A2, $ A2, 1
JAL Бързо сортиране

Li $ V0, 10
syscall################################################## ##############

Бързо сортиране:

# $ A0 съдържа масив
# $ A1 съдържа 0
# $ A2 съдържа N-1
# $ S0 съдържа ниско
# $ S1 съдържа висока
# $ S2 съдържа pivotPosition

под $ SP, $ SP, 16
SW $ S0, 0 ($ SP)
SW $ s1, 4 ($ SP)
SW $ S2, 8 ($ SP)
SW $ кв., 12 ($ SP)
ход $ S0, $ a1
ход $ s1, $ a2
, ако: bge $ S0, $ s1, end_if
JAL Деление
ход $ S2, $ V0
под $ A2, $ S2, 1
JAL Бързо сортиране
ход $ A2, $ s1
допълнителни $ a1, $ S2, 1
JAL Бързо сортиране
end_if:
LW $ S0, 0 ($ SP)
LW $ s1, 4 ($ SP)
LW $ S2, 8 ($ SP)
LW $ кв., 12 ($ SP)
допълнителни $ SP, $ SP, 16
младши $ кв.

end_QuickSort:

################################################## #############

Разменени:
ход $ t0, $ A0
ход $ T1, $ a1
SW $ T1, 0 ($ t2)
SW $ t0, 0 ($ t2)
SW $ t0, 0 ($ t2)
end_Swap:

################################################## #############

Подраздел:

# $ A0 съдържа масив
# $ S0 съдържа ляво
# $ S1 съдържа право
# $ S2 съдържа ос
# $ A1 съдържа ниско
# $ A2 съдържа висока
# $ T1 изчисления масив [ниски]
# $ T0 съдържа база адрес
# $ T2 съдържа изчисления за масив [право]
# $ T3 съдържа масив [право]
# $ T4 съдържа изчисления за масив [ляво]
# $ T5 съдържа масив [ляво]

под $ SP, $ SP, 16
SW $ S0, 0 ($ SP)
SW $ s1, 4 ($ SP)
SW $ S2, 8 ($ SP)
SW $ кв., 12 ($ SP)
La $ t0, масив
започва:
ход $ S0, $ a1
ход $ s1, $ a2
MUL $ T1, $ a1, 4
добави $ t1, $ t0, $ T1
LW $ S2, 0 ($ t1)
while_condition:
bge $ S0, $ s1, end_while
MUL $ t2, $ s1, 4
добави $ t2, $ t0, $ t2
LW $ t3, 0 ($ t2)
while_condition_2:
Регистриран $ T3, $ s2, end_while_2
под $ s1, $ s1, 1
J while_condition_2
end_while_2:

while_condition_3:
bge $ S0, $ s1, end_while_3
MUL $ T4, $ s0, 4
добави $ t4, $ t0, $ t4
LW $ Т5, 0 ($ T4)
BGT $ Т5, $ s2, end_while_3
допълнителни $ s0, $ s0, 1
J while_condition_3
end_while_3:

if_2:
bge $ S0, $ s1, end_if_2
MUL $ T4, $ s0, 4
добави $ t4, $ t0, $ t4
LW $ A0, 0 ($ T4)
MUL $ t2, $ s1, 4
добави $ t2, $ t0, $ t2
LW $ a1, 0 ($ t2)
JAL Разменени
end_if_2:

end_while:
MUL $ T1, $ a1, 4
добави $ t1, $ t0, $ T1
MUL $ t2, $ s1, 4
добави $ t2, $ t0, $ t2
LW $ t3, 0 ($ t2)
SW $ t3, 0 ($ t1)
SW $ S2, 0 ($ t2)
ход $ V0, $ S2

LW $ S0, 0 ($ SP)
LW $ s1, 4 ($ SP)
LW $ S2, 8 ($ SP)
LW $ кв., 12 ($ SP)
допълнителни $ SP, $ SP, 16
end_Partition:

 
Здрасти

Ако вече имате Hi-ниво програма, така че не трябва да го трансформира в МИЦ събрание

Просто използвайте MIPS компилатор GCC.
може да се справи с някои съставяне на грешки, но тя може да се преодолее

ако имате нужда от aeembly да симулира над SPIM прав поставям ССЗ за генериране на код събрание

Салам
Hossam Alzomor
www.edaboard.com

 
, който е:

МИЦ-елф-GCC S-mips1

можете да използвате тези възможности.
но кодът събрание не ще съдържа "syscall" изявления.Той ще съдържа реалните разговори към библшотеката примитиви (аз мисля).

Изглежда, че искате да се тълкува и симулиране на вашия събрание файл с spim.

the_penetratorŠ

 

Welcome to EDABoard.com

Sponsor

Back
Top