Как мне преобразовать шестнадцатеричные значения в 32-битные инструкции MIPS? - PullRequest
2 голосов
/ 03 октября 2011

Мне нужно преобразовать эти шестнадцатеричные значения в инструкции MIPS:

Сначала я преобразовал их в двоичный код, но не уверен, если это необходимо.

Hex: 0x0000 0000 - Binary: 0000 0000 0000 0000 0000 0000 0000 0000
Hex: 0xAFBF 0000 - Binary: 1010 1111 1011 1111 0000 0000 0000 0000
Hex: 0x3424 001E - Binary: 0011 0100 0010 0100 0000 0000 0000 0000

Пожалуйста, объясните процесс, чтобы яможет сделать это в будущем.

У меня есть справочный лист MIPS

Ответы [ 2 ]

3 голосов
/ 24 июня 2014

Кодировка инструкций MIPS очень проста, и это объяснялось в каждом документе MIPS, включая лист, который вы прочитали выше.Просто получите поле кода операции и определите, является ли это инструкция типа R, I или J, чтобы правильно получить остальные параметры.Если код операции равен 0, то это всегда тип R, в этом случае ищите поле функции

Для первой инструкции 0x00000000:

6-bit opcodes = 000000: R type
6-bit funct: 000000 ==> sll
rs, rd, rt = 0
==> sll $0, $0, $0 or nop

Вторая инструкция 0xAFBF0000:

opcode: 101011 = 0x2B => sw

Последний 0x3424001E:

opcode: 001101 = 0x0D => ori

Если вы используете какой-нибудь дизассемблер, такой как ODA , вы увидите такой результат

.data:0x00000000    00000000    nop   
.data:0x00000004    afbf0000    sw ra,0(sp)   
.data:0x00000008    3424001e    ori a0,at,0x1e
0 голосов
/ 03 октября 2011

Вы ищете разборку MIPS? Вот один из них:

http://acade.au7.de/disasmips.htm

...