MIPS с прямым или младшим порядком байтов при кодировании в шестнадцатеричном виде - PullRequest
0 голосов
/ 06 июня 2019

В MIPS1 шестнадцатеричные значения хранятся как младшие или старшие порядковые номера, например, добавьте t1 t2 t3.Будет ли это храниться как 00000001010010110100100000100000 0x014B4820 или 00000100000100101101001010000000 412D280

1 Ответ

2 голосов
/ 06 июня 2019

... или 00000100000100101101001010000000 412D280

Почему вы думаете, что add t1, t2, t3 может храниться так?

В руководствах по CPU (например, в руководствах MIPS) инструкции обычно описываются так:

+--------+-------+-------+-------+-------+--------+
| 000000 | Reg 2 | Reg 3 | Reg 1 | 00000 | 100000 |  ADD
+--------+-------+-------+-------+-------+--------+

И в этом типе рисования старший бит находится на левой стороне, а младший бит на правой стороне.

Это означает, что 00000001010010110100100000100000 или 0x014B4820 является правильным.

Однако это не имеет ничего общего с большим и маленьким порядком байтов!

Большой и младший байты используются для определения того, как байты, 16-битные значения и 32-битные значения связаны в памяти:

Число 0x12345678 хранится как четыре байта 0x12, 0x34, 0x56, 0x78 или как четыре байта 0x78, 0x56, 0x34, 0x12?

В обоих случаях инструкция add t1, t2, t3 сохраняется так же, как и 32-битное число 0x014B4820.

Однако в системе с прямым порядком байтов это число сохраняется как четыре байта 0x20, 0x48, 0x4B, 0x01; в системе с прямым порядком байтов это число сохраняется как четыре байта 0x01, 0x4B, 0x48, 0x20.

...