Получение значения из слова загрузки, которое дает адрес памяти

#assembly #mips

#сборка #mips

Вопрос:

итак, когда я загружаю word, значение, которое он мне выдает, является шестнадцатеричным значением, которое должно быть адресом для вещи, которую я хочу. Как бы я перешел по указанному мне адресу. Пример: lw $t0, 0($a0)

$ t0 выдал бы мне 0x10010058, который является адресом памяти нужного мне значения, как бы я перешел к адресу памяти 0x10010058?

Комментарии:

1. Использовать $t0 в качестве адреса для другого lw , очевидно. Посмотрите на выходные данные компилятора C для функции linked-list next для примера отслеживания указателей в MIPS.

2. Вы продемонстрировали, что знаете, как загружать слово с адреса, хранящегося в $a0 . Не должно быть так сложно понять, как загрузить word с адреса, хранящегося в $t0 . (Я предполагаю, что вы изучили lw инструкцию в целом, а не только одну конкретную инструкцию lw $t0, 0($a0) . Если вы раз за разом изучаете отдельные инструкции, то пройдет немало времени, прежде чем вы выучите все 4 миллиарда инструкций …)

Ответ №1:

Я не уверен, что вы подразумеваете под «перейти к адресу памяти», но если вы хотите получить доступ к значению, хранящемуся внутри адреса памяти 0x10010058, вы бы просто использовали sw register_to_store, 0 (t0). это сохраняет значение памяти по адресу t0 в регистре. Например, если бы вы хотели сохранить значение для регистрации t2, это было бы sw, t2, 0 (t0).

Конечно, вы должны вызвать это после вызова lw.