ISA et assembleur

L'immédiat de l'instruction RISC-V addi est un entier signé de 12 bits. Quelle plage cet immédiat peut-il représenter ?

  1. A0 à 4095
  2. B-2048 à 2047
  3. C-4096 à 4095
Afficher la réponse et l'explication

Réponse : B. -2048 à 2047

En complément à deux sur 12 bits, on peut représenter de -2 puissance 11 = -2048 à 2 puissance 11 - 1 = 2047. L'immédiat est étendu en signe à 32 bits (64 bits en RV64) avant le calcul, ce qui permet d'additionner directement des nombres négatifs. Pour une constante hors de cette plage, on combine plusieurs instructions, par exemple en fixant les 20 bits de poids fort avec lui puis en ajoutant les 12 bits de poids faible avec addi.

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

Autres questions sur ISA et assembleur

  1. 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) ?
  2. Pour construire la constante 0x12345FFF en RISC-V avec les deux instructions lui et addi, quelle combinaison est correcte ?
  3. Quel est le fonctionnement correct de l'instruction RISC-V auipc (add upper immediate to PC) ?
  4. En RISC-V (RV32I), après exécution de « addi t0, zero, -1 », quelle valeur de 32 bits contient t0 ?
  5. 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 ?