Significato di @ zero_extendqisi2

Nov 18 2020

Mi chiedevo quale fosse l'effettivo significato @ zero_extendqisi2dell'output dell'assembly di gcc e anche dell'utilizzo. Non sono riuscito a trovare cosa rappresenta qisi o qualcosa del genere.

Per il contesto, la linea è ldrb r3, [fp, #-9] @ zero_extendqisi2e questo è ARM su un Raspberry Pi Zero W, compilato con GCC. Ad esempio, quando si ricarica un unsigned charcon la conversione in int, con l'ottimizzazione disabilitata, con GCC9.2 senza opzioni.https://godbolt.org/z/7xnfqh. Il vecchio GCC fino al primo su Godbolt (4.5) e presumibilmente prima stampano lo stesso commento.

Risposte

1 NateEldredge Nov 19 2020 at 14:22

Questo è un nome di istruzione RTL , incluso nell'elenco dei nomi standard del manuale interno di GCC sotto zero_extendmn2. Ecco m,nle modalità macchina qi e si, che sono rispettivamente un byte e un numero intero a 32 bit. Quindi questa è l'indicazione di GCC che sta generando un'istruzione che prende un byte (qui caricato dalla memoria) e lo estende per zero in un intero a 32 bit (qui nel registro r3). Che è esattamente ciò che fa l' ldrbistruzione ARM .

Non so cosa significhi il 2, ma a quanto pare fa parte della convenzione di denominazione di GCC.

Come sottolinea Peter, è un po 'strano che GCC includa un simile commento nell'assemblea senza -fverbose-asm. In effetti il commento è codificato in come parte della stringa di modello nel file di descrizione della macchina, arm.md. Potrebbe essere stato un aiuto per il debug che qualche sviluppatore GCC ha aggiunto e poi si è dimenticato di togliere.

(Se lo invii per il tuo incarico, cita questo post correttamente.)