Qu'est-ce que Pseudo-instruction ?

Élément qui s'écrit comme une instruction en assembleur mais que l'assembleur remplace par une ou plusieurs instructions réelles. Par exemple nop, mv, li, j et ret en RISC-V.

Nom japonais: 疑似命令

« Pseudo-instruction » apparaît dans 4 questions d'entraînement réparties sur 1 thèmes, dont ISA et assembleur.

Domaine: ISA et assembleur

S'entraîner : questions sur Pseudo-instruction

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.

En quelle instruction la pseudo-instruction RISC-V « ret » est-elle réellement exécutée ?

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

Réponse : B. jalr x0, 0(ra)

jalr (jump and link register) saute à l'adresse obtenue en ajoutant un déplacement à la valeur d'un registre et place l'adresse de l'instruction suivante dans la destination. ret correspond à « jalr x0, 0(ra) » : elle saute à l'adresse contenue dans ra et jette le lien dans x0. jalr sert aussi aux sauts dont la destination n'est connue qu'à l'exécution, comme les appels par pointeur de fonction ou les fonctions virtuelles. Le « lw ra, … » qui restaure ra est une préparation effectuée avant ret.

« Pseudo-instruction » dans les explications

Questions mentionnant « Pseudo-instruction » (4)

  1. Par quelle instruction l'assembleur remplace-t-il réellement la pseudo-instruction RISC-V « nop » (ne rien faire) ?
  2. En quelle instruction la pseudo-instruction RISC-V « ret » est-elle réellement exécutée ?
  3. Une fois l'exécution du code RISC-V ci-dessus terminée, quelle est la valeur de t0 ?
  4. Quel est le fonctionnement correct de l'instruction RISC-V « jal ra, func » ?

Termes associés

Assembleur Convention d'appel Adresse de retour ABI (interface binaire d'application) Adressage relatif au PC Architecture load-store Cadre de pile (stack frame) Codes de condition Créneau de délai de branchement (delay slot) Extension de signe

Retour au glossaire