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 > Preparazione al Laboratorio F49
Pages (7): « First ... « 3 4 5 6 [7]   Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
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

1) si n verrà salvato in $a0 e h in $a1 però lo stack lo devi preparare da 16 e non 12 perchè devi lasciare un altro spazio proprio per salvare i risultati parziali che come nel punto 3 dici di non saper dove mettere

2) io ho incrementato $a1 per il test. i registra $s non li ho mai usati per nessun esercizio

3) come detto prima, per salvare i risultati parziali devi mettere il contenuto di $v0 nello stack così: sw $v0, 0($sp) in questo caso è zero perchè l'ultimo spazio libero per esempio..poi dipende da dove salvi i vari $a0,$ra ecc..

poi per ricaricare quel valore per fare il conto usi lw $t0, 0($sp)

vai a ricaricarlo in una variabile temporanea $t0 recuperandola dallo spazio 0 dello stack

24-02-2012 10:39
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

Ma devo caricare $v0 nello stack al'inizio della procedura quando carico gli altri registri, oppure solo quando ho il risultato parziale? Madò che confusione :(

24-02-2012 10:50
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
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

Una cosa..se io per eseguire il test incremento direttamente $a1 ($a1 = h), quando poi vado a chiamare P(n-1, h) , h non avrà più il suo valore originario ma sarà h = h+1 no? quindi in teoria è sbagliato..

24-02-2012 10:57
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
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

Ho fatto due modifiche ma non sono ancora sicuro!

P(n, h) = P(n-1, h) + P(n-h-1, h) se n > h+1
P(n, h) = n+1 altrimenti


P: addi $sp, $sp, -16 #spazio per 3 variabili
sw $ra, 0($sp) #salvo il registro di ritorno
sw $a0, 4($sp) #$a0 = n
sw $a1, 8($sp) #$a1 = h
sw $v0, 12($sp) #salvo reg $v0 <------

addi $a1, $a1, 1 #$s0 = h + 1 <--------
bgt $a0, $a1, calc_P #se n > h+1 salta a calc_P
addi $a0, $a0, 1 # n = n + 1
move $v0, $a0 #metto n+1 in $v0 <------------
jr $ra

calc_P: subi $a0, $a0, 1 #n = n-1
jal P #chiamo P(n-1, h)
lw $t0, 12($sp) #risultato parziale in $t0 <-----------------
sub $a0, $a0, $a1 #n = n - h
subi $a0, $a0, 1 #n = n -1
jal P #chiamo P(n-h-1, h)
add $v0, $v0, $t0 #sommo i risultati parziali <--------------
lw $a0, 4($sp) #ripristino reg $a0
lw $ra, 0($sp) #ripristino return address
lw $a1, 8($sp) #ripristino reg $a1
lw $v0, 12($sp) #ripristino reg $v0 <-----------------
addi $sp, $sp, 16 #ripristino stack
jr $ra

24-02-2012 11:23
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

no $v0 è un registro non devi preparare lo stack salvandolo xkè all inizio è vuoto..

fai così
addi $sp, $sp, -16 #spazio per i 2 val passati, 1 per i ris temp, e 1 per il reg di ritorno
sw $ra, 0($sp) #salvo il registro di ritorno
sw $a0, 4($sp) #$a0 = n
sw $a1, 8($sp) #$a1 = h

lasi la posizione 12 dello stack pointer per salvare il valore contenuto in $v0 successivamente dopo che avrai fatto i calcoli e $v0 conterrà qualcosa

24-02-2012 12:18
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

ah ok ho capito grazie, sempre gentilissimo! :) per quanto rigurada $t0 invece posso usarlo tranquillamente senza doverlo mettere nello stack perchè è un registro temporaneo giusto?

24-02-2012 13:54
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

si esatto $t0 usalo come vuoi, ma ricorda che dura solo fino alla prima jal poi perde il valore...quindi ti conviene caricare un valore in $t0 per poi usarlo subito per un calcolo..

24-02-2012 14:40
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

quando o se hai tempo puoi postare la tua soluzione? o comunque come lo risolveresti?

24-02-2012 14:54
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

io l'ho risolto così, non è prefetto perchè se no avrei preso 30 ma comunque almeno la base c'è :

P: addi $a1,$a1,1 #h+1
blt $a0,$a1,fine #salto se n<h a fine

addi $sp,$sp,-16
sw $ra,12($sp)
sw $a0,8($sp)
sw $a1,4($sp)

addi $a0,$a0,-1 #n-1
jal P
sw $v0,0($sp) #salvo il risultato nello stack
lw $a0,8($sp) #ricarico n originale
lw $a1,4($sp) #ricarico h
addi $a1,$a1,-1 #h-1
sub $a0,$a0,$a1 #n-h
lw $a1,4($sp) #ricarico h originale
jal P
lw $t0,4($sp) #carico il ris della prima parte di procedura
add $v0,$v0,$t0 #effettuo la somma conclusiva
lw $ra,12($sp)
addi $sp,$sp,16
jr $ra

fine: addi $a0,$a0,1 #n+1
jr $ra

27-02-2012 11:40
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

Sperando sia utile a qualcuno, posto il testo dell'esame di oggi 27/02:

M(n) = 3*M(n-1) - 2*M(n-2) se n > 3
M(n) = 2^(n+4) - 20 altrimenti

27-02-2012 18:54
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 07:47.    Post New Thread    Post A Reply
Pages (7): « First ... « 3 4 5 6 [7]   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.039 seconds (82.15% PHP - 17.85% MySQL) con 25 query.