2016-04-27 3 views
0

Я написал программу в сборке (в формате t), и я хочу посмотреть, как выглядит машинный код. Это, как я получить исполняемый код:Как просмотреть машинный код?

as -g -o p1.o p1.s --32 -gstabs 
ld -o p1 p1.o -m elf_i386 

ответ

1

Предполагая, что вы находитесь на Linux или BSD платформы (на основе того, что вы используете as), вы можете попробовать objdump.

objdump -d <binary file> будет разбирать файл объекта, показывая вам машинный код шестнадцатеричных байтов слева и дизассемблированные совпадающие сборные мнемоники справа. Вот пример:

$ objdump -d factorial 

factorial:  file format elf64-x86-64 

Disassembly of section .init: 

00000000004003f0 : 
    4003f0: 48 83 ec 08    sub $0x8,%rsp 
    4003f4: e8 73 00 00 00   callq 40046c 
    .. 
Disassembly of section .plt: 

0000000000400408 : 
    400408: ff 35 e2 0b 20 00  pushq 0x200be2(%rip)  # 600ff0 
    40040e: ff 25 e4 0b 20 00  jmpq *0x200be4(%rip)  # 600ff8 
    400414: 0f 1f 40 00    nopl 0x0(%rax) 

objdump является частью пакета binutils на платформах Linux.

+0

Да, это он! Спасибо! – Temp