ISA et assembleur

En RISC-V (RV32I), après exécution de « addi t0, zero, -1 », quelle valeur de 32 bits contient t0 ?

  1. A0xFFFFFFFF
  2. B0x00000FFF
  3. C0x80000001
Afficher la réponse et l'explication

Réponse : A. 0xFFFFFFFF

L'immédiat -1 s'écrit 0xFFF sur 12 bits. addi l'étend en signe à 32 bits, c'est-à-dire recopie le bit de poids fort 1 dans tous les bits supérieurs, ce qui donne 0xFFFFFFFF, soit -1 en complément à deux. Grâce à l'extension de signe, il suffit d'additionner un immédiat négatif pour soustraire. Si l'on remplissait les bits supérieurs de zéros, on obtiendrait 0x00000FFF = 4095, ce qui change le sens.

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

Autres questions sur ISA et assembleur

  1. 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 ?
  2. Quelle est la différence correcte entre RISC-V et x86 concernant le mécanisme de branchement conditionnel ?
  3. Quel est le fonctionnement correct de l'instruction RISC-V « slt t0, a0, a1 » ?
  4. Une fois l'exécution du code RISC-V ci-dessus terminée, quelle est la valeur de t0 ?
  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 ?