Pergunta

Eu sei que executáveis ??contêm instruções, mas o que são exatamente estas instruções? Se eu quiser chamar a função MessageBox API por exemplo, o que faz o olhar de instrução como?

Graças.

Foi útil?

Solução

executáveis ?? são arquivos binários que são entendidos pelo sistema operacional. O executável irá conter seções que têm dados neles. O Windows usa o PE formato . O formato PE tem uma seção que tem instruções máquina . Estas instruções são apenas números que são ordenados em uma sequência e é entendido pela CPU.

A chamada de função de MessageBox (), seria uma sequência de instruções que irão

1) tem o endereço da função que está em uma DLL. Este endereço é colocado em pelo compilador

2) as instruções para "empurrar" os parâmetros para uma pilha

3) A chamada de função real

4) algum tipo de limpeza (depende da convenção de chamada).

É importante lembrar que os arquivos EXE são apenas especialmente arquivos formatados. Eu não tenho um desmontagem para você, mas você pode tentar compilar seu código, em seguida, abra o seu EXE no visual studio para ver a desmontagem.

Outras dicas

Essa é uma pergunta inchado se eu já vi um. MAS, eu vou tentar o meu melhor para dar uma visão geral. Em um binário executável existem essas coisas chamadas "códigos de byte", códigos de byte são apenas o represtation hex de uma instrução. Comumente você pode "olhar para cima" códigos de byte e convertê-los em instruções de montagem. Por exemplo: A instrução:

mov ax, 2h

Tem a representação byte código:

B8 02 00

Os códigos de byte são carregados na memória RAM e executado pelo processer como é que a sua "linguagem". Ninguém em sã consciência que eu sei programas em código de byte, que seria apenas wayyyy para complicado. A montagem é ... bastante divertido como ele é. Sempre que você compilar um programa em uma linguagem de alto nível que tem que ter o seu código e transformá-lo em instruções de montagem, basta imaginar como mutilado seu código ficaria depois que compila-lo. Não me interpretem mal, compiladores são grandes, mas desmontar um programa C ++ com IDA Pro freeware e você verá o que estou falando. Isso é executáveis ??em poucas palavras, certamente há livros escritos sobre este assunto. Eu não sou um especialista API do Windows, mas alguém pode mostrar o que a instrução seria semelhante para chamar a API do Windows "MessageBox". Ele só deve ser algumas linhas de montagem.

código

O que quer que está escrito (seja em C ou alguma outra língua) é compilado por um compilador para um tipo especial de linguagem chamada de montagem (bem, código de máquina, mas eles estão muito perto). A montagem é uma linguagem muito baixo nível, que a CPU executa nativamente. Normalmente, você não programa em conjunto, porque é tão baixo nível (por exemplo, você não quer lidar com puxando pedaços e para trás a partir da memória).

Eu não posso dizer sobre a função MessageBox especificamente, mas eu acho que é um LOT de instruções. Pense nisso: ele tem que desenhar a caixa, eo estilo no entanto seus estilos de computador ele, e ligar um manipulador mesmo assim que algo acontece quando o usuário clica no botão, informa ao Windows (ou qualquer outro sistema operacional) para adicioná-lo à barra de tarefas (ou a estação, etc), e tantas outras coisas.

Depende do idioma que você está trabalhando. Mas, para muitos, é tão simples como ...

msgbox("Your message goes here")

ou

alert("Your message goes here")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top