Мой вопрос: верна ли эта инструкция? Если это правильно, может кто-нибудь сказать мне, почему?
Я только что посмотрел руководство для процессора R4400, реального процессора MIPS:
Инструкция 0x8C88FFFE означает: lw $8,-2($4)
(а не lw $8,-8($4)
, поскольку другие типы ЦП интерпретируют константу -2
в операциях со словами).
Так что, по крайней мере, инструкция существует.
Следующее, что говорится в руководстве, это то, что ему не разрешен доступ к невыровненной памяти. Это означает, что ($x)+a
должно быть кратно 4 в инструкции lw $y,a($x)
.
Другими словами: если ($4)=0x1002
, то lw $8,-2($4)
получит доступ к адресу 0x1000, кратному 4. Нет проблем.
Однако, в этом случае lw $8,4($4)
будет обращаться к адресу 0x1006. И 0x1006 не кратно 4. Это будет проблемой, хотя смещение кратно 4.