Qu'est-ce que Assembleur ?

Logiciel qui convertit un programme écrit en langage d'assemblage en suites de bits d'instructions machine. Il traduit les étiquettes en adresses et remplace les pseudo-instructions par de vraies instructions.

Nom japonais: アセンブラ

« Assembleur » apparaît dans 7 questions d'entraînement réparties sur 2 thèmes, dont ISA et assembleur, Compilateurs.

Domaine: ISA et assembleur

S'entraîner : questions sur Assembleur

Quelle relation entre langage assembleur et langage machine est correcte ?

  1. ALes instructions assembleur sont converties par l'assembleur en instructions machine de façon quasi biunivoque
  2. BL'assembleur est commun à tous les types de CPU et s'exécute tel quel sur n'importe quel CPU
  3. CLe langage machine est un interpréteur qui exécute l'assembleur ligne par ligne
Afficher la réponse et l'explication

Réponse : A. Les instructions assembleur sont converties par l'assembleur en instructions machine de façon quasi biunivoque

Le langage assembleur écrit les instructions machine avec des symboles lisibles (mnémoniques) comme « add a0, a0, a1 », que l'assembleur convertit en séquences de bits. La correspondance avec les instructions étant quasi biunivoque, une ISA différente implique un assembleur différent. Toutefois, les pseudo-instructions comme « li » ou « mv » sont remplacées par l'assembleur par une ou plusieurs instructions réelles. La traduction des étiquettes en adresses relève aussi de l'assembleur.

Par quelle instruction l'assembleur remplace-t-il réellement la pseudo-instruction RISC-V « nop » (ne rien faire) ?

  1. Aaddi x0, x0, 0
  2. Bjal ra, 0
  3. Clw x0, 0(sp)
Afficher la réponse et l'explication

Réponse : A. addi x0, x0, 0

RISC-V n'a pas d'instruction dédiée « ne rien faire » ; nop est représenté par « addi x0, x0, 0 ». L'écriture dans x0 étant ignorée, ni les registres ni la mémoire ne changent. De même, « mv rd, rs » correspond à « addi rd, rs, 0 », « j label » à « jal x0, label » et « ret » à « jalr x0, 0(ra) ». Limiter le nombre de types d'instructions grâce à x0 est un principe de conception de RISC-V.

« Assembleur » dans les explications

Questions mentionnant « Assembleur » (7)

  1. Quelle relation entre langage assembleur et langage machine est correcte ?
  2. Par quelle instruction l'assembleur remplace-t-il réellement la pseudo-instruction RISC-V « nop » (ne rien faire) ?
  3. En RISC-V, quelle est la méthode courante pour charger dans un registre une constante de 32 bits qui ne tient pas dans un immédiat de 12 bits (par exemple 0x12345678) ?
  4. Pour construire la constante 0x12345FFF en RISC-V avec les deux instructions lui et addi, quelle combinaison est correcte ?
  5. Les instructions de branchement conditionnel RISC-V (format B) représentent la distance jusqu'à la cible par un nombre d'octets signé sur 13 bits, dont le bit de poids faible, toujours 0, n'est pas stocké dans l'instruction. Quelle est approximativement la portée directe d'une instruction de branchement ?
  6. Quel est le principal objectif de la définition d'une convention d'appel (calling convention) ?
  7. Quel est l'enchaînement courant permettant d'obtenir un exécutable à partir d'un programme C ?

Termes associés

Architecture du jeu d'instructions (ISA) Éditeur de liens (linker) Pseudo-instruction Convention d'appel ABI (interface binaire d'application) Fichier objet Adressage relatif au PC Adresse de retour Architecture load-store Cadre de pile (stack frame)

Retour au glossaire