Significado de @ zero_extendqisi2
Me preguntaba cuál era el significado real de la @ zero_extendqisi2salida del ensamblado en gcc y también el uso. No pude encontrar lo que significa qisi ni nada por el estilo.
Para el contexto, la línea es ldrb r3, [fp, #-9] @ zero_extendqisi2ARM en una Raspberry Pi Zero W, compilada con GCC. Por ejemplo, al recargar un unsigned charcon conversión a int, con optimización deshabilitada, con GCC9.2 sin opciones.https://godbolt.org/z/7xnfqh. El GCC más antiguo hasta el más antiguo en Godbolt (4.5) y presumiblemente antes imprime el mismo comentario.
Respuestas
Este es un nombre de instrucción RTL , incluido en la lista de Nombres estándar del manual interno de GCC a continuación zero_extendmn2. Aquí m,nestán los modos de máquina qi y si, que son respectivamente un byte y un entero de 32 bits. Entonces, esta es la indicación de GCC de que está generando una instrucción que toma un byte (aquí cargado de la memoria) y lo extiende a cero en un entero de 32 bits (aquí en el registro r3). Que es exactamente lo que hace la ldrbinstrucción ARM .
No sé qué significa el 2, pero aparentemente es parte de la convención de nomenclatura de GCC.
Como señala Peter, es un poco extraño que GCC incluya tal comentario en la asamblea sin él -fverbose-asm. De hecho, el comentario se codifica en el marco de la cadena de plantilla en el archivo de descripción de la máquina, arm.md. Podría haber sido una ayuda de depuración que algún desarrollador de GCC agregó y luego se olvidó de eliminar.
(Si envía esto para su tarea, cite esta publicación correctamente).