2010-04-12 4 views
2

Я выполнил следующий фрагмент кода на MIPS MARS simulator. Этот симулятор мало ориентирован. Таким образом, результаты таковы:MIPS сборка: большая и маленькая конечная путаница

lui $t0,0x1DE    # $t0 = 0x01DE0000 
ori $t0,$t0,0xCADE  # $t0 = 0x01DECADE 
lui $t1,0x1001   # $t1 = 0x10010000 
sw  $t0,200($t1)   # $t1 + 200 bytes = 0x01DECADE 
lw  $t2,200($t1)   # $t2 = 0x01DECADE 

Так на Little Endian MIPS тренажере, значение $ t2 в конце программы 0x01DECADE. Если бы этот симулятор был большой эндией, какова была бы ценность? Будет ли это 0xDECADE01 или все равно будет 0x01DECADE?

ответ

6

Это будет то же самое: порядок байтов в памяти будет отличаться, но вы увидите, что если вы загрузили одиночные байты из 200 ($ t1), 201 ($ t1), 202 ($ t1) и 203 ($ t1)

+0

Спасибо Крис. В этом есть смысл. Было бы неплохо, если бы кто-то мог запустить SPIM на большой машине для проверки подлинности. – Barney

+1

@ Барни: Не нужно проверять. Это стандартная штуковина. Магазин ведет себя в зависимости от цели, загрузка делает точно противоположную нагрузке. выполняя их один за другим с одинаковым размером данных, никогда не изменяет значение регистра. – Bahbar

+0

@ Бахбар: Спасибо. «загрузка делает точно противоположную нагрузке». Вы имели в виду, что «загрузка действительно противоположна магазину»? – Barney

Смежные вопросы