Assemblée MIPS Pointer-to-a Pointer?
Question
Je pense que je sais comment gérer cette affaire, mais je veux juste m'assurer que tout est bien fait. Supposons que vous ayez le code C suivant:
int myInt = 3;
int* myPointer = &myInt;
int** mySecondPointer = &myPointer;
P contient une adresse qui pointe vers un emplacement en mémoire qui a une autre adresse. J'aimerais 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?
La solution
Oui, c'est ce que je peux dire. Cela aurait été plus facile si vous utilisiez les mêmes noms de variables (par exemple, des symboles à la place des noms de registre absolus).
Pourquoi n'avez-vous pas simplement compilé le code C et examiné le fichier liste ou le résultat de l'assemblage? Je fais toujours cela en cas de doute.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow