Я пытаюсь понять приложение MIPS, но я немного запутался следующими инструкции:нужны разъяснения по памяти MIPS адресации в липидном весе
la $k1, off_9FC005A8
lw $k1, (off_9FC005D4 - 0x9FC005A8)($k1)
jr $k1
В моем понимании это было бы равносильно следующим псевдо код C:
$k1 = *off_9FC005A8;
$k1 = *($k1 + (*off_9FC005D4 - 0x9FC005A8));
Так, зная следующее:
off_9FC005A8: .word 0x9FC01508
off_9FC005D4: .word 0x9FC011B4
Вы бы получить:
$k1 = 0x9FC01508;
$k1 = *($k1 + (0x9FC011B4 - 0x9FC005A8));
Оставляем: $ k1 = 0x9FC02114. Однако это смещение на полпути через блок кода, на который я уже посмотрел и подтвердил правильность. Так я понимаю, что эти инструкции и адреса памяти ошибочны?
Хорошо, но разве это не оставляет меня с $ k1, содержащим 0x9FC02114? Кажется, что это не подходящее место для перехода. – PeterBelm 2010-11-24 10:45:48