Domanda

So che gli eseguibili contengono istruzioni, ma quali sono esattamente queste istruzioni? Se ad esempio desidero chiamare la funzione API MessageBox , come appare l'istruzione?

Grazie.

È stato utile?

Soluzione

File eseguibili sono file binari compresi dal sistema operativo. L'eseguibile conterrà sezioni che contengono dati. Windows utilizza il formato PE . Il formato PE ha una sezione che contiene machine . Queste istruzioni sono solo numeri che sono ordinati in una sequenza ed è compreso dalla CPU.

Una chiamata di funzione a MessageBox (), sarebbe una sequenza di istruzioni che

1) hanno l'indirizzo della funzione che si trova in una DLL. Questo indirizzo viene inserito dal compilatore

2) istruzioni per " spingere " i parametri su uno stack

3) La chiamata di funzione effettiva

4) una sorta di pulizia (dipende dalla convenzione di chiamata).

È importante ricordare che i file EXE sono solo file appositamente formattati. Non ho uno smontaggio per te, ma puoi provare a compilare il codice, quindi aprire il tuo EXE in Visual Studio per vedere lo smontaggio.

Altri suggerimenti

Questa è una domanda gonfia se mai ne avessi visto uno. MA farò del mio meglio per dare una visione d'insieme. In un eseguibile binario ci sono queste cose chiamate "codici byte", i codici byte sono solo la ripetizione esadecimale di un'istruzione. Comunemente puoi " cercare " codici byte e convertirli in istruzioni di assemblaggio. Per esempio: L'istruzione:

mov ax, 2h

Ha la rappresentazione del codice byte:

B8 02 00

I codici byte vengono caricati nella RAM ed eseguiti dal processore in quanto questa è la sua "lingua". Nessuno sano di mente che conosco i programmi in codice byte, sarebbe solo complicato. Il montaggio è abbastanza divertente com'è. Ogni volta che compili un programma in un linguaggio di livello superiore deve prendere il tuo codice e trasformarlo in istruzioni di assemblaggio, immagini semplicemente come il tuo codice verrebbe modificato dopo averlo compilato. Non fraintendetemi, i compilatori sono fantastici, ma smontate un programma C ++ con IDA Pro Freeware e vedrete di cosa sto parlando. In poche parole, gli eseguibili, ci sono sicuramente libri scritti su questo argomento. Non sono un esperto di API di Windows, ma qualcun altro può mostrarti come sarebbero le istruzioni per chiamare l'API di Windows "MessageBox". Dovrebbero essere solo alcune righe dell'Assemblea.

Qualunque codice sia scritto (sia esso in C o qualche altra lingua) viene compilato da un compilatore in un tipo speciale di linguaggio chiamato assembly (beh, codice macchina, ma sono molto vicini). Assembly è un linguaggio di livello molto basso, che la CPU esegue in modo nativo. Normalmente, non programmate in assembly perché è così di basso livello (ad esempio, non volete occuparvi di tirare i bit avanti e indietro dalla memoria).

Non posso dire in particolare la funzione MessageBox , ma immagino che sia MOLTO di istruzioni. Pensaci: deve disegnare la scatola e modellarla in base al tuo stile di computer, e collegare un gestore uniforme in modo che qualcosa accada quando l'utente fa clic sul pulsante, dice a Windows (o qualunque sistema operativo) di aggiungerlo al barra delle applicazioni (o dock, ecc.) e così tante altre cose.

Dipende dalla lingua in cui stai lavorando. Ma per molti è semplice come ...

msgbox("Your message goes here")

o

alert("Your message goes here")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top