Announcement

Collapse
No announcement yet.

Operazioni su vettori

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Operazioni su vettori

    Semplice programma mips.
    Creazione di due array, uno da 10 elementi e un altro da 5.
    il contenuto del secondo vettore dovrà rispettare tale regola
    b[i]=a[2i]+a[2i+1]
    Ecco il codice Mips. Da notare il salto che esegue la beq e la bne. La costante nei 16 bit dell'istruzione I deve essere sommata al program counter ( dopo la moltiplicazione per 4). Quindi in realtà dare l'etichetta al salto di tot istruzioni è formalmente errato. In realtà essendo PC Relative bisognerebbe indicare direttamente il numero di istruzioni dal saltare in avanti o all'indietro. In questo caso, tenstando un simulatore mips ho dovuto modificare la sintassi per indicare la cella di memoria dove continuare.
    PHP Code:
    #conversioni istruzioni da c:# creazione di un vettore a di 10 elementi e b da 5
    # riempire a con elementi da 0 a 9
    # b[i]=a[2i]+a[2i+1];
    #set registri
    # $1=i
    # $2=j
    # $3=spiaz i
    # $4=spiaz j
    # $5=A=1500 a 1539
    # $6=B=1540 a 1559
    # $7= a + spiaz i / load a[i]
    # $8= temp slt
    # $9= grandezza vettore a = 9
    # $10= grandezza vettore b= 4
    # $11= registro con 1
    # $12 = temp somma
    # $13= b + spiaz i
    #
    %start 1000
            add 
    $1,$0,$# inizializzo i a 0
            
    add $2,$0,$# inizializzo j a 0
            
    addi $5,$0,1500 # inizio vettore a
            
    addi,$6,$0,1540 # inizio vettore b
            
    addi $9,$0,# grandezza vettore a
            
    addi $10,$0,# grandezza vettore b
            
    addi $11,$0,# inizializzo registro con 1
    Salto1slt $8,$9,$# verifica se 9<i
            
    beq $8,$11,Salto2 # se 9<i salta
            
    add $3,$1,$# spiaz i
            
    add $3,$3,$3
            add 
    $7,$5,$# somma di a + offset i
            
    sw $1,0($7)  # scrittura in a[i]
            
    addi $1,$1,# incremento di i
            
    j Salto1        #salto al ciclo
    Salto2add $1,$0,$# inizializzazione i a 0
    Salto3slt $8,$10,$# verifica se 4<i
            
    beq $8,$11,Salto4 # se 4<i salta
            
    add $3,$1,$# spiaz i
            
    add $3,$3,$3
            add 
    $2,$0,$# j=i
            
    add $2,$2,$# j=2i
            
    add $4,$2,$# spiaz j
            
    add $4,$4,$4
            add 
    $7,$5,$# temp a = a+2i
            
    lw $7,0($7# temp a = a[2i]
            
    add $12,$0,$# temp somma= 0 + a[2i]
            
    addi $4,$4,# spiaz j+1
            
    add $7,$5,$# temp a = a+(2i+1)
            
    lw $7,0($7# temp a = a[2i+1]
            
    add $12,$12,$# temp somma = temp somma + a[2i+1]
            
    add $13,$6,$# b+ spiaz i
            
    sw $12,0($13# b[i]=a[2i]+a[2i+1]
            
    addi $1,$1,1
            j Salto3
    Salto4
    add $0,$0,$
    | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio
Working...
X

Google Profile


My name is Giovanni Di Grezia, but people call me xgiovio.

Here is my homepage:.

I'm a VFX Artist and Software Developer.

Giovanni Di Grezia