#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.