ISA et assembleur

Pour construire la constante 0x12345FFF en RISC-V avec les deux instructions lui et addi, quelle combinaison est correcte ?

  1. Alui t0, 0x12346 suivi de addi t0, t0, -1
  2. Blui t0, 0x12345 suivi de addi t0, t0, 0xFFF
  3. Clui t0, 0x12345 suivi de addi t0, t0, -1
Afficher la réponse et l'explication

Réponse : A. lui t0, 0x12346 suivi de addi t0, t0, -1

L'immédiat de addi étant étendu en signe, lorsque les 12 bits de poids faible valent 0xFFF (bit de poids fort à 1), il est additionné comme -1. On fixe donc avec lui une partie haute supérieure d'une unité, 0x12346, et l'on ajoute -1 à 0x12346000 pour obtenir 0x12345FFF. Cette correction, qui consiste à ajouter 1 à la partie haute lorsque le bit 11 des 12 bits de poids faible vaut 1, est effectuée automatiquement par l'assembleur ou l'éditeur de liens.

S'entraîner sur ce thème Retour au thème

Autres questions sur ISA et assembleur

  1. Quel est le fonctionnement correct de l'instruction RISC-V auipc (add upper immediate to PC) ?
  2. En RISC-V (RV32I), après exécution de « addi t0, zero, -1 », quelle valeur de 32 bits contient t0 ?
  3. Un octet en mémoire contient 0x80. Quelle combinaison correspond aux valeurs obtenues en chargeant cet octet dans un registre de 32 bits avec les instructions RISC-V lb et lbu ?
  4. Quelle est la différence correcte entre RISC-V et x86 concernant le mécanisme de branchement conditionnel ?
  5. Quel est le fonctionnement correct de l'instruction RISC-V « slt t0, a0, a1 » ?