Как понять перемещение псевдоинструкций mips кода операции? - PullRequest
0 голосов
/ 06 августа 2020

нашел объяснение псевдоинструкции

Move (move)

The move pseudo instruction moves the contents of one register into another register.

move $1, $2
translates to

add $1, $2, $0

Вот код.

25f0a003       move fp, sp

но добавить код операции выглядит так.

31-26 special   0x000000
25-21 rs       it should be  0x1d
20-16 rt       it should be  0x0
15-11 rd       it should be  0x1e
10-6  0        it should be  0x0
5-0   add      it should be  0x32

но код операции другой.

1 Ответ

0 голосов
/ 07 августа 2020

Я не уверен, откуда у вас объяснение, которое вы цитировали в своем вопросе, но ассемблер должен решить, как реализовать псевдо-инструкции.

Слово 25f0a003 не имеет смысла как Инструкция MIPS, но если мы поменяем байты на 03a0f025, то получим:

0000 0011 1010 0000 1111 0000 0010 0101

=>

000000 11101 00000 11110 00000 100101

=>

or $30, $29, $0

=>

or $fp, $sp, $zero

Итак, в этом случае используемый вами ассемблер перевел move $fp, $sp в or $fp, $sp, $zero.

...