  | 
 |   |   
  | 
           uLori | 
        
                
                
                |   1) si n verrà salvato in $a0 e h in $a1 però lo  ... | 
                  24-02-2012 10:39 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	uLori  | 
       
     
	.illuminato. 
	 
     
	
    Registered: Feb 2010 
	Posts: 159 (0.03 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: IV 
Time Online: 15:19:53 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           pintu | 
        
                
                
                |   Ma devo caricare $v0 nello stack al'inizio della p ... | 
                  24-02-2012 10:50 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	pintu  | 
       
     
	.illuminato. 
	
     
	
    Registered: Jul 2010 
	Posts: 248 (0.04 al dì) 
	Location: Novara 
	Corso: informatica 
	Anno:  
Time Online: 2 Days, 0:46:30 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           pintu | 
        
                
                
                |   Una cosa..se io per eseguire il test incremento di ... | 
                  24-02-2012 10:57 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	pintu  | 
       
     
	.illuminato. 
	
     
	
    Registered: Jul 2010 
	Posts: 248 (0.04 al dì) 
	Location: Novara 
	Corso: informatica 
	Anno:  
Time Online: 2 Days, 0:46:30 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           pintu | 
        
                
                
                |   Ho fatto due modifiche ma non sono ancora sicuro!
 ... | 
                  24-02-2012 11:23 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	pintu  | 
       
     
	.illuminato. 
	
     
	
    Registered: Jul 2010 
	Posts: 248 (0.04 al dì) 
	Location: Novara 
	Corso: informatica 
	Anno:  
Time Online: 2 Days, 0:46:30 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           uLori | 
        
                
                
                |   no $v0 è un registro non devi preparare lo stack  ... | 
                  24-02-2012 12:18 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	uLori  | 
       
     
	.illuminato. 
	 
     
	
    Registered: Feb 2010 
	Posts: 159 (0.03 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: IV 
Time Online: 15:19:53 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           pintu | 
        
                
                
                |   ah ok ho capito grazie, sempre gentilissimo! :) pe ... | 
                  24-02-2012 13:54 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	pintu  | 
       
     
	.illuminato. 
	
     
	
    Registered: Jul 2010 
	Posts: 248 (0.04 al dì) 
	Location: Novara 
	Corso: informatica 
	Anno:  
Time Online: 2 Days, 0:46:30 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           uLori | 
        
                
                
                |   si esatto $t0 usalo come vuoi, ma ricorda che dura ... | 
                  24-02-2012 14:40 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	uLori  | 
       
     
	.illuminato. 
	 
     
	
    Registered: Feb 2010 
	Posts: 159 (0.03 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: IV 
Time Online: 15:19:53 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           pintu | 
        
                
                
                |   quando o se hai tempo puoi postare la tua soluzion ... | 
                  24-02-2012 14:54 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	pintu  | 
       
     
	.illuminato. 
	
     
	
    Registered: Jul 2010 
	Posts: 248 (0.04 al dì) 
	Location: Novara 
	Corso: informatica 
	Anno:  
Time Online: 2 Days, 0:46:30 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         quando o se hai tempo puoi postare la tua soluzione? o comunque come lo risolveresti? 
        
        
        
         | 
 
        | 
        24-02-2012 14:54 | 
		
         | 
 
 
 |   
 |   |  
   | 
           uLori | 
        
                
                
                |   io l'ho risolto così, non è prefetto perchè se  ... | 
                  27-02-2012 11:40 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	uLori  | 
       
     
	.illuminato. 
	 
     
	
    Registered: Feb 2010 
	Posts: 159 (0.03 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: IV 
Time Online: 15:19:53 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |  
   | 
           pintu | 
        
                
                
                |   Sperando sia utile a qualcuno, posto il testo dell ... | 
                  27-02-2012 18:54 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	pintu  | 
       
     
	.illuminato. 
	
     
	
    Registered: Jul 2010 
	Posts: 248 (0.04 al dì) 
	Location: Novara 
	Corso: informatica 
	Anno:  
Time Online: 2 Days, 0:46:30 [...] 
Status: Offline
     
    	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 | 
		
         | 
 
 
 |   
 |   |   
  | 
	
	
	
	
		| All times are GMT. The time now is 09:46. | 
                
 | 
                   | 
		  | 
		   | 
		  | 
	 
	 
	
	 | 
 
 
 |   
 |   |   
    
	
 
 
	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
	 | 
 
 
 |  
  | 
	
	 
	 | 
 
 
 
 | 
 
 
   |