Указатель сборки MIPS на указатель?
Вопрос
Думаю, я знаю, как поступить в этом случае, но мне просто хочется убедиться, что я все сделал правильно.Предположим, у вас есть следующий код 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-код и не просмотреть файл списка или выходные данные сборки?Я всегда так делаю, когда сомневаюсь.
Не связан с StackOverflow