|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2005
Messaggi: 54
|
Struttura Dati in MIPS - alloc dinam
Salve, sto realizzando un piccolo progettino in assembler secondo l'architettura MIPS usando il simulatore SPIM.
Ora vorrei implementare alcuni punti del progettino utilizzando delle strutture dati (chiamati anche aggretati in MIPS) allocate dinamicamente attraverso la chiamata di sistema (syscall) con codice 9, chiamata SBRK. A tale chiamata di sistema va passato come argomento nel registro $a0 la dimensione in byte del blocco da allocare e ritorna nel registro $v0 il puntatore al blocco allocato. Ora vorrei capire meglio come allocare una struttura dati seguendo questa chiamata di sistema. Precisamente avrei bisogno di un piccolo aiuto : - sull'indicazione della dimensione del blocco di memoria da allocare (se ho intenzione di allocare una struttura con 2-3-4 campi di word per esempio); - il modo in cui poter utilizzare il puntatore alla struttura dati restituito dalla chiamata di allocazione dinamica e come interagire tra i campi; - sul metodo (nome istruzione) dell'eventuale cancellazzione in una lista di elementi i quali sono aggregati (o strutture come le si voglia chiamare). Vi assicuro che ci sto ragionando da alcuni giorni su e la scarsa quantità o qualità di manuali e guide (ovviamente quasi tutte in inglese ) reperibili in rete non mi hanno permesso di andare avanti + di tanto. A breve vi posterò inoltre il codice di prova relativo ai tentativi di implementazione. In attesa di una risposta vi ringrazio anticipatamente e vi porgo i miei distinti saluti. Bulkideas
__________________
... making order... --------------------------------- Rendi più sicuro il tuo mulo! Visita l'Enetec Emule Security Center |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
quella syscall funziona tipo malloc in c!
Quote:
conti i byte che devi allocare e il numero finale lo metti in $a0 esempio: struttura dati con 2 word (1word = 4byte): Codice:
addi $a0, $0, 8 Quote:
in $v0 c'è l'indirizzo del primo byte allocato in mem...quindi viene facile...considera la tua struttura come un array...in questo caso un array di word! quindi a partire dall'indirizzo in $v0 hai la tua prima word, 4 byte dopo la tua seconda word e così via...! esempio: in $v0 c'è sto famoso indirizzo: Codice:
addi $v0, $0, 9 addi $a0, $0, 8 syscall sw $t0, 0($v0) # in $t0 c'è la prima word sw $t1, 4($v0) # in $t1 c'è la seconda word
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" Ultima modifica di Oceans11 : 30-05-2007 alle 10:03. Motivo: ho dimenticato i tag code :D |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:49.



















