Question

Je sais que les exécutables contiennent des instructions, mais en quoi consistent exactement ces instructions? Si je souhaite appeler la fonction MessageBox par exemple, à quoi ressemble l'instruction?

Merci.

Était-ce utile?

La solution

Les

fichiers exécutables sont des fichiers binaires compris par le système d'exploitation. L'exécutable contiendra des sections contenant des données. Windows utilise le format PE . Le format PE comporte une section qui contient des instructions machine . Ces instructions ne sont que des nombres ordonnés dans une séquence et compris par la CPU.

Un appel de fonction à MessageBox () serait une séquence d'instructions qui

1) ont l'adresse de la fonction qui se trouve dans une DLL. Cette adresse est mise par le compilateur

2) les instructions pour "pousser" les paramètres sur une pile

3) L'appel de fonction actuel

4) une sorte de nettoyage (dépend de la convention d'appel).

Il est important de se rappeler que les fichiers EXE sont simplement des fichiers spécialement formatés. Je n'ai pas de désassemblage pour vous, mais vous pouvez essayer de compiler votre code, puis ouvrez votre fichier EXE dans Visual Studio pour voir le désassemblage.

Autres conseils

C’est une question exagérée si j’en ai déjà vu une. MAIS, je ferai de mon mieux pour vous donner un aperçu. Dans un exécutable binaire, il y a ces choses appelées "codes d'octets", les codes d'octets ne sont que la represtation hexagonale d'une instruction. Vous pouvez généralement " rechercher " codes d'octet et les convertir en instructions d'assemblage. Par exemple: L'instruction:

mov ax, 2h

La représentation du code d'octet est-elle:

B8 02 00

Les codes d’octets sont chargés dans la RAM et exécutés par le processeur car il s’agit de leur "langage". Personne ne comprend que je connaisse des programmes en code octet, ce serait tout simplement trop compliqué. L’assemblée est ... assez amusante telle quelle. Chaque fois que vous compilez un programme dans un langage de niveau supérieur, il doit transformer votre code en instructions d’assemblage, vous imaginez à quel point votre code manipulé traiterait de sa compilation. Ne vous méprenez pas, les compilateurs sont excellents, mais désassemblez un programme C ++ avec IDA Pro Freeware et vous verrez de quoi je parle. En un mot, ce sont les exécutables, il y a certainement des livres écrits à ce sujet. Je ne suis pas un expert en API Windows, mais quelqu'un d'autre peut vous montrer à quoi ressemblerait l'instruction pour appeler l'API Windows "MessageBox". Ce ne devrait être que quelques lignes d’assemblage.

Quel que soit le code écrit (que ce soit en C ou dans un autre langage), il est compilé par un compilateur en un type spécial de langage appelé assemblage (enfin, le code machine, mais ils sont très proches). Assembly est un langage de très bas niveau, que le CPU exécute en natif. Normalement, vous ne programmez pas en assembleur car il est très bas (par exemple, vous ne voulez pas extraire des bits de la mémoire).

Je ne peux pas en dire plus sur la fonction MessageBox , mais je suppose qu'il s'agit d'un LOT d'instructions. Pensez-y: il doit dessiner la boîte et la styler comme vous le souhaitez, puis connectez un gestionnaire uniforme de sorte que quelque chose se produise lorsque l'utilisateur clique sur le bouton, demande à Windows (ou à tout système d'exploitation) de l'ajouter à la liste. barre des tâches (ou dock, etc.) et bien d’autres choses.

Cela dépend de la langue dans laquelle vous travaillez. Mais pour beaucoup, c'est aussi simple que ...

msgbox("Your message goes here")

ou

alert("Your message goes here")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top