Вопрос

Думаю, я знаю, как поступить в этом случае, но мне просто хочется убедиться, что я все сделал правильно.Предположим, у вас есть следующий код C:

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

P содержит адрес, указывающий на место в памяти, имеющее другой адрес.Я хотел бы изменить второй адрес.Итак, код 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

Вы бы сделали это именно так?

Это было полезно?

Решение

Да, это правильно, насколько я могу судить.Было бы проще, если бы вы использовали те же имена переменных (например,символы вместо жестких имен регистров).

Почему бы вам просто не скомпилировать c-код и не просмотреть файл списка или выходные данные сборки?Я всегда так делаю, когда сомневаюсь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top