código desmontado de executável x código máquina - diferença dos comandos [RESOLVIDO]

1. código desmontado de executável x código máquina - diferença dos comandos [RESOLVIDO]

rodrigo
rodrigosf2000

(usa Outra)

Enviado em 30/08/2008 - 15:30h

Qual a diferença dos códigos gerados pelos comandos:

objdump -d teste.ex1 > teste.d1

e

objdump -s teste.ex1 > teste.d1

E como faço pra encontrar o código máquina no arquivo gerado pelo primeiro comando "objdump -d teste.ex1 > teste.d1" ?

os códigos já foram deixados em um tópico (a seguir) criado por outro usuário.
http://www.vivaolinux.com.br/topico/C-C++/CODIGO-ABAIXO-LINGUEM-DE-MAQUINA


  


2. Re: código desmontado de executável x código máquina - diferença dos comandos [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 30/08/2008 - 19:51h

considerando a "desmontagem" apenas da seção .text (código),
observe as três colunas de dados geradas pelo objdump:

coluna 1:
posição de memória (relativa ao processo) que alimentará o registrador eip (instruction pointer, x86-32). pode ser modificada através da diretiva org

coluna 2: opcode da instrução. ou seja, esse é o código de máquina em formato hexadecimal. cada opcode é construído a partir da instrução correspondente, onde entra em jogo o mnemônico, os operandos, o modo de endereçamento, flags, etc, e é estritamente dependente da arquitetura.

coluna 3:
aqui a diferença entre o -d e -s.
-d: produz na saída o código assembly correspondente à instrução/opcode - logicamente sob o formato assembly específico para o processador em questão.
-s: produz na saída o código máquina "puro". cada opcode está ali representado por seu equivalente numérico no formato ascii.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts