我在组件任何方法从机器码获取助记符?
.text
.globl _start
_start:
movl $1, %eax
movl $1, %ebx
int $0x80
我已组装它有一个简单的程序的程序。我有倾倒它的内容如下
[email protected]:~# objdump -d out
out: file format elf32-i386
Disassembly of section .text:
08048054 <_start>:
8048054: b8 01 00 00 00 mov $0x1,%eax
8048059: bb 01 00 00 00 mov $0x1,%ebx
804805e: cd 80 int $0x80
现在的问题是,我可以回去只给出下面的机器代码的助记符\xb8\x01\x00\x00\x00\xbb\x01\x00\x00\x00\xcd\x80
x86是可变的指令长度,所以一般来说你不能接受任何旧的字节和解码它们。助记符就是这样,机器码就是指令,助记符只是某人的解释,反汇编程序通常会这样做,但您可以使用处理器供应商提供的文档自己完成此操作。 –
现在,这是非常非常恼人的从文档逐行翻译。我最终发现了他们对NASM的解散程序集合ndisasm,但是我正在使用GAS汇编程序,无论如何回到GAS有点助记符 – vikkyhacks
@dwelch,当然这是可能的 - 你只需要假设字节*是*指令。 –