Significado de @ zero_extendqisi2

Nov 18 2020

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

1 NateEldredge Nov 19 2020 at 14:22

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.)