ISA et assembleur

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 ?

  1. AEnviron 4 KiB de part et d'autre de l'instruction de branchement
  2. BEnviron 1 MiB de part et d'autre de l'instruction de branchement
  3. CN'importe où dans toute la mémoire
Afficher la réponse et l'explication

Réponse : A. Environ 4 KiB de part et d'autre de l'instruction de branchement

Une valeur signée sur 13 bits représente -4096 à +4095, mais les instructions étant alignées sur 2 octets, le bit de poids faible est toujours 0, d'où une plage de -4096 à +4094 octets. Omettre ce bit double la portée pour une même taille de champ. Pour un branchement plus lointain, l'assembleur le réécrit en un branchement court à condition inversée qui saute par-dessus un jal à longue portée (environ ±1 MiB).

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 « jal ra, func » ?
  2. En quelle instruction la pseudo-instruction RISC-V « ret » est-elle réellement exécutée ?
  3. Quel est le principal objectif de la définition d'une convention d'appel (calling convention) ?
  4. Dans la convention d'appel standard de RISC-V, quels registres servent à transmettre les arguments entiers et la valeur de retour ?
  5. Dans la convention d'appel standard de RISC-V, lors de l'appel d'une fonction à 10 arguments entiers, où sont transmis les 9e et 10e arguments ?