ISA et assembleur

Lors de l'exécution d'une instruction lw en RV64I (64 bits), comment la valeur de 32 bits lue est-elle placée dans le registre de 64 bits ?

  1. ALes 32 bits de poids fort conservent leur valeur précédente et seuls les 32 bits de poids faible sont réécrits
  2. BElle est toujours étendue par zéros à 64 bits
  3. CElle est étendue en signe à 64 bits (lwu sert à l'extension par zéros)
Afficher la réponse et l'explication

Réponse : C. Elle est étendue en signe à 64 bits (lwu sert à l'extension par zéros)

En RV64I, lw étend en signe la valeur de 32 bits dans le registre de 64 bits, tandis que lwu, qui lit en non signé, remplit les bits de poids fort de 0. Conserver la valeur précédente des bits de poids fort créerait une dépendance envers l'ancienne valeur, gênant l'exécution dans le désordre ; RISC-V ne le fait donc pas. Pour les opérations sur 32 bits, il existe des instructions suffixées par « w », comme addw, qui calculent le résultat sur 32 bits puis l'étendent en signe.

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

Autres questions sur ISA et assembleur

  1. Quelle description de l'ABI (interface binaire d'application) est correcte ?
  2. En RISC-V, quelle instruction réalise généralement un appel par pointeur de fonction en C, « (*fp)(x) » ?
  3. Quelle affirmation concernant deux CPU adoptant la même architecture de jeu d'instructions (ISA) est correcte ?
  4. Quelle caractéristique d'une architecture load-store comme RISC-V est correcte ?
  5. Quelle propriété du registre x0 (zero) de RISC-V est correcte ?