web-dev-qa-db-fra.com

Ce qui convertit le langage d'assemblage en code machine

Je suis un débutant en programmation et j’ai commencé avec le langage C++. Pour autant que je sache, le compilateur C++ convertit le langage C++ en langage Assembly (Ex: Visual Studio), mais j’ai essayé de rechercher ce qui convertissait le langage Assembly en code machine. être compris et exécuté par l'ordinateur, mais je n'ai pas trouvé de réponse.

La question est donc de savoir où et comment le langage d'assemblage est converti en code machine. est-ce par une sorte de compilateur intégré dans le système d'exploitation?

Merci d'avance.

6
Karim K.

Certains compilateurs (comme GNU) convertissent le code C/C++ en code Assembly. Un outil appelé "assembleur" convertit le code d'assemblage en code machine et un outil appelé "éditeur de liens" connecte plusieurs fichiers de code machine à un seul fichier exécutable (.EXE sous Windows). La plupart de ces compilateurs vous permettent d'écrire le code assembleur résultant dans un fichier afin que vous puissiez consulter le code assembleur ou le modifier.

L'assembleur et l'éditeur de liens font partie de la chaîne d'outils, ce qui signifie qu'ils sont généralement livrés avec le compilateur.

Cependant, certains compilateurs (comme Microsoft) convertissent directement le code C/C++ en langage machine, de sorte qu'aucun assembleur n'est nécessaire. Beaucoup de ces compilateurs ne sont pas capables de créer du code assembleur, vous ne pouvez donc pas l'écrire dans un fichier.

Au fait: il existe même des compilateurs (pas pour C/C++, mais pour d'autres langages de programmation) qui créent directement un fichier .EXE, aucun éditeur de liens n'est requis.

9
Martin Rosenau

Lorsque le compilateur convertit le code de haut niveau en langage Assembly, ce qui ressemble à ce qui suit:

  • MOV AX, [A]; # Déplacer A pour enregistrer Ax 
  • AJOUTER AX, [B]; # Ajouter B à A 
  • IMUL AXE; # Carré (A + B) 
  • MOV [C], AXE;

Un assembleur convertit ces instructions d'assemblage en code machine.

Les instructions d'assemblage ont une forme typique comme: opcode opérande [opérande]

Et si vous consultez le manuel du microprocesseur, vous apprendrez comment convertir chaque instruction en une forme binaire telle que 1001000. Certains bits sont destinés à l'opcode et d'autres à des opérandes.

http://www.mathemainzel.info/files/x86asmref.html

5
rsmagdum

Le langage d'assemblage est converti en code machine exécutable par un programme utilitaire appelé assembleur; le processus de conversion est appelé Assemblage ou assemblage du code.

En savoir plus ici

À votre santé !!

2
Sachin Thapa

Le code assembleur a un processus similaire pour la conversion en code objet/machine, car il est exécuté via un processus appelé assembler (analogue à un compilateur dans votre exemple).

0
David Frye