Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Spiegazione sull'uso dei vettori in assembly


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 7 risposta/e

#1
R0cKSt4R

R0cKSt4R

    Advanced Member

  • Utente
  • StellaStellaStella
  • 282 Messaggi:
Salve, come da titolo cerco qualcuno che mi spieghi come funzionano i vettori in assembly,
cioè come si alloca lo spazio, come si caricano gli elementi ecc ecc...
grazie...


Immagine inviata

#2
R0cKSt4R

R0cKSt4R

    Advanced Member

  • Utente
  • StellaStellaStella
  • 282 Messaggi:
per piacere raga, almeno ditemi dove posso trovare qualcosa per vedermela da solo.
Immagine inviata

#3
Mr.Hope

Mr.Hope

    Advanced Member

  • Utente
  • StellaStellaStella
  • 627 Messaggi:
Ti ho postato un semplice programma ke facemmo in classe lo scorso anno. Fallo girare su pc spim e vedi se riesci a capirne il funzionamento.

File allegato


Immagine inviata

#4
R0cKSt4R

R0cKSt4R

    Advanced Member

  • Utente
  • StellaStellaStella
  • 282 Messaggi:
ok grazie per l'aiuto.
Immagine inviata

#5
aRbok

aRbok

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1517 Messaggi:
Ti fornisco una breve spiegazione in supporto al file caricato da Mr.Hope.

I vettori vengono allocati sull'area stack; quindi per allocare un vettore col MIPS devi decrementare lo stack pointer(puntatore all'area stack) xchè devi appunto allocare spazio sullo stack. Sapendo che la memoria nel MIPS è indirizzabile per byte( cioè se scrivi 2, spiazzi di 2 byte) e che un intero occupa 4 byte se per esempio devi allocare un vettore di 10 interi devi decrementare sp di 40. Come starting address dell'array potrai assumere
£sp-4 
cioè il primo indirizzo libero sullo stack dato che lo stack pointer punta sempre alla prima cella libera in memoria stack. E devi ricordarti che per accedere all'array devi considerare uno spiazzamento di 4 (perchè è il numero di byte occupati da un intero); se devi accedere al quinto elemento per dire devi sommare 16 allo starting address
Fai ciò che vuoi : sarà tutta la Legge. Amore è la Legge, Amore sotto la Volontà.

#6
R0cKSt4R

R0cKSt4R

    Advanced Member

  • Utente
  • StellaStellaStella
  • 282 Messaggi:
okok comunque. Mr Hope, mi sembra che in alcune istruzioni dove moltiplichi dei registri con dei numeri, usi add e mul a posto di addi e muli, sei sicuro che sia così o hai sbagliato te??

ah poi mi puoi spiegare quando fai
 lw £t0,0(£t0)
come funzione quest'istruzione??

thanks.


edit by arb@k.88
Immagine inviata

#7
aRbok

aRbok

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1517 Messaggi:
l'istruzione lw fa accesso alla memoria

  lw REGISTRODEST,spiazzamento(INDIRIZZOBASE)

e precisamente va a leggere all'indirizzo "INDIRIZZOBASE+spiazzamento"
Questa è l'istruzione fondamentale per leggere i vettori, come INDIRIZZOBASE metti lo starting address e come spiazzamento il numero di byte per cui intendi spiazzare.
Quei numeri per cui MrHope moltiplica come dici ,fanno parte del meccanismo per implementare un ciclo che fa operazioni sul vettore e se ci pensi tutto consegue da quanto ti ho detto in precedenza. Faresti bene però a studiarti meglio tutto il MIPS prima di metterti a programmare; capisci prima bene tutte le singole istruzioni,questo è il mio consiglio.

P.S: non utilizzare il carattere dollaro perchè si confonde con lo script matematico,sostituiscilo con "£".
Fai ciò che vuoi : sarà tutta la Legge. Amore è la Legge, Amore sotto la Volontà.

#8
HDM

HDM

    Advanced Member

  • Utente
  • StellaStellaStella
  • 405 Messaggi:

okok comunque. Mr Hope, mi sembra che in alcune istruzioni dove moltiplichi dei registri con dei numeri, usi add e mul a posto di addi e muli, sei sicuro che sia così o hai sbagliato te??


Da qualche parte ci manca una i vicino alle add, per quanto riguarda la muli non esiste e si usa sempre la mul :P
Immagine inviata




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi