Простой вопрос программирования MIPS [массив, lw] - PullRequest
0 голосов
/ 22 декабря 2010

Итак, в этом фрагменте кода я пытаюсь выяснить значения $ t2 и $ t3 в HEX. Я получаю ответ $ t2 = 0x30 и $ t3 0x3C. Тем не менее, ответ сзади - $ t2 = 0x130, $ t3 = 0x13C. Может кто-нибудь объяснить ??

    .data
x:  .byte 1, 2, 3, 4, 5
y:  .word 19, 20, 25, 30, 35

    .text
    addi $t0, $0, 8
    lw $t1, x($t0)
    sll $t2, $t1, 4
    ori $t3, $t2, 12

1 Ответ

2 голосов
/ 22 декабря 2010

Как вы получили свой ответ? Я довольно ржавый с MIPS, и это основано на том, что я помню из универа.

x указывает на байт с данными 1. На машине с прямым порядком байтов x + 5 обозначает конец 4-байтового слова (с данными 19), а x + 8 обозначает начало. Таким образом, 19 (10011) загружается в $ t1, смещено влево на 4 до 100110000 (304 или 0x130). Наконец, добавляется 12, чтобы получить 0x13C.

Дайте мне знать, если вы что-то не поняли. И это помогает нарисовать диаграмму:)

...