Feb*_*oho 4 x86 assembly opcode objdump disassembly
我有以下汇编代码:
global _start
section .text
_start:
add byte [eax], al
Run Code Online (Sandbox Code Playgroud)
编译和链接后,我尝试看到操作码:
$ objdump -d eax.o
eax.o: file format elf32-i386
Disassembly of section .text:
00000000 <_start>:
...
$
Run Code Online (Sandbox Code Playgroud)
为什么我得到一个空操作码?
这条指令:
add byte [eax], al
Run Code Online (Sandbox Code Playgroud)
编码为两字节ADD指令0x00 0x00:
Run Code Online (Sandbox Code Playgroud)Opcode Instruction Op/En 64-bit Mode Compat/Leg Mode Description 00 /r ADD r/m8, r8 MR Valid Valid Add r8 to r/m8.
默认情况下,OBJDUMP将打印重复零的块作为....要更改此行为,请尝试使用手册中-z所述的选项:
-z --disassemble-zeroes
通常,反汇编输出将跳过零块.该选项指示反汇编程序反汇编这些块,就像任何其他数据一样.
您的命令可能如下所示:
objdump -z -d eax.o
Run Code Online (Sandbox Code Playgroud)
输出应该类似于:
Disassembly of section .text:
00000000 <_start>:
0: 00 00 add %al,(%eax)
Run Code Online (Sandbox Code Playgroud)