[FUG-BR] [Off-Toppic] GCC
Ricardo Nabinger Sanchez
rnsanchez em gmail.com
Quarta Janeiro 2 10:01:34 BRST 2008
On Wed, 2 Jan 2008 00:23:21 -0200
"Joao Rocha Braga Filho" <goffredo em gmail.com> wrote:
> Alguém já olhou a geração de código de um gcc atual?
Sim.
>
> Com a opção -O3, se uma função for "static" e só é chamada uma
> vez, ele some com ela introduzindo o código no local de chamada.
static em funções diz ao compilador que ela é local àquela unidade de
compilação (.o), e portanto o símbolo gerado não será visível. Sendo
assim, não tem porque o compilador criar uma entrada para ele na .symtab
se ninguém vai usar. Em outras palavras, isto está OK. :)
>
> E tem mais. Uma printf para só imprimir uma string é trocada por
> uma puts, e com passagem de parâmetros por registradores, e não
> por pilha. Ele faz isto em muitas outras coisas. Eu já tinha ficado
> meio assombrado com o que ele fazia a alguns anos atrás, mas o
> pessoal ainda deu mais um capricho agora.
Esse e mais um monte de truques.
>
> Eu descobri isto parando o compilador a etapa do assembler, com
> a opção -S. Estou usando a versão AMD64.
Tem uma outra onde tu pode ver a saída de cada estágio, inclusive os de
otimização. Gera um montão de arquivos, alguns que não tem como
entender sem conhecer a estrutura interna do GCC, mas interessantes
mesmo assim.
--
Ricardo Nabinger Sanchez rnsanchez em gmail.com
Powered by FreeBSD http://rnsanchez.wait4.org
"Left to themselves, things tend to go from bad to worse."
Mais detalhes sobre a lista de discussão freebsd