2008-09-19 14 views
4

Je pense que je sais comment gérer cette affaire, mais je veux juste m'assurer que je l'ai bien. Supposons que vous avez le code C suivant:Pointeur d'assemblage MIPS à un pointeur?

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

P contient une adresse qui pointe vers un lieu en mémoire qui a une autre adresse. Je voudrais modifier la deuxième adresse. Donc, le code 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 

Est-ce ainsi que vous le feriez?

Répondre

4

Oui, c'est exact pour autant que je sache. Cela aurait été plus facile si vous utilisiez les mêmes noms de variables (par exemple, des symboles au lieu de noms de registre durs). Pourquoi n'avez-vous pas simplement compilé le code-c et regardé le fichier-liste ou l'assemblage-sortie? Je fais toujours ça en cas de doute.