Signification de @ zero_extendqisi2
Je me demandais quelle était la signification réelle de la @ zero_extendqisi2sortie de l'assembly gcc et aussi son utilisation. Je n'ai pas pu trouver ce que signifie qisi ou quoi que ce soit de ce genre.
Pour le contexte, la ligne est ldrb r3, [fp, #-9] @ zero_extendqisi2et voici ARM sur un Raspberry Pi Zero W, compilé avec GCC. Par exemple, lors du rechargement d'un unsigned charavec conversion en int, avec l'optimisation désactivée, avec GCC9.2 sans options.https://godbolt.org/z/7xnfqh. Les anciens GCC jusqu'au plus ancien sur Godbolt (4.5) et vraisemblablement plus tôt impriment le même commentaire.
Réponses
Il s'agit d'un nom d'instruction RTL , inclus dans la liste des noms standard du manuel interne de GCC sous zero_extendmn2. Voici m,nles modes machine qi et si, qui sont respectivement un octet et un entier 32 bits. C'est donc l'indication de GCC qu'il génère une instruction qui prend un octet (ici chargé de la mémoire) et l'étend à zéro en un entier de 32 bits (ici dans le registre r3). C'est exactement ce que fait l' ldrbinstruction ARM .
Je ne sais pas ce que signifie le 2, mais cela fait apparemment partie de la convention de dénomination de GCC.
Comme Peter le souligne, il est un peu étrange que GCC inclue un tel commentaire dans l'assemblée sans -fverbose-asm. En effet , le commentaire est codé dans le cadre de la chaîne de modèle dans le fichier de description de la machine, arm.md. Cela aurait pu être une aide au débogage que certains développeurs de GCC ont ajoutée et ont ensuite oublié de retirer.
(Si vous soumettez ceci pour votre mission, veuillez citer ce message correctement.)