Significado de @ zero_extendqisi2
Eu queria saber qual era o significado real de @ zero_extendqisi2na saída do assembly do gcc e também o uso. Não consegui encontrar o que qisi significa ou qualquer coisa nesse sentido.
Para o contexto, a linha é ldrb r3, [fp, #-9] @ zero_extendqisi2e este é ARM em um Raspberry Pi Zero W, compilado com GCC. Por exemplo, ao recarregar um unsigned charcom conversão para int, com otimização desabilitada, com GCC9.2 sem opções.https://godbolt.org/z/7xnfqh. O GCC mais antigo desde o início em Godbolt (4.5) e, presumivelmente, anteriormente imprime o mesmo comentário.
Respostas
Este é um nome de instrução RTL , incluído na lista de Nomes padrão do manual interno do GCC em zero_extendmn2. Aqui m,nestão os modos de máquina qi e si, que são respectivamente um byte e um inteiro de 32 bits. Portanto, esta é a indicação do GCC que está gerando uma instrução que pega um byte (aqui carregado da memória) e o estende para zero em um inteiro de 32 bits (aqui no registrador r3). Que é exatamente o que a ldrbinstrução ARM faz.
Não sei o que o 2 significa, mas aparentemente faz parte da convenção de nomenclatura do GCC.
Como Peter aponta, é um pouco estranho que o GCC inclua tal comentário na assembléia sem -fverbose-asm. Na verdade, o comentário é codificado como parte da string de modelo no arquivo de descrição da máquina arm.md,. Pode ter sido um auxiliar de depuração que algum desenvolvedor do GCC adicionou e depois esqueceu de remover.
(Se você enviar isso para sua tarefa, cite esta postagem corretamente.)