so:
nop
nop
nop
nop
nop
nop
nop
jal x1,so
nop
j so
nop
00000000 <so>:
0: 00000013 nop
4: 00000013 nop
8: 00000013 nop
c: 00000013 nop
10: 00000013 nop
14: 00000013 nop
18: 00000013 nop
1c: fe5ff0ef jal x1,0 <so>
20: 00000013 nop
24: fddff06f j 0 <so>
28: 00000013 nop
fe5ff0ef
11111110010111111111000011101111
imm[20|10:1|11|19:12, rd, 110111
1 1111110010 1 11111111 000011101111
1 11111111 1 1111110010 0
0xFFFFFFE4
0x1C + 0xFFFFFFE4 = 0x00000000
инструменты GNU отлажены, поэтому
0xeff09fa9
, что на самом деле
0xa99ff0ef
10101001100111111111000011101111
imm[20|10:1|11|19:12, rd, 110111
1 0101001100 1 11111111 00001 1101111
1 11111111 1 0101001100
111111111 1010 1001 1000
0xFFFFFA98 + 0x000085e8 = 0x8080
Да, все выглядит хорошо, так что это возвращает нас к первому комментарию, который IPэтот?Похоже, что он не проверен и находится в стадии разработки?
Или код, который его окружает, таков, что он не выполняет команду, которая, как вы думаете, есть.
Это не две сжатые инструкции, два младших бита нижнего полуслова - 2b11, что означает, что это 32-битная инструкция, если код выключен с помощью полуслова, 0xfe5f все еще будет 32-битной инструкцией, ноЯ думаю, что это не определено.