Domanda

Penso di sapere come gestire questo caso, ma voglio solo assicurarmi di averlo fatto bene.Supponiamo che tu abbia il seguente codice C:

int myInt = 3;
int* myPointer = &myInt;
int** mySecondPointer = &myPointer;

P contiene un indirizzo che punta a un posto nella memoria che ha un altro indirizzo.Vorrei modificare il secondo indirizzo.Quindi il codice MIPS:

la $t0, my_new_address
lw $t1, ($a0) # address that points to the address we want to modify
sw $t0, ($t1) # load address into memory pointed to by $t1

È così che lo faresti?

È stato utile?

Soluzione

Sì, è corretto per quanto ne so.Sarebbe stato più semplice se avessi utilizzato gli stessi nomi di variabile (ad es.simboli invece di nomi di registro rigidi).

Perché non hai semplicemente compilato il codice c e dato un'occhiata al file di elenco o all'output dell'assembly?Lo faccio sempre quando ho dei dubbi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top