我想查看一些说明,所以我编写了操作码并将其反汇编。但是,当我使用“ objdump -d”进行检查时,我发现反汇编程序将指令拆分为单独的行,而且我不知道如何将这些单独的行收集为一行并执行应执行的功能。 代码如下:
#include<stdio.h>
int main()
{
asm(".byte 0x0f");
asm(".byte 0xae");
asm(".byte 0xee");
printf("test done \n");
return 0;
}
反汇编结果如下:
00000000004004b2 <main>:
4004b2: 55 push %rbp
4004b3: 48 89 e5 mov %rsp,%rbp
4004b6: 0f ae (bad)
4004b8: ee out %al,(%dx)
4004b9: bf 54 05 40 00 mov $0x400554,%edi
4004be: e8 ed fe ff ff callq 4003b0 <puts@plt>
4004c3: b8 00 00 00 00 mov $0x0,%eax
4004c8: 5d pop %rbp
4004c9: c3 retq
4004ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
妓女指令为0x0faeee。但是您可以看到0x0f和0xae共享一条线,而0xee被分隔到另一行。我不知道为什么会这样,以及如何将指令写成一行。 抱歉,这是一个愚蠢的问题。 非常感谢。