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 ?
- ALes 32 bits de poids fort conservent leur valeur précédente et seuls les 32 bits de poids faible sont réécrits
- BElle est toujours étendue par zéros à 64 bits
- 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.