Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi A - F > Architettura degli elaboratori e delle reti > Esercizio ricorsione
  Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
pintu
.illuminato.

User info:
Registered: Jul 2010
Posts: 248 (0.05 al dì)
Location: Novara
Corso: informatica
Anno:
Time Online: 2 Days, 0:46:30 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged
Esercizio ricorsione

é un vecchio esercizio trovato qui su dsy. Ho provato a risolverlo. Può andare??

F(n) = n se n < 2
F(n) = F(n/2) * F(n/3) altrimenti

F: bge $a0, 2, funct # se n >= 2 salta a funct
move $v0, $a0 #se n<2 , $v0 = n (ritorna n)
jr $ra


funct: addi $sp $sp -12
sw $ra, 0($sp)
sw $a0, 4($sp)
div $a0, $a0, 2 #n = n/2
jal F #richiamo F con parametro n/2
sw $v0, 8($sp) #metto nello stack il risultato parziale
div $a0, $a0, 3 #n = n/3 (qui $a0 contiene sempre n oppure ora contiene n/2?)
jal F #richiamo F con parametro n/3
lw $t0, 8($sp) #recupero il risultato parziale dallo stack
mul $v0, $v0, $t0
lw $ra, 0($sp)
lw $a0, 4($sp)
lw $v0, 8($sp)
addi $sp, $sp, 12
jr $ra

25-02-2012 14:28
Click Here to See the Profile for pintu Click here to Send pintu a Private Message Find more posts by pintu Add pintu to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
uLori
.illuminato.

User info:
Registered: Feb 2010
Posts: 159 (0.03 al dì)
Location: Milano
Corso: Informatica
Anno: IV
Time Online: 15:19:53 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ciao, allora è abbastanza giusto secondo me, ma ci sn degli errori:

funct: addi $sp $sp -12
sw $ra, 0($sp)
sw $a0, 4($sp)
div $a0, $a0, 2 #n = n/2 il risultato della div finisce in mflo, da li lo devi spostare..e la div non puoi farla così la devi fare tra 2 registri, quindi devi mettere il valore 2 in un registro e poi dividere..
jal F #richiamo F con parametro n/2
sw $v0, 8($sp) #metto nello stack il risultato parziale

qui devi ricaricare nuovamente $a0 con il valore originale se no ti utilizzerà quello modificato precedentemente e tutto l'esercizio sballa
lw $a0, 4($sp)

div $a0, $a0, 3 #n = n/3 (qui $a0 contiene sempre n oppure ora contiene n/2?)

il risultato di una div o di una mult vanno a finire nel registro mflo..da li lo devi spostare facendo mflo $.. e il registro dove vuoi metterlo

jal F #richiamo F con parametro n/3
lw $t0, 8($sp) #recupero il risultato parziale dallo stack
mul $v0, $v0, $t0 non è mul ma mult :) e il risultato si trova in mflo..quindi non va scritta così, ma mult $v0,$t0

lw $ra, 0($sp)
lw $a0, 4($sp) #non serve che ricarichi $a0 tanto ora non ti serve piu
lw $v0, 8($sp) #questa non ha senso..
addi $sp, $sp, 12
jr $ra

Last edited by uLori on 27-02-2012 at 11:27

27-02-2012 11:24
Click Here to See the Profile for uLori Click here to Send uLori a Private Message Find more posts by uLori Add uLori to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
pintu
.illuminato.

User info:
Registered: Jul 2010
Posts: 248 (0.05 al dì)
Location: Novara
Corso: informatica
Anno:
Time Online: 2 Days, 0:46:30 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

grazie uLori ;) comunque ho fatto oggi l'esame dovrebbe essere andato bene attendo i risultati!

27-02-2012 18:52
Click Here to See the Profile for pintu Click here to Send pintu a Private Message Find more posts by pintu Add pintu to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 01:55.    Post New Thread    Post A Reply
  Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.032 seconds (74.99% PHP - 25.01% MySQL) con 28 query.