|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2013
Messaggi: 68
|
Array in Assembly MIPS
Ciao a tutti ho un problema da un po' che non riesco a risolvere. Riesco a dichiarare array in Mips ma solo quelli con dei valori "precisi" già assegnati, ad esempio:
Codice:
.float 1.0,2.0 Codice:
float A[100] Codice:
int B[10][2] |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Napoli
Messaggi: 702
|
Se ricordo bene basta aggiungere:
Codice:
.space 100
__________________
» Asus VivoBook Pro « - » Samsung Book Pro 360 « - » MacBook Pro Retina 15 (Mid-2014) « » iPhone X 64GB « - » Samsung Galaxy S21 Ultra 5G « » HTPC with Win11 & Plex « - » Xbox Series X « - » PS4 « - » SteamDeck « |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2013
Messaggi: 68
|
quindi per quanto riguarda gli esempi sarebbe:
Codice:
A: .space 100 B: .space 20 |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jul 2012
Messaggi: 42
|
ciao, allora innanzitutto devi vedere quanto è grande una variabile di tipo float nella tua architettura, comunque normalmente un numero float occupa 8 byte..
A questo punto prova a cambiare la direttiva di .align, che dovrà essere align 3 poiché dovrai allineare il prossimo dato ad un indirizzo multiplo di 2^3, cioé 8 visto che parliamo di float.. A questo punto puoi sistemare le dimensioni delle variabili che come ha detto oce: "la dimensione devi calcolarla in bytes necessari per occupare il numero di elementi che vuoi utilizzare". Ok visto che hai float A[100] per dichiarare quest'ultimo dovrai scrivere aa: .space 800 mentre per float B[10][2] che alla fine, come hai notato è come scrivere B[20], visto che alla fine è una matrice che contiene 20 elementi e visto che le aree di memoria sono ugualmente contigue. Quindi avrai: bb: .space 160 Ora penso di aver scritto informazioni corrette ma non ne sono sicuro al 100%, visto che devo dare l'esame sul mips tra un mese e che devo ancora iniziare a studiare.... edit: ops mi sono accorto ora rileggendo, prima di chiudere la scheda, che hai chiesto come si dichiari int B[10][2] e non float B[10][2] come avevo scritto.... XD Bé in questo caso dovrai scrivere: .align 2 #questo perché ora hai davanti un array di interi e l'alineamento dovrà essere di 2^2, cioé ora dovrai muoverti di 4 byte alla volta.. #poi bb: .space 80 #questo perché hai un vettore di 20 interi ed ogni intero occupa 4 byte Ok spero di non aver creato confusione e ripeto: non sono certo che le mie siano informazioni corrette al 100%.. :P Notte..
__________________
Alimentatore: 550 Watt (non ricordo la marca); Cpu: AMD Phenom HD 8450 Triple-Core Processor; Gpu: Ati Radeon HD 4850 (512 MB); Mobo: non ricordo, ma il computer di base è un "Acer Aspire M3200"; Ram: 4GB ddr2; Monitor: dual monitor di LG Flatron L222WS; Accessori: 3 ventole aggiuntive (fronte, retro, lato). Ultima modifica di L'UnicoVeroArcangelo : 12-08-2013 alle 00:40. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2013
Messaggi: 68
|
Ok, grazie a tutti delle risposte!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:58.



















