ISA et assembleur

Dans les instructions RISC-V, les champs désignant les registres (rd, rs1, rs2) font chacun 5 bits. Quelle en est la raison ?

  1. AParce que la largeur des registres est de 5 bits
  2. BParce qu'une instruction peut utiliser jusqu'à 5 registres
  3. CParce qu'il y a 32 registres entiers, que 2 puissance 5 = 32 combinaisons permettent de désigner
Afficher la réponse et l'explication

Réponse : C. Parce qu'il y a 32 registres entiers, que 2 puissance 5 = 32 combinaisons permettent de désigner

Une instruction de format R se compose, des bits de poids fort aux bits de poids faible, de funct7 (7 bits), rs2 (5), rs1 (5), funct3 (3), rd (5) et opcode (7), soit 32 bits au total. Avec 32 registres, le numéro tient sur 5 bits. Passer à 64 registres exigerait 6 bits par champ, soit 3 bits de plus pour trois champs, réduisant les bits disponibles pour les immédiats et les types d'instructions. Le nombre de registres est lié au format des instructions.

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

Autres questions sur ISA et assembleur

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